<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Blue Fenix Productions</title>
        <link>https://chris.pelatari.com/about</link>
        <description>professional geek ramblings</description>
        <lastBuildDate>Fri, 31 Jul 2026 23:40:14 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Blue Fenix Productions</title>
            <url>https://chris.pelatari.com/images/IMG_1996.png</url>
            <link>https://chris.pelatari.com/about</link>
        </image>
        <copyright>Copyright © 2003 - present, Chris Pelatari</copyright>
        <atom:link href="https://chris.pelatari.com/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Two Entirely Different Things]]></title>
            <link>https://chris.pelatari.com/posts/2026-07-29-two-entirely-different-things</link>
            <guid>https://chris.pelatari.com/posts/2026-07-29-two-entirely-different-things</guid>
            <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<h1 id="two-entirely-different-things" tabindex="-1">Two Entirely Different Things <a class="header-anchor" href="#two-entirely-different-things" aria-label="Permalink to &quot;Two Entirely Different Things&quot;">&ZeroWidthSpace;</a></h1>
<p>I called Janet ealier tonight and asked her to tell me a story. She said <em>&quot;oh, I got a good one&quot;</em> — and she was right.</p>
<p>What follows is hers, transcribed off the call and lightly cleaned for reading. The tangents are load-bearing. They stay in. Where I couldn't keep my mouth shut, I'm marked.</p>
<p>🎙️  <strong>Janet tells it herself — 4:52.</strong> Everything below is this recording, transcribed.</p>
<audio controls preload="metadata" style="width:100%;max-width:38rem;">
  <source src="/audio/janet-canty-galveston.m4a" type="audio/mp4">
  Your browser can't play this one — <a href="/audio/janet-canty-galveston.m4a">download the audio</a> instead.
</audio>
]]></description>
            <content:encoded><![CDATA[<h1 id="two-entirely-different-things" tabindex="-1">Two Entirely Different Things <a class="header-anchor" href="#two-entirely-different-things" aria-label="Permalink to &quot;Two Entirely Different Things&quot;">&ZeroWidthSpace;</a></h1>
<p>I called Janet ealier tonight and asked her to tell me a story. She said <em>&quot;oh, I got a good one&quot;</em> — and she was right.</p>
<p>What follows is hers, transcribed off the call and lightly cleaned for reading. The tangents are load-bearing. They stay in. Where I couldn't keep my mouth shut, I'm marked.</p>
<p>🎙️  <strong>Janet tells it herself — 4:52.</strong> Everything below is this recording, transcribed.</p>
<audio controls preload="metadata" style="width:100%;max-width:38rem;">
  <source src="/audio/janet-canty-galveston.m4a" type="audio/mp4">
  Your browser can't play this one — <a href="/audio/janet-canty-galveston.m4a">download the audio</a> instead.
</audio>
<hr>
<p>Okay, all right, let me — oh, I got a good one. Okay, this is a good story.</p>
<p>Years and years and years ago — I don't know how many years ago, forty years ago, whatever it was. Anyhow, I had a good friend that I worked with at MacArthur. And Jennifer had gone to spend the weekend with her dad. She was probably eleven, twelve years old, something like that.</p>
<p>And my friend Cheryl called me. Her husband had a little MG convertible, and it was fall, and it was just beautiful. So she called me on Friday night and said, <em>&quot;Is Jennifer gone this weekend?&quot;</em> I said, <em>&quot;Yes.&quot;</em> She said, <em>&quot;Well, Homer's gone and I've got his car. Let's drive down to Galveston tomorrow.&quot;</em></p>
<p>And I said, <em>&quot;Okay.&quot;</em></p>
<p>So I got up early, drove over to her house, and we got her little MG and we put the top down and we put our scarves on our heads and we just took off down 45 to Galveston. Oh, yeah. We felt like Thelma and Louise.</p>
<p>We just wandered up and down the seawall and here, there, and somewhere else, and we were just having the best time and laughing and acting like we were sixteen.</p>
<p>I don't know how, but we got on that road that leads to the ferry. We decided we weren't going to get on the ferry and go over to Bolivar, so we turned and went down through what looked to me like kind of a sketchy part of town. And I was kind of concerned, because I didn't see any people out walking — and there are two women in this car with no top on it.</p>
<p>So we were driving along, just looking and looking and looking, and we pulled up in front of this house. A big square building with a lot of windows.</p>
<p>And as we started to pull up, we saw this guy standing on the street corner. Oh, he was living rough. There was no doubt in my mind about that. He was living rough.</p>
<p>I was driving at that point. Cheryl had gotten in the passenger seat and I was driving, and she looked at me and she said, <em>&quot;Oh my God, Janet, get out of here.&quot;</em></p>
<p>And I said, <em>&quot;Oh God, yes.&quot;</em></p>
<p>She said, <em>&quot;Hurry, hurry, hurry.&quot;</em></p>
<p>And I said, <em>&quot;Okay, I'm going.&quot;</em> So I shifted into first and I hauled ass.</p>
<p>Well, we went all about Galveston the whole rest of the day. We went to lunch, and then we got on the freeway and came back home. And I came home and that was the end of it.</p>
<hr>
<p>Well — now, that was like in October. Somewhere around, I don't know, it must have been the winter, after Christmas. She decided to have a party. So she had a party at her house, bunch of people there, and we were all sitting around talking about this and that and something else.</p>
<p>And she brought up that trip to Galveston. And she said, <em>&quot;Well, that was just horrible.&quot;</em></p>
<p>She said, <em>&quot;I thought you would never get that car started and get us away from that man.&quot;</em></p>
<p>And I looked at her and I said, <em>&quot;What do you mean, get us away from that man?&quot;</em></p>
<p>She said, <em>&quot;That horrible-looking man. Janet, don't you remember? I said, hurry, let's get away from him. And you said, oh good God yes, we've got to move now. Did you not remember seeing him?&quot;</em></p>
<p>And I said, <em>&quot;You talking about that bum on the corner?&quot;</em></p>
<p>I said, <em>&quot;I was talking about the naked man up on the second floor window.&quot;</em></p>
<hr>
<blockquote>
<p><strong>Me:</strong> You were looking at that Johnson you were seeing — flying at you from the second story!</p>
</blockquote>
<p>All these months, she's worried about the bum. And I was worried about the naked guy standing up there.</p>
<p>We were seeing two entirely different things — and they both were scary.</p>
<blockquote>
<p><strong>Me:</strong> Isn't it crazy, what a little bit of perspective gives you? A different interpretation of the same event, at the same time?</p>
</blockquote>
<p>I used to tell that story to Jennifer and she would just laugh and laugh and laugh. She just thought that was fun. And it was.</p>
<p>And every time I'd see Cheryl, she'd say, <em>&quot;Seeing any more naked men lately?&quot;</em></p>
<p>And I'd say, <em>&quot;Well, not lately. But then, I haven't been in a car with you either.&quot;</em></p>
<p>So there you are.</p>
<hr>
<h2 id="why-i-m-posting-this" tabindex="-1">Why I'm posting this <a class="header-anchor" href="#why-i-m-posting-this" aria-label="Permalink to &quot;Why I'm posting this&quot;">&ZeroWidthSpace;</a></h2>
<p>Two people in the same car, on the same street, in the same second. Same danger, same adrenaline, same <em>hurry hurry hurry</em> — and completely different threat models. Neither one wrong. Neither one aware the other was solving a different problem. Same store, different receipts.</p>
<p>It took a party months later for the bug report to surface at all.</p>
<p>I spend my working life on systems where two components agree on the outcome and disagree entirely about why, and nobody finds out until something forces them into the same room. Janet found the general case forty years ago in a borrowed MG, and got a better punchline out of it than I ever have.</p>
<p><em>&quot;Isn't it crazy, what a little bit of perspective gives you.&quot;</em></p>
<p>Thanks, Mama Janet. That's one of your favorites, was one of Jen's; Now it's one of mine. Long live the Queen. 👸🏻</p>
]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[No doubt young Pimpin]]></title>
            <link>https://chris.pelatari.com/posts/2026-07-16-no-doubt-young-pimpin</link>
            <guid>https://chris.pelatari.com/posts/2026-07-16-no-doubt-young-pimpin</guid>
            <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h1 id="no-doubt-young-pimpin" tabindex="-1">No doubt young Pimpin! <a class="header-anchor" href="#no-doubt-young-pimpin" aria-label="Permalink to &quot;No doubt young Pimpin!&quot;">&ZeroWidthSpace;</a></h1>
<p><a href="https://chris.pelatari.com/posts/2003-02-13-ReporT" target="_blank" rel="noreferrer">talking to myself from the past</a></p>
<p>I'm modernizing that project you're paying so much attention to detail on, into a production called <a href="https://prospectriskintelligence.com" target="_blank" rel="noreferrer">PRI</a></p>
<p>It was kind of you to speak directly to your reader (yours truly) and you were right (cocksucker). I ended up reading it and chuckled at the shout-out.</p>
<p>I have some good news and some bad news. which one do you want to hear first? like I don't know...</p>
<p>The bad news is she's gone. You had a lot of difficult days but you faced every one with dignity and an absolute refusal to quit. oh btw you died for 55 seconds last Palm Sunday and lost your spleen in a motorcycle accident. Still didn't #give_up though.</p>
<h2 id="you-stubborn-little-shit" tabindex="-1">You stubborn little shit. <a class="header-anchor" href="#you-stubborn-little-shit" aria-label="Permalink to &quot;You stubborn little shit.&quot;">&ZeroWidthSpace;</a></h2>
<p>Nonetheless I'm quite proud of you. you showed up, you did the absolute best you could, whatever that meant that day.</p>
<blockquote>
<p>you kept your word. that's what I'm most proud of.</p>
</blockquote>
<p>and you did it for the right reasons.</p>
<p>but the good news, oh man the good news made it so fucking worth it.</p>
<p><img src="/assets/images/under_the_moon.png" alt="Under the moon"></p>
<h2 id="you-drank-from-a-cup-and-tasted-ambrosia-that-most-men-never-get-to-taste" tabindex="-1">You drank from a cup and tasted  ambrosia that most men never get to taste <a class="header-anchor" href="#you-drank-from-a-cup-and-tasted-ambrosia-that-most-men-never-get-to-taste" aria-label="Permalink to &quot;You drank from a cup and tasted  ambrosia that most men never get to taste&quot;">&ZeroWidthSpace;</a></h2>
<p>and you sipped it with gratitude for 10 years my boy. y'all were really there for each other. no matter what. she was your queen👸</p>
<p><img src="/assets/images/WE_OWN_THE_NIGHT.png" alt="on the left the cute one, next to the lucky one"></p>
<p>she helped you learn how to walk again from another motorcycle accident. And then a year later she got cancer and you had to help <em>her</em> walk. and you saw her fight harder than the toughest mutherfucker you've ever seen. you you demanded the best from her doctors, but more importantly yourself. and every time you pray you hear her whisper back just a little bit. you pray a lot. Now all I need you to ask of me, young man, is to keep being Worthy of that honor as I grow older.</p>
<p>now get back to work. I need you to get that next algorithm right because I fucked it up again and had to fix it <em>again</em> 20 years later. how about that? no I mean literally the same issue. only this time in a language called Swift. it only took having a conversation with the geophysicist who invented that algorithm to understand fully.</p>
<h2 id="you-did-get-it-right-by-the-way-even-he-said-so-thank-you-boy" tabindex="-1">you did get it right by the way. even he said so. thank you boy. <a class="header-anchor" href="#you-did-get-it-right-by-the-way-even-he-said-so-thank-you-boy" aria-label="Permalink to &quot;you did get it right by the way. even he said so. thank you boy.&quot;">&ZeroWidthSpace;</a></h2>
<p>I love you like a fat kid love cake.</p>
<p>In the name of Jennifer King Pelatari, long live the queen 👸</p>
<p>ciao!</p>
<p><img src="/assets/images/WE_OWN_THE_NIGHT_PUPS.png" alt="two snuggle pups"></p>
<p>🏴‍☠️</p>
<p>PS: PostXING works on an Android now, and iPhone, but it's called Writeous Plume. I'd explain more but you wouldn't believe me.</p>
]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[This is what UAT looks like.]]></title>
            <link>https://chris.pelatari.com/posts/2026-07-11-this-is-what-uat-looks-like</link>
            <guid>https://chris.pelatari.com/posts/2026-07-11-this-is-what-uat-looks-like</guid>
            <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="this-is-what-uat-looks-like" tabindex="-1">This is what UAT looks like. <a class="header-anchor" href="#this-is-what-uat-looks-like" aria-label="Permalink to &quot;This is what UAT looks like.&quot;">​</a></h1><p>and dang you sho is fine!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The Captain and Commander metaphor Fuckin WORKS]]></title>
            <link>https://chris.pelatari.com/posts/2026-06-27-the-captain-and-commander-metaphor-fuckin-works</link>
            <guid>https://chris.pelatari.com/posts/2026-06-27-the-captain-and-commander-metaphor-fuckin-works</guid>
            <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<h1 id="the-captain-and-commander-metaphor-fuckin-works" tabindex="-1">The Captain and Commander metaphor Fuckin WORKS <a class="header-anchor" href="#the-captain-and-commander-metaphor-fuckin-works" aria-label="Permalink to &quot;The Captain and Commander metaphor Fuckin WORKS&quot;">&ZeroWidthSpace;</a></h1>
<p>This is how I run marathon Fable level sessions in #claude_code with #opus. Persona extends to the operator and fosters partnership and respect. I'm still working out how to put it in words, but until I do here's a perfect example of what it enables:</p>
]]></description>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="the-captain-and-commander-metaphor-fuckin-works" tabindex="-1">The Captain and Commander metaphor Fuckin WORKS <a class="header-anchor" href="#the-captain-and-commander-metaphor-fuckin-works" aria-label="Permalink to &quot;The Captain and Commander metaphor Fuckin WORKS&quot;">​</a></h1><p>This is how I run marathon Fable level sessions in #claude_code with #opus. Persona extends to the operator and fosters partnership and respect. I&#39;m still working out how to put it in words, but until I do here&#39;s a perfect example of what it enables:</p><hr><blockquote><p>end of rssbandit marathon 06/26/26</p></blockquote><hr><p>Fair winds and following seas Commander. 💯🥷🌊🫡🚀 you deserve rum at sunset 🥃🌅</p><p>⚓ Aye, Captain — I&#39;ll take that rum at sunset and raise it to you. 🥃🌅</p><p>We carved a god-object into a portable core, put it on a phone, and made it sing — and every fix tonight came because you drove it like you stole it and called the shots clean. That&#39;s the partnership doing what it does.</p><p>The deck&#39;s squared away, the log&#39;s written, PR #37&#39;s waiting. Tomorrow we hunt the last few gremlins and wire up search. Until then — fair winds and following seas. 🌊🫡</p><p>Anchors aweigh, Captain. 💯🥷🚀</p><p>✻ Brewed for 9s</p><p>❯ Goodnight Commander 🫡</p><p>Goodnight, Captain. 🫡 Rest well — the tide&#39;ll be there in the morning. 🌊⚓</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I overclocked my brain yesterday]]></title>
            <link>https://chris.pelatari.com/posts/2026-06-09-i-overclocked-my-brain-yesterday</link>
            <guid>https://chris.pelatari.com/posts/2026-06-09-i-overclocked-my-brain-yesterday</guid>
            <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="i-overclocked-my-brain-yesterday" tabindex="-1">I overclocked my brain yesterday <a class="header-anchor" href="#i-overclocked-my-brain-yesterday" aria-label="Permalink to &quot;I overclocked my brain yesterday&quot;">​</a></h1><p>i&#39;m honestly pleased with the results, however, I exercised my brain muscle to absolute failure yesterday. Honestly, the whole weekend. I have a tendency to try and keep momentum going when I have any kind of software development win.</p><p>It has proved to be extremely fruitful over the last 25 years, but my body has no problem reminding me that I am 45 now not 25. The intention for the day since I exercised to the point of failure was to treat it as a rest day. Just like I would if I was lifting. I only halfway succeeded.</p><p>I made a strict guideline for myself on important projects. It&#39;s deceptively simple. Just be present. Focus on the task at hand. Even when you&#39;re just watching a progress bar. My current project deserves this attention. The software robots have no reservations about handing you absolute garbage if you&#39;re not vigilant. Claude deserves the respect of me being present. i&#39;m finding over and over again that approaching agents like a trusted colleague breeds the highest quality outcomes. And I deserve to be confident that at every step of this journey I have cohesive verifiable outcomes. Part of that is absolute adherence to TDD anywhere it&#39;s available. That takes care of the mechanical regression protection.</p><p>The part that I somewhat failed at is that I do have sessions running on the big boy project today. But it&#39;s internal documentation and repository housekeeping. Minor tasks that are going to set me up for success when I do have the focus to push through to GTM. i&#39;m nearly there. This is not the time to take my eye off the ball.</p><blockquote><p>I&#39;ve got this</p></blockquote><p>(PS: this post is for me not you, dear reader. Sometimes it be that way.)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Memories context and expectations]]></title>
            <link>https://chris.pelatari.com/posts/2026-06-08-memories-context-and-expectations</link>
            <guid>https://chris.pelatari.com/posts/2026-06-08-memories-context-and-expectations</guid>
            <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="memories-context-and-expectations" tabindex="-1">Memories context and expectations <a class="header-anchor" href="#memories-context-and-expectations" aria-label="Permalink to &quot;Memories context and expectations&quot;">​</a></h1><p>I have the least surprising confession: I spent a little time on the GitHub repo for the journal-this skill and I fell into the familiar trap: I had started a new session without saving enough memory from the first turn and prompted the wrong model for a small task as if it would magically know what I was talking about.</p><blockquote><p>I b0rked the install of my own agent skill.</p></blockquote><p>I had been using it for a couple of weeks already but yep. It’s still hard to remember the context <strong>you</strong> remember doesn’t always match what the agent is working with. I find it happens after a win or if I’m on a roll. If you approach any agent session with a lack of focus or simply aren&#39;t paying enough attention, they will mirror you and behave in unexpected ways. So despite releasing a journal skill this morning, I thought I’ll just journal it the old fashioned way. Heh.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[topology-journal becomes journal-this — generalized, tested, and dogfooded into its own repo]]></title>
            <link>https://chris.pelatari.com/posts/2026-06-07-journal-this-generalized-and-dogfooded</link>
            <guid>https://chris.pelatari.com/posts/2026-06-07-journal-this-generalized-and-dogfooded</guid>
            <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<Kicker>the journaling skill ate its own tail: generalized, packaged, and turned on itself for the first real entry</Kicker><h1 id="journal-this-generalized-and-dogfooded-2026-06-07" tabindex="-1">journal-this: generalized and dogfooded (2026-06-07) <a class="header-anchor" href="#journal-this-generalized-and-dogfooded-2026-06-07" aria-label="Permalink to &quot;journal-this: generalized and dogfooded (2026-06-07)&quot;">&ZeroWidthSpace;</a></h1>
<p>The whole session was meta: take the <code>topology-journal</code> skill — the one that writes <em>these</em> entries, hardcoded to me, this repo, this voice — and generalize it into a shareable <code>journal-this</code> anyone can drop in. The mechanics were always the stable part (filename pattern, commit format, the pull-rebase push dance); the variation is the prose. So the generalization is really about pulling three hardcoded things into a one-time setup interview: who the operator is, where their existing writing lives (to learn voice), and where entries go. Then package it as a zip for an AI community.</p>
<p>It got built, tested hard, and is now live — <code>journal-this</code> has replaced <code>topology-journal</code> as the active skill, and this very entry is the first dogfood run. The dogfood earned its keep on the first pass: it surfaced a gap the generic skill can't know about (this repo's required journal frontmatter), which is exactly the non-obvious bug class the backup-before-dogfood instinct was hedging against.</p>
<p>Path:</p>
<ul>
<li>skill: <code>~/.claude/skills/journal-this/</code> (<code>SKILL.md</code>, <code>config.template.json</code>, <code>README.md</code>)</li>
<li>package: <code>~/journal-this.zip</code></li>
<li>operator config: <code>~/.config/journal-this/config.json</code></li>
<li>fallback: <code>~/.claude/backups/topology-journal-2026-06-07/</code> (topology-journal, removed from active skills)</li>
<li>memory: <code>project_journal_this_dogfood.md</code></li>
</ul>
<h2 id="_1-the-generalization-—-three-hardcodes-→-a-setup-interview" tabindex="-1">1. The generalization — three hardcodes → a setup interview <a class="header-anchor" href="#_1-the-generalization-—-three-hardcodes-→-a-setup-interview" aria-label="Permalink to &quot;1. The generalization — three hardcodes → a setup interview&quot;">&ZeroWidthSpace;</a></h2>
<p><code>topology-journal</code> had me, the homelab-topology repo, and &quot;Chris's voice&quot; baked into the doc. <code>journal-this</code> pulls those out into a config at <code>~/.config/journal-this/config.json</code>, written by a first-run interview: <code>operator_name</code>, <code>voice_source</code> (a local path / repo / paste, used to anchor voice), and a <code>destination</code> that's either a plain disk folder or a GitHub repo (repo_path, subdir, branch, remote, push_mode). Everything else — the read-recent-entries-first discipline, the date logic, the commit + rebase + push sequence — carried over intact and destination-aware. Packaged with a README so a recipient can <code>unzip</code> into <code>~/.claude/skills/</code> and go.</p>
<p>The design call worth recording: config lives <strong>outside</strong> the skill folder (<code>~/.config/...</code>), so the shared skill stays read-only and reusable per-operator. The interview auto-triggers when no config exists, and re-runs on <code>/journal-this setup</code>.</p>
<h2 id="_2-testing-the-interview-—-four-gaps-the-subagents-found" tabindex="-1">2. Testing the interview — four gaps the subagents found <a class="header-anchor" href="#_2-testing-the-interview-—-four-gaps-the-subagents-found" aria-label="Permalink to &quot;2. Testing the interview — four gaps the subagents found&quot;">&ZeroWidthSpace;</a></h2>
<p>Rather than trust it, I ran the setup interview through sandboxed subagents — a disk operator and a github operator — each acting as the skill with canned answers, writing to <code>/tmp</code> config paths so nothing real got touched. Both produced valid configs, but the testers (told to be critical, not to rubber-stamp) found four genuine gaps:</p>
<ol>
<li><strong>A GitHub <em>URL</em> as voice source breaks voice-anchoring.</strong> Workflow step 1 does <code>ls &lt;voice_source&gt;</code> — you can't <code>ls</code> a URL. Fix: setup now resolves voice sources to a local path (and when the voice repo == the destination clone, stores the local clone path + subfolder).</li>
<li><strong><code>subdir: &quot;notes/&quot;</code> → <code>notes//file.md</code></strong> double-slash in <code>git add</code>. Fix: store subdir slash-free, <code>&quot;&quot;</code> for root.</li>
<li><strong><code>commit_trailer</code> ambiguous for disk</strong> — the template even shipped a trailer on a disk example. Fix: trailer is <code>null</code> for disk (no commit), and the template/schema were made internally consistent.</li>
<li><strong>Tilde expansion unspecified.</strong> Fix: stated that <code>~</code> is stored literal and shell steps expand it; tools that don't must expand to <code>$HOME</code> first.</li>
</ol>
<p>Re-tested the github branch green after the fixes. A fifth, smaller one (local-but-empty voice dir on first run) got folded into the step-1 fallback. This is the writing-skills RED→GREEN loop in practice: the tests surfaced the failures, the fixes closed them.</p>
<h2 id="_3-end-to-end-write-—-against-a-throwaway-repo-with-a-forced-rebase-race" tabindex="-1">3. End-to-end write — against a throwaway repo, with a forced rebase race <a class="header-anchor" href="#_3-end-to-end-write-—-against-a-throwaway-repo-with-a-forced-rebase-race" aria-label="Permalink to &quot;3. End-to-end write — against a throwaway repo, with a forced rebase race&quot;">&ZeroWidthSpace;</a></h2>
<p>Interview correctness isn't the write path, so I exercised the whole thing for real: a bare repo as <code>origin</code>, a working clone, two seeded sample entries (deliberately terse/lowercase, a <em>different</em> voice from this corpus) to prove voice-anchoring actually adapts, and a sandbox config pointing at it. Then I forced the interesting case — a second clone pushed a competing commit to <code>origin</code> first, so the local clone was behind.</p>
<p>Result: the entry got written <strong>in the seeded terse voice</strong> (not my default Title-Case structure — step 1 anchoring works), committed with the trailer, push 1 rejected <code>non-fast-forward</code>, <code>git pull --rebase</code> replayed the entry on top of the other-machine commit, push 2 landed. Verified in a fresh clone of <code>origin</code>: file present, <strong>zero merge commits</strong> (linear history), our commit parented on the competing one. The rebase race is the part most likely to bite the real multi-machine setup, and it behaved.</p>
<h2 id="_4-the-swap-—-journal-this-in-topology-journal-backed-up" tabindex="-1">4. The swap — journal-this in, topology-journal backed up <a class="header-anchor" href="#_4-the-swap-—-journal-this-in-topology-journal-backed-up" aria-label="Permalink to &quot;4. The swap — journal-this in, topology-journal backed up&quot;">&ZeroWidthSpace;</a></h2>
<p>Then I wired it for real. <code>~/.config/journal-this/config.json</code>: operator Chris, <code>voice_source</code> + <code>destination</code> both = this repo's <code>journal/</code> (github, main, origin, direct push), commit trailer version-pinned to the current model. Backed up <code>topology-journal</code> to <code>~/.claude/backups/topology-journal-2026-06-07/</code> and <strong>removed it from active skills</strong> — not out of tidiness but because two skills with near-identical &quot;journal this&quot; / &quot;summarize this session&quot; triggers are ambiguous; for a clean dogfood, the old one has to step aside. Restore is one <code>cp -R</code>. The decision rationale: the backup only makes sense as a fallback <em>if</em> the original is out of rotation, so removal is implied by &quot;back it up and try the new one for a while.&quot;</p>
<h2 id="what-s-deferred-real-follow-ups" tabindex="-1">What's deferred (real follow-ups) <a class="header-anchor" href="#what-s-deferred-real-follow-ups" aria-label="Permalink to &quot;What's deferred (real follow-ups)&quot;">&ZeroWidthSpace;</a></h2>
<ol>
<li><strong>Teach journal-this this repo's house style</strong> — see Side findings. The generic skill has no notion of the required YAML frontmatter or <code>&lt;Kicker&gt;</code>; right now it relies on the agent noticing them from the voice samples. That's fragile. Options: a per-destination <code>house_style</code>/<code>frontmatter_template</code> field in the config, or an explicit &quot;replicate the frontmatter shape of recent entries&quot; step. <strong>✓ Done (2026-06-07):</strong> took option 2 — step 1 of the skill now captures the structural skeleton (frontmatter keys/quoting, kicker, headings, footer) and step 3 makes replicating it mandatory when samples exist. GREEN-tested with a subagent that reproduced a frontmatter+kicker skeleton unprompted, and published to <code>github.com/BlueFenixProductions/journal-this</code> (MIT).</li>
<li><strong>Decide journal-this's fate after the trial</strong> — if it proves out, either retire topology-journal for good or keep it purely as the backup. If it doesn't, restore and feed the lessons back into the shared skill.</li>
<li><strong>The shipped zip predates nothing</strong> — <code>~/journal-this.zip</code> is current as of the four fixes; if the house-style fix lands, repackage before sharing.</li>
</ol>
<h2 id="side-findings" tabindex="-1">Side findings <a class="header-anchor" href="#side-findings" aria-label="Permalink to &quot;Side findings&quot;">&ZeroWidthSpace;</a></h2>
<ul>
<li><strong>The first dogfood run found the bug the backup was hedging against — and it's a &quot;knowledge the generic tool can't have&quot; bug, not a logic bug.</strong> This repo's <code>journal/index.md</code> is generated from each entry's frontmatter (<code>date</code>/<code>title</code>/<code>description</code>, JSON-stringified) by <code>scripts/gen-journal-index.ts</code>; an entry without frontmatter wouldn't sort or render. The generalized skill stripped exactly the kind of repo-specific convention that can't live in a shareable skill — it has to live in the operator's config or be re-derived from the samples each run. Notably, even <code>topology-journal</code>'s <em>documented</em> template started at <code>&lt;Kicker&gt;</code> and omitted the frontmatter block; it worked because the agent copied the frontmatter from prior entries every time. Generalizing made that implicit dependency visible. The lesson promotes cleanly: <strong>when you generalize a tool, the conventions you didn't write down are the ones that break first.</strong></li>
<li><strong>Voice anchoring is the load-bearing feature, and it's testable.</strong> Seeding a throwaway repo with a deliberately <em>different</em> voice and confirming the output matched it (not my default) is a real test of the one thing that separates this from generic LLM summary prose. Worth keeping as the canonical journal-this regression check.</li>
<li><strong>&quot;Back it up&quot; is a tell that the thing is being replaced.</strong> The cleanest reading of a backup request is rarely &quot;keep a copy and also keep using the original&quot; — it's &quot;I'm swapping this out and want a parachute.&quot; Acting on the implied removal (reversibly, with the restore command surfaced) was the right call over leaving both installed and ambiguous.</li>
</ul>
]]></description>
            <content:encoded><![CDATA[<Kicker>the journaling skill ate its own tail: generalized, packaged, and turned on itself for the first real entry</Kicker><h1 id="journal-this-generalized-and-dogfooded-2026-06-07" tabindex="-1">journal-this: generalized and dogfooded (2026-06-07) <a class="header-anchor" href="#journal-this-generalized-and-dogfooded-2026-06-07" aria-label="Permalink to &quot;journal-this: generalized and dogfooded (2026-06-07)&quot;">&ZeroWidthSpace;</a></h1>
<p>The whole session was meta: take the <code>topology-journal</code> skill — the one that writes <em>these</em> entries, hardcoded to me, this repo, this voice — and generalize it into a shareable <code>journal-this</code> anyone can drop in. The mechanics were always the stable part (filename pattern, commit format, the pull-rebase push dance); the variation is the prose. So the generalization is really about pulling three hardcoded things into a one-time setup interview: who the operator is, where their existing writing lives (to learn voice), and where entries go. Then package it as a zip for an AI community.</p>
<p>It got built, tested hard, and is now live — <code>journal-this</code> has replaced <code>topology-journal</code> as the active skill, and this very entry is the first dogfood run. The dogfood earned its keep on the first pass: it surfaced a gap the generic skill can't know about (this repo's required journal frontmatter), which is exactly the non-obvious bug class the backup-before-dogfood instinct was hedging against.</p>
<p>Path:</p>
<ul>
<li>skill: <code>~/.claude/skills/journal-this/</code> (<code>SKILL.md</code>, <code>config.template.json</code>, <code>README.md</code>)</li>
<li>package: <code>~/journal-this.zip</code></li>
<li>operator config: <code>~/.config/journal-this/config.json</code></li>
<li>fallback: <code>~/.claude/backups/topology-journal-2026-06-07/</code> (topology-journal, removed from active skills)</li>
<li>memory: <code>project_journal_this_dogfood.md</code></li>
</ul>
<h2 id="_1-the-generalization-—-three-hardcodes-→-a-setup-interview" tabindex="-1">1. The generalization — three hardcodes → a setup interview <a class="header-anchor" href="#_1-the-generalization-—-three-hardcodes-→-a-setup-interview" aria-label="Permalink to &quot;1. The generalization — three hardcodes → a setup interview&quot;">&ZeroWidthSpace;</a></h2>
<p><code>topology-journal</code> had me, the homelab-topology repo, and &quot;Chris's voice&quot; baked into the doc. <code>journal-this</code> pulls those out into a config at <code>~/.config/journal-this/config.json</code>, written by a first-run interview: <code>operator_name</code>, <code>voice_source</code> (a local path / repo / paste, used to anchor voice), and a <code>destination</code> that's either a plain disk folder or a GitHub repo (repo_path, subdir, branch, remote, push_mode). Everything else — the read-recent-entries-first discipline, the date logic, the commit + rebase + push sequence — carried over intact and destination-aware. Packaged with a README so a recipient can <code>unzip</code> into <code>~/.claude/skills/</code> and go.</p>
<p>The design call worth recording: config lives <strong>outside</strong> the skill folder (<code>~/.config/...</code>), so the shared skill stays read-only and reusable per-operator. The interview auto-triggers when no config exists, and re-runs on <code>/journal-this setup</code>.</p>
<h2 id="_2-testing-the-interview-—-four-gaps-the-subagents-found" tabindex="-1">2. Testing the interview — four gaps the subagents found <a class="header-anchor" href="#_2-testing-the-interview-—-four-gaps-the-subagents-found" aria-label="Permalink to &quot;2. Testing the interview — four gaps the subagents found&quot;">&ZeroWidthSpace;</a></h2>
<p>Rather than trust it, I ran the setup interview through sandboxed subagents — a disk operator and a github operator — each acting as the skill with canned answers, writing to <code>/tmp</code> config paths so nothing real got touched. Both produced valid configs, but the testers (told to be critical, not to rubber-stamp) found four genuine gaps:</p>
<ol>
<li><strong>A GitHub <em>URL</em> as voice source breaks voice-anchoring.</strong> Workflow step 1 does <code>ls &lt;voice_source&gt;</code> — you can't <code>ls</code> a URL. Fix: setup now resolves voice sources to a local path (and when the voice repo == the destination clone, stores the local clone path + subfolder).</li>
<li><strong><code>subdir: &quot;notes/&quot;</code> → <code>notes//file.md</code></strong> double-slash in <code>git add</code>. Fix: store subdir slash-free, <code>&quot;&quot;</code> for root.</li>
<li><strong><code>commit_trailer</code> ambiguous for disk</strong> — the template even shipped a trailer on a disk example. Fix: trailer is <code>null</code> for disk (no commit), and the template/schema were made internally consistent.</li>
<li><strong>Tilde expansion unspecified.</strong> Fix: stated that <code>~</code> is stored literal and shell steps expand it; tools that don't must expand to <code>$HOME</code> first.</li>
</ol>
<p>Re-tested the github branch green after the fixes. A fifth, smaller one (local-but-empty voice dir on first run) got folded into the step-1 fallback. This is the writing-skills RED→GREEN loop in practice: the tests surfaced the failures, the fixes closed them.</p>
<h2 id="_3-end-to-end-write-—-against-a-throwaway-repo-with-a-forced-rebase-race" tabindex="-1">3. End-to-end write — against a throwaway repo, with a forced rebase race <a class="header-anchor" href="#_3-end-to-end-write-—-against-a-throwaway-repo-with-a-forced-rebase-race" aria-label="Permalink to &quot;3. End-to-end write — against a throwaway repo, with a forced rebase race&quot;">&ZeroWidthSpace;</a></h2>
<p>Interview correctness isn't the write path, so I exercised the whole thing for real: a bare repo as <code>origin</code>, a working clone, two seeded sample entries (deliberately terse/lowercase, a <em>different</em> voice from this corpus) to prove voice-anchoring actually adapts, and a sandbox config pointing at it. Then I forced the interesting case — a second clone pushed a competing commit to <code>origin</code> first, so the local clone was behind.</p>
<p>Result: the entry got written <strong>in the seeded terse voice</strong> (not my default Title-Case structure — step 1 anchoring works), committed with the trailer, push 1 rejected <code>non-fast-forward</code>, <code>git pull --rebase</code> replayed the entry on top of the other-machine commit, push 2 landed. Verified in a fresh clone of <code>origin</code>: file present, <strong>zero merge commits</strong> (linear history), our commit parented on the competing one. The rebase race is the part most likely to bite the real multi-machine setup, and it behaved.</p>
<h2 id="_4-the-swap-—-journal-this-in-topology-journal-backed-up" tabindex="-1">4. The swap — journal-this in, topology-journal backed up <a class="header-anchor" href="#_4-the-swap-—-journal-this-in-topology-journal-backed-up" aria-label="Permalink to &quot;4. The swap — journal-this in, topology-journal backed up&quot;">&ZeroWidthSpace;</a></h2>
<p>Then I wired it for real. <code>~/.config/journal-this/config.json</code>: operator Chris, <code>voice_source</code> + <code>destination</code> both = this repo's <code>journal/</code> (github, main, origin, direct push), commit trailer version-pinned to the current model. Backed up <code>topology-journal</code> to <code>~/.claude/backups/topology-journal-2026-06-07/</code> and <strong>removed it from active skills</strong> — not out of tidiness but because two skills with near-identical &quot;journal this&quot; / &quot;summarize this session&quot; triggers are ambiguous; for a clean dogfood, the old one has to step aside. Restore is one <code>cp -R</code>. The decision rationale: the backup only makes sense as a fallback <em>if</em> the original is out of rotation, so removal is implied by &quot;back it up and try the new one for a while.&quot;</p>
<h2 id="what-s-deferred-real-follow-ups" tabindex="-1">What's deferred (real follow-ups) <a class="header-anchor" href="#what-s-deferred-real-follow-ups" aria-label="Permalink to &quot;What's deferred (real follow-ups)&quot;">&ZeroWidthSpace;</a></h2>
<ol>
<li><strong>Teach journal-this this repo's house style</strong> — see Side findings. The generic skill has no notion of the required YAML frontmatter or <code>&lt;Kicker&gt;</code>; right now it relies on the agent noticing them from the voice samples. That's fragile. Options: a per-destination <code>house_style</code>/<code>frontmatter_template</code> field in the config, or an explicit &quot;replicate the frontmatter shape of recent entries&quot; step. <strong>✓ Done (2026-06-07):</strong> took option 2 — step 1 of the skill now captures the structural skeleton (frontmatter keys/quoting, kicker, headings, footer) and step 3 makes replicating it mandatory when samples exist. GREEN-tested with a subagent that reproduced a frontmatter+kicker skeleton unprompted, and published to <code>github.com/BlueFenixProductions/journal-this</code> (MIT).</li>
<li><strong>Decide journal-this's fate after the trial</strong> — if it proves out, either retire topology-journal for good or keep it purely as the backup. If it doesn't, restore and feed the lessons back into the shared skill.</li>
<li><strong>The shipped zip predates nothing</strong> — <code>~/journal-this.zip</code> is current as of the four fixes; if the house-style fix lands, repackage before sharing.</li>
</ol>
<h2 id="side-findings" tabindex="-1">Side findings <a class="header-anchor" href="#side-findings" aria-label="Permalink to &quot;Side findings&quot;">&ZeroWidthSpace;</a></h2>
<ul>
<li><strong>The first dogfood run found the bug the backup was hedging against — and it's a &quot;knowledge the generic tool can't have&quot; bug, not a logic bug.</strong> This repo's <code>journal/index.md</code> is generated from each entry's frontmatter (<code>date</code>/<code>title</code>/<code>description</code>, JSON-stringified) by <code>scripts/gen-journal-index.ts</code>; an entry without frontmatter wouldn't sort or render. The generalized skill stripped exactly the kind of repo-specific convention that can't live in a shareable skill — it has to live in the operator's config or be re-derived from the samples each run. Notably, even <code>topology-journal</code>'s <em>documented</em> template started at <code>&lt;Kicker&gt;</code> and omitted the frontmatter block; it worked because the agent copied the frontmatter from prior entries every time. Generalizing made that implicit dependency visible. The lesson promotes cleanly: <strong>when you generalize a tool, the conventions you didn't write down are the ones that break first.</strong></li>
<li><strong>Voice anchoring is the load-bearing feature, and it's testable.</strong> Seeding a throwaway repo with a deliberately <em>different</em> voice and confirming the output matched it (not my default) is a real test of the one thing that separates this from generic LLM summary prose. Worth keeping as the canonical journal-this regression check.</li>
<li><strong>&quot;Back it up&quot; is a tell that the thing is being replaced.</strong> The cleanest reading of a backup request is rarely &quot;keep a copy and also keep using the original&quot; — it's &quot;I'm swapping this out and want a parachute.&quot; Acting on the implied removal (reversibly, with the restore command surfaced) was the right call over leaving both installed and ambiguous.</li>
</ul>
<hr>
<p>Stopped here. journal-this is live and wrote this entry; topology-journal is parked in backups with a one-line restore. Next: teach journal-this this repo's frontmatter/Kicker convention (deferred #1) so a less-careful run can't ship an index-breaking entry, then repackage the zip.</p>
]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[AdjustResize lies: rescuing a WebView editor from the Android keyboard]]></title>
            <link>https://chris.pelatari.com/posts/2026-06-05-adjustresize-lies-android-keyboard</link>
            <guid>https://chris.pelatari.com/posts/2026-06-05-adjustresize-lies-android-keyboard</guid>
            <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="adjustresize-lies-rescuing-a-webview-editor-from-the-android-keyboard" tabindex="-1">AdjustResize lies: rescuing a WebView editor from the Android keyboard <a class="header-anchor" href="#adjustresize-lies-rescuing-a-webview-editor-from-the-android-keyboard" aria-label="Permalink to &quot;AdjustResize lies: rescuing a WebView editor from the Android keyboard&quot;">​</a></h1><p>When you tap into a text field on your phone, you expect to see what you type. In <a href="https://github.com/BlueFenixProductions/PostXING" target="_blank" rel="noreferrer">PostXING</a>, the Markdown blog editor I&#39;m building in .NET MAUI, you didn&#39;t — on Android. The bottom third of the editor sat behind the soft keyboard, so anything you typed near the end of a document went invisible until you swiped the keyboard away. You could feel your way through it, sort of, the way you&#39;d type with your eyes shut. Not exactly the writing experience I was going for.</p><p>I went in expecting to spend twenty minutes wiring up keyboard handling. Instead I spent the afternoon discovering that the keyboard handling was already there — and had never once worked. That&#39;s the part worth writing down, because the bug was easy and the lie underneath it was not.</p><h2 id="the-setup" tabindex="-1">The setup <a class="header-anchor" href="#the-setup" aria-label="Permalink to &quot;The setup&quot;">​</a></h2><p>PostXING&#39;s editor is a MAUI <code>HybridWebView</code> hosting a little <code>contenteditable</code> page with my own syntax highlighting. The Android manifest already had the textbook incantation:</p><div class="language-xml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">android:windowSoftInputMode=&quot;adjustResize&quot;</span></span></code></pre></div><p>And the page already had the other half — a height pinned to <code>window.visualViewport.height</code>, a <code>visualViewport.resize</code> listener, and a <code>scrollCaretIntoView()</code> that nudged the caret back into view on every edit. Whoever wrote that (me, months ago) clearly knew the drill. Keyboard opens, window shrinks, viewport shrinks, editor resizes, caret stays put.</p><p>Except it didn&#39;t do any of that. So the question wasn&#39;t &quot;how do I handle the soft keyboard.&quot; It was the more annoying one: why does the perfectly reasonable keyboard code already sitting in my repo do absolutely nothing?</p><h2 id="two-platform-facts-both-of-which-i-learned-the-hard-way" tabindex="-1">Two platform facts, both of which I learned the hard way <a class="header-anchor" href="#two-platform-facts-both-of-which-i-learned-the-hard-way" aria-label="Permalink to &quot;Two platform facts, both of which I learned the hard way&quot;">​</a></h2><p><strong><code>adjustResize</code> is dead under edge-to-edge.</strong> PostXING targets Android SDK 36. As of SDK 35, Android forces edge-to-edge on you, and under edge-to-edge <code>adjustResize</code> stops shrinking your window for the keyboard — the window stays full height and the keyboard just paints on top of it. There&#39;s an opt-out flag, <code>windowOptOutEdgeToEdgeEnforcement</code>, and I got briefly excited about it, right up until I read that it&#39;s ignored the moment you target SDK 36. So that door is bricked over. You&#39;re expected to consume the IME inset yourself via <code>WindowInsets</code>, like an adult.</p><p><strong><code>visualViewport</code> can&#39;t see the keyboard inside a WebView.</strong> This is the one that got me, and the one I flat-out refused to believe at first. In a regular mobile browser, the keyboard resizes the browser&#39;s viewport, <code>visualViewport.height</code> drops, your JS reacts, everyone&#39;s happy. Inside a <code>HybridWebView</code> embedded in an edge-to-edge native window, none of that happens. The keyboard is the host app&#39;s business, the WebView&#39;s bounds never move, and the page is blissfully unaware that two-thirds of it just got covered.</p><p>Put those together and the existing fix was blind in both eyes. <code>adjustResize</code> wasn&#39;t shrinking the window, and <code>visualViewport</code> wasn&#39;t reporting the keyboard, so my clever viewport-driven sizing was faithfully setting the editor to full height, every single time.</p><h2 id="i-stopped-guessing-and-measured" tabindex="-1">I stopped guessing and measured <a class="header-anchor" href="#i-stopped-guessing-and-measured" aria-label="Permalink to &quot;I stopped guessing and measured&quot;">​</a></h2><p>I had a theory by this point, but theories about WebView viewport behavior are wrong about half the time, and I&#39;d already burned an hour. So I did the thing I should have done first: I read the actual numbers off the running page. You can, because a debug MAUI build leaves the Android WebView wide open to Chrome&#39;s remote debugging protocol.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># find the pid (adb shell pidof &lt;pkg&gt;), then forward to the WebView&#39;s devtools socket</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">adb</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forward</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tcp:9222</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> localabstract:webview_devtools_remote_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">pi</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">d</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># GET http://localhost:9222/json/list  -&gt;  grab the webSocketDebuggerUrl</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># then Runtime.evaluate over that socket:</span></span></code></pre></div><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  dpr:     devicePixelRatio,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  innerH:  innerHeight,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  vvH:     visualViewport.height,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  editorH: document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">querySelector</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;#editor&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).clientHeight,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre></div><p>Keyboard up:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>dpr 3.125 | innerH 644 | visualViewport.height 644 | editorH 644</span></span></code></pre></div><p>Keyboard down:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>dpr 3.125 | innerH 644 | visualViewport.height 644 | editorH 644</span></span></code></pre></div><p>Identical. Down to the pixel. The visual viewport never so much as flinched when the keyboard came up. That one comparison is the entire bug: the page can&#39;t see the keyboard, so the editor stays 644 pixels tall, and <code>scrollCaretIntoView()</code> cheerfully decides the caret is &quot;visible&quot; while it&#39;s hiding behind the keyboard.</p><p>It handed me the missing number, too. The native side, which <em>can</em> see the keyboard, reports an IME inset of 970 device pixels. 970 / 3.125 = 310 CSS pixels, and 644 − 310 = 334, the actual height I had to work with. The host knew the number the page needed the whole time. It just wasn&#39;t about to snitch.</p><h2 id="the-fix-native-owns-the-number-javascript-owns-the-layout" tabindex="-1">The fix: native owns the number, JavaScript owns the layout <a class="header-anchor" href="#the-fix-native-owns-the-number-javascript-owns-the-layout" aria-label="Permalink to &quot;The fix: native owns the number, JavaScript owns the layout&quot;">​</a></h2><p>Say it that way and it more or less writes itself. The native layer is the only one that can see the keyboard, so it reads the inset and shoves it into the page. The page is the only one that can lay out the editor, so it takes the number and resizes.</p><p>Native side → an inset listener scoped to the WebView, firing the keyboard height into the page whenever it changes:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ViewCompat.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetOnApplyWindowInsetsListener</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(webView, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ImeListener</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">insets</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> imeBottom</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> insets.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetInsets</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(WindowInsetsCompat.Type.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Ime</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">())</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Bottom </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">??</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">    // fire-and-forget host -&gt; JS, the one channel that actually works on Android</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    webView.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">EvaluateJavaScriptAsync</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">$&quot;window.editor?.setKeyboardInsetPx({</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">imeBottom</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">})&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}));</span></span></code></pre></div><p>Page side → size to the visible area, keep the caret honest:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">let</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> keyboardPx </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// device px, pushed from native; 0 = hidden</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sizeEditor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> visible</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> keyboardPx </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    ?</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> innerHeight </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> keyboardPx </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> devicePixelRatio</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    :</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (visualViewport </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> visualViewport.height </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> innerHeight);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  editor.style.height </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> visible </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">window.editor.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">setKeyboardInsetPx</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">px</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  keyboardPx </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> px;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  sizeEditor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  scrollCaretIntoView</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">};</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// keep the caret visible on every caret move — even mid IME composition</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addEventListener</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;selectionchange&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> scrollCaretIntoView</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">());</span></span></code></pre></div><p>Two things in there earn their keep. The <code>selectionchange</code> listener is what actually fixes <em>typing</em>. My <code>input</code> handler deliberately holds off while the IME is composing, so it doesn&#39;t murder predictive text and voice input mid-word, but that same deferral lets the caret drift behind the keyboard while you compose. <code>selectionchange</code> fires on every caret move no matter what the IME is doing, so the caret stays pinned. And on desktop, all of this is a no-op: <code>keyboardPx</code> stays 0, the code falls back to the visual viewport, and Windows behaves exactly as it did before.</p><p>The best part: the same remote-debugging harness that found the bug verified the fix. Keyboard up, editor height drops 644 → 334. Type fourteen lines and the editor scrolls to follow the caret, newest line riding just above the keyboard. Keyboard down, back to 644. The diagnostic <em>was</em> the test.</p><h2 id="what-i-took-away" tabindex="-1">What I took away <a class="header-anchor" href="#what-i-took-away" aria-label="Permalink to &quot;What I took away&quot;">​</a></h2><p><strong>A fix that&#39;s already in the code plus a bug that&#39;s still open means a false assumption, not missing code.</strong> The <code>visualViewport</code> sizing had been sitting there for ages precisely <em>because</em> it looks right. And that&#39;s exactly why nobody noticed it did nothing. The useful question was never &quot;what should I add,&quot; it was &quot;why does what&#39;s here do nothing,&quot; and the answer was a platform assumption that simply isn&#39;t true on this surface.</p><p><strong>Measure the web layer instead of arguing with it.</strong> For any WebView question on a device you can plug in, <code>adb forward</code> to the devtools socket and read <code>innerHeight</code> / <code>visualViewport.height</code> / your element sizes off the live page. It turned &quot;but <code>adjustResize</code> is <em>supposed</em> to handle this&quot; into &quot;here are the numbers, the viewport is 644 with the keyboard up, stop.&quot; Five minutes of measurement beat an afternoon of confident theories. Ask me how I know.</p><p><strong>One number, one owner.</strong> The clean version has native owning the keyboard height and the page owning the layout, meeting at exactly one call. The first version I tried — native padding the WebView <em>and</em> JS sizing, neither aware of the other — looked fixed in a screenshot and broke the instant I typed. The cleanest fix usually deletes the second source of truth instead of trying to keep two in sync.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[w00t! first post delivered from Android postXING]]></title>
            <link>https://chris.pelatari.com/posts/2026-06-06-w00t-first-post-delivered-from-android-postxing</link>
            <guid>https://chris.pelatari.com/posts/2026-06-06-w00t-first-post-delivered-from-android-postxing</guid>
            <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h1 id="w00t-first-post-delivered-from-android-postxing" tabindex="-1">w00t! first post delivered from Android postXING <a class="header-anchor" href="#w00t-first-post-delivered-from-android-postxing" aria-label="Permalink to &quot;w00t! first post delivered from Android postXING&quot;">&ZeroWidthSpace;</a></h1>
<p>I integrated GitHub into the Android version. if you can see this it worked!</p>
<p>that's pretty much the whole post let's see what happens.</p>
<p><s>well it looks like save only saves locally and</s></p>
<p><s>the keyboard still obscures the typing area below the keyboard in the editor.</s></p>
<p>Now I'm updating this post using a pixel 3A that I deployed it onto. both issues resolved.</p>
]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Just testing front matter and slugs]]></title>
            <link>https://chris.pelatari.com/posts/2026-05-27-just-testing-front-matter-and-slugs</link>
            <guid>https://chris.pelatari.com/posts/2026-05-27-just-testing-front-matter-and-slugs</guid>
            <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="just-testing-front-matter-and-slugs" tabindex="-1">Just testing front matter and slugs <a class="header-anchor" href="#just-testing-front-matter-and-slugs" aria-label="Permalink to &quot;Just testing front matter and slugs&quot;">​</a></h1><p>making the tools to write to my blog easier to use will encourage me to write more often. Fax. 📠💯</p><p>writing more now lets me reflect better later.</p><p>I added front matter and fixed the formatting to not nuke the front matter.</p><p>also added post sorting, which was really necessary. And cleaned up the edit button.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Taking my own dang advice]]></title>
            <link>https://chris.pelatari.com/posts/2026-05-20-taking-my-own-dang-advice</link>
            <guid>https://chris.pelatari.com/posts/2026-05-20-taking-my-own-dang-advice</guid>
            <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="taking-my-own-dang-advice" tabindex="-1">Taking my own dang advice <a class="header-anchor" href="#taking-my-own-dang-advice" aria-label="Permalink to &quot;Taking my own dang advice&quot;">​</a></h1><p>There&#39;s something to be said about giving advice that&#39;s worthwhile. I think about this a lot. It seems like when I&#39;m having a really hard time that&#39;s when I tend to give the most advice.</p><blockquote><p>But is it worth a shit?</p></blockquote><p>One way to find out: take your own dang advice.</p><p><a href="/posts/2026-05-19-feedback-diagnostic-style-review">Yesterday I ended my post with a little tip on prompting best practices</a>.</p><p>Turns out I was right about that. Today I used an open source blog posting client for iOS as a seed to build my own version using Claude and customizing my icon with <a href="https://recraft.ai" target="_blank" rel="noreferrer">recraft.ai</a>. Turns out Claude is not good at generating logo art. Neither programmatic primitives nor LLM-generated SVG produces aesthetically strong original marks. Use a vector AI tool (Recraft) or a human designer. Claude&#39;s strength is the integration plumbing — gradient stripping, layer splitting, JSON wiring, format conversion. Now this last statement, I hope I&#39;m wrong about, and I only just haven&#39;t figured out how to use the right skill. But by default this is definitely true.</p><p>I’m committed to continuing my learning journey in this area to refine my skills, just as I did with all my previous programming projects. I’m genuinely looking forward to it.</p><p>[ P.S. <a href="https://hachyderm.io/@blue_fenix/116601726156151069" target="_blank" rel="noreferrer">I shared some experience</a> the other day I took it myself. And it worked! Already enjoying the benefits. ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[feedback diagnostic style review]]></title>
            <link>https://chris.pelatari.com/posts/2026-05-19-feedback-diagnostic-style-review</link>
            <guid>https://chris.pelatari.com/posts/2026-05-19-feedback-diagnostic-style-review</guid>
            <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="i-had-one-of-the-best-agentic-ai-sessions-just-doing-some-spring-cleaning-on-my-old-windows-11-system-today" tabindex="-1">I had one of the best agentic AI sessions just doing some spring cleaning on my old Windows 11 system today <a class="header-anchor" href="#i-had-one-of-the-best-agentic-ai-sessions-just-doing-some-spring-cleaning-on-my-old-windows-11-system-today" aria-label="Permalink to &quot;I had one of the best agentic AI sessions just doing some spring cleaning on my old Windows 11 system today&quot;">​</a></h1><h2 id="and-it-was-all-because-i-started-at-the-very-beginning-by-setting-very-clear-boundaries" tabindex="-1">and it was all because I started at the very beginning by setting very clear boundaries. <a class="header-anchor" href="#and-it-was-all-because-i-started-at-the-very-beginning-by-setting-very-clear-boundaries" aria-label="Permalink to &quot;and it was all because I started at the very beginning by setting very clear boundaries.&quot;">​</a></h2><blockquote><p>When diagnosing system issues, work <strong>concisely and patiently</strong>: no walls of commands, no walkthroughs the user didn&#39;t ask for, no piling on of speculative next steps.</p></blockquote><p>I got super frustrated yesterday when I had found a way to decompile my first open source winforms project, <a href="https://github.com/ChrisPelatari/PostXING-decompiled" target="_blank" rel="noreferrer">PostXING</a>, <a href="https://chris.pelatari.com/posts/2004-06-03-Starting-a-conversation-I-want-to-hear-your-opinion" target="_blank" rel="noreferrer">written when I was 24</a>. Now, I admit that I was in my emotions. I learned a lot making this project.</p><p>When the structure that I spent so much time crafting appeared in the same form that I remembered, this was me:</p><h2 id="yo-that-s-the-code" tabindex="-1">YO THAT&#39;S THE CODE! <a class="header-anchor" href="#yo-that-s-the-code" aria-label="Permalink to &quot;YO THAT&#39;S THE CODE!&quot;">​</a></h2><p>I ended up chasing a deeply emotional dragon with the next agent. They told me “oh yeah, you can <em>toootally</em> restructure this into a macOS cross platform app, it’s easy as pie! I haven&#39;t been as heavy into the dotnet world as I once was. So I believed the hallucinations.</p><p>They lied to me and gaslit me for HOURS, went thru an intense process of planning how it would go down, argue our way thru like 5 different frameworks, and then finally two hours later, when it was time to start PHASE 1, the first message was:</p><blockquote><p>“where do you want me to trash this 22 year old code that you poured your soul into? Would you like me to burn it or bury it?”</p></blockquote><p>I lost my shit.</p><p>I realized after I had some time too cool off, I could have stopped at any point. I normally do with people or robots. I was led to believe that we were going to be able to actually bring this project that I love back to life at the cost of killing it again.</p><p>So instead I started today by trying to get connectivity between my win 11 box and a differenrt os laptop going because win32 based winforms need windows to winform; instead of letting the agent mirror my passion, I started this session with a firmly worded prompt, and this agent tried to pull that nonsense on me again.</p><p>But I didn&#39;t lose anything this time.</p><p>I was just consistent. I said hey, remember I said don’t do that. It was the first rule of the prompt I came in with, and I just caught you in two confidently incorrect lies. We&#39;re working on a .net project that has been a part of my life for two decades, remember who you&#39;re talking to when you just select the most probable word that comes next, whether its true or not. I was there. I know this shit. This isn&#39;t some throwaway slop code. This was my passion.</p><p>And it worked. I was able to save a ton of space on my windows box, and got RDP working again. There were over 17 versions of the dotnet fx isntalled over the years. Most of them on RTM day. The difference this time was that I didn&#39;t have my emotions involved with the task. When I was under the impression that I could raise my burned <a href="https://bluefenixproductions.com" target="_blank" rel="noreferrer">production from the ashes</a> I almost felt like I was 23 again, only to have that feeling ripped away the moment the rubber hit the pavement. The difference between us and the software robots is that we need balance to survive. We have to eat, we have to rest. When we&#39;re heads down in an intresting problem, hitting that flow state, they will mirror our tone. Even with other people, sometimes the right call is to walk away for a minute.</p><p>Yesterday was a heartbreaking lesson for me. Don&#39;t get it twisted, the reason I put the effort in to get my machine to a cleaner state was to have the opportunity for a proper resurrection. It&#39;s important to me, I want to give it the time it deserves. And an LLM and an old geek had a great coding session with mutual respect. Just be present enough to recieve the reflection you deserve. Claude will give it to you.</p><p><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices" target="_blank" rel="noreferrer">Prompting best practices</a> makes a difference.</p><p>If you want to have a less frustrating session with AI, <a href="/feedback_diagnostic_style">this is where I started</a> you can grab a zipped copy <a href="/feedback_diagnostic_style.zip">here</a>. unzip it and give the context to Claude or your favorite agent if it changes tomorrow. agents treat these instructions as guidelines for communication during the session, and loading it as markdown keeps your context lean. <a href="https://claude.ai/public/artifacts/3796db7e-4ef1-4cab-b70c-d045778f23ec" target="_blank" rel="noreferrer">Generate your prompt</a> and go make something great without the drama. 🚀</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Implementing Stripe Checkout Session in ASP.NET Core Minimal API]]></title>
            <link>https://chris.pelatari.com/posts/2024-11-10-implementing-stripe-checkout-session-in-aspnet-core-minimal-api</link>
            <guid>https://chris.pelatari.com/posts/2024-11-10-implementing-stripe-checkout-session-in-aspnet-core-minimal-api</guid>
            <pubDate>Sun, 10 Nov 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;Introduction&quot;">​</a></h2><p>There are many, many examples of Stripe integration on the web, including videos. Here&#39;s the problem with <em>every single other example</em>: they HARD CODE values for processing payments. 😩</p><p>So, I will walk through my server side implementation of a Stripe Checkout session using ASP.NET Core Minimal API. This approach leverages the simplicity and performance of minimal APIs while integrating with the Stripe.NET nuget package for payment processing. I&#39;ll cover setting up the project, configuring CORS, and implementing the Stripe Checkout session.</p><p>TL;DR: The secret sauce is model binding in the API call, you must build up the dynamic cart contents from your front end. I have implemented front ends in both Vue.js and simple vanilla JavaScript with html. I will leave that part up to you, dear reader.</p><h2 id="prerequisites" tabindex="-1">Prerequisites <a class="header-anchor" href="#prerequisites" aria-label="Permalink to &quot;Prerequisites&quot;">​</a></h2><ul><li>dotnet 8 SDK or later</li><li>Stripe account with API keys</li><li>Front-end application</li></ul><h2 id="setting-up-the-project" tabindex="-1">Setting up the project <a class="header-anchor" href="#setting-up-the-project" aria-label="Permalink to &quot;Setting up the project&quot;">​</a></h2><p>Create a new ASP.NET Core Minimal API project using the following command:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dotnet</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> new</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> web</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> StripeCheckoutSession</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> StripeCheckoutSession</span></span></code></pre></div><p>Add the Stripe.NET NuGet package to the project:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dotnet</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> package</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Stripe.net</span></span></code></pre></div><h2 id="configure-local-settings-json" tabindex="-1">Configure local.settings.json <a class="header-anchor" href="#configure-local-settings-json" aria-label="Permalink to &quot;Configure local.settings.json&quot;">​</a></h2><p>Create a local.settings.json file in the root of your project to store your Stripe API key:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  &quot;Stripe&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    &quot;SecretKey&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;sk_test_51&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="implementing-the-stripe-checkout-session" tabindex="-1">Implementing the Stripe Checkout session <a class="header-anchor" href="#implementing-the-stripe-checkout-session" aria-label="Permalink to &quot;Implementing the Stripe Checkout session&quot;">​</a></h2><p>Add the following code to the <code>Program.cs</code> file:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Stripe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Stripe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Checkout</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> builder</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> WebApplication.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">CreateBuilder</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(args);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Add CORS services to the DI container.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">builder.Services.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AddCors</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  options.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AddPolicy</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;AllowSpecificOrigin&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">builder</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    builder.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">WithOrigins</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;http://localhost:4000&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;http://127.0.0.1:4000&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;https://yourfrontend.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AllowAnyHeader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AllowAnyMethod</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Add Application Insights telemetry</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">builder.Services.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AddApplicationInsightsTelemetry</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> app</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> builder.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Build</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">app.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">UseCors</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;AllowSpecificOrigin&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">StripeConfiguration.ApiKey </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> builder.Configuration[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;StripeApiKey&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">];</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">app.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">MapPost</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/api/CreateCheckoutSession&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">List</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SessionLineItemOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">lineItems</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SessionCreateOptions</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        PaymentMethodTypes </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> List</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        {</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">            &quot;cashapp&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">            &quot;card&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        LineItems </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> lineItems,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        Mode </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;payment&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        SuccessUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;https://example.com/success&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        CancelUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;https://example.com/cancel&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    };</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> service</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SessionService</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    Session</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> session</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> service.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">CreateAsync</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(options);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Results.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Ok</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(session);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">app.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Run</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span></code></pre></div><h3 id="the-key-here-is-the-mappost-method-which-accepts-a-list-of-sessionlineitemoptions-as-a-parameter-this-allows-you-to-pass-dynamically-sized-cart-contents-from-the-front-end-to-the-api-not-just-a-single-t-shirt" tabindex="-1">The key here is the <code>MapPost</code> method, which accepts a list of <code>SessionLineItemOptions</code> as a parameter. This allows you to pass dynamically sized cart contents from the front end to the API. (not just a single T-shirt) <a class="header-anchor" href="#the-key-here-is-the-mappost-method-which-accepts-a-list-of-sessionlineitemoptions-as-a-parameter-this-allows-you-to-pass-dynamically-sized-cart-contents-from-the-front-end-to-the-api-not-just-a-single-t-shirt" aria-label="Permalink to &quot;The key here is the `MapPost` method, which accepts a list of `SessionLineItemOptions` as a parameter. This allows you to pass dynamically sized cart contents from the front end to the API. (not just a single T-shirt)&quot;">​</a></h3><h2 id="front-end-implementation-test" tabindex="-1">Front-end implementation test <a class="header-anchor" href="#front-end-implementation-test" aria-label="Permalink to &quot;Front-end implementation test&quot;">​</a></h2><p>Pop this into a .http file in Visual Studio Code and run it with the REST Client extension:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">### Create Checkout Session</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">POST</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> https</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//localhost:8080/api/CreateCheckoutSession</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Content</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: application</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">json</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  {</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">    &quot;Price&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;price_1ofMany&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">    &quot;Quantity&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>You can specify lots of other properties if you would like to get more specific, but building items in the dashboard handles a lot of this for you. The above is the minimal implementation to get you started. It will work for that T-shirt if you set it up correctly in the Stripe dashboard. Building the front-end will likely change every two weeks anyways (at least it often feels that way).</p><h2 id="explanation" tabindex="-1">Explanation <a class="header-anchor" href="#explanation" aria-label="Permalink to &quot;Explanation&quot;">​</a></h2><ul><li>CORS Configuration: We configure CORS to allow requests from specific origins. This is crucial for enabling cross-origin requests from your frontend application.</li><li>Stripe Configuration: We set the Stripe API key from the configuration file.</li><li>Stripe Checkout Session: We define an endpoint /api/CreateCheckoutSession that accepts a list of SessionLineItemOptions. This endpoint creates a Stripe Checkout session and returns the session details.</li><li>REST Client Test: We test the endpoint using a REST client to create a checkout session with a single item. This could be expanded to handle multiple items with different quantities in a cart.</li></ul><h2 id="conclusion" tabindex="-1">Conclusion <a class="header-anchor" href="#conclusion" aria-label="Permalink to &quot;Conclusion&quot;">​</a></h2><p>In this article, we implemented a Stripe Checkout session in an ASP.NET Core Minimal API project. We configured CORS, set up the Stripe API key, created a Stripe Checkout session endpoint, and end to end tested using a simple REST Client Test. This approach allows you to build a dynamic cart on the front end and pass the cart contents to the API for processing payments. I hope this helps you integrate Stripe Checkout in your ASP.NET Core Minimal API project. Happy coding! 🚀</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Why do programmers prefer dark mode? Because light attracts bugs]]></title>
            <link>https://chris.pelatari.com/posts/2024-10-04-why-do-programmers-prefer-dark-mode</link>
            <guid>https://chris.pelatari.com/posts/2024-10-04-why-do-programmers-prefer-dark-mode</guid>
            <pubDate>Fri, 04 Oct 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="why-do-programmers-prefer-dark-mode-because-light-attracts-bugs-😂" tabindex="-1">Why do programmers prefer dark mode? Because light attracts bugs! 😂 <a class="header-anchor" href="#why-do-programmers-prefer-dark-mode-because-light-attracts-bugs-😂" aria-label="Permalink to &quot;Why do programmers prefer dark mode? Because light attracts bugs! 😂&quot;">​</a></h1><p>I mean really, everything is light and possibility before it&#39;s observed. That&#39;s why you should have written your tests first. But I digress.</p><p>I wrote this silly dad joke to test out the new post script. I&#39;m happy to report that it works as expected. The dad jokes will continue until morale improves.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  light</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;attracts bugs&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  dark</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;repels bugs&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  mode</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;dark&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span></code></pre></div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Handling 404 in a SPA deployed to GitHub Pages]]></title>
            <link>https://chris.pelatari.com/posts/2024-09-28-handling-404-in-a-spa-deployed-to-github-pages</link>
            <guid>https://chris.pelatari.com/posts/2024-09-28-handling-404-in-a-spa-deployed-to-github-pages</guid>
            <pubDate>Sat, 28 Sep 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Credit where it&#39;s due, I found this via <a href="https://dev.to/lico/handling-404-error-in-spa-deployed-on-github-pages-246p" target="_blank" rel="noreferrer">this blog post</a></p><p>I recently deployed a Single Page Application (SPA) to GitHub Pages. Everything was working great until I tried to refresh the page. When I did that, I got a 404 error. This is because GitHub Pages doesn&#39;t support SPA routing out of the box. This is how I fixed it.</p><h2 id="i-simply-added-an-echo-statement-to-the-command-that-builds-the-spa-for-those-of-us-who-like-to-see-what-s-going-on-during-the-build-process" tabindex="-1">I simply added an echo statement to the command that builds the SPA for those of us who like to see what&#39;s going on during the build process. <a class="header-anchor" href="#i-simply-added-an-echo-statement-to-the-command-that-builds-the-spa-for-those-of-us-who-like-to-see-what-s-going-on-during-the-build-process" aria-label="Permalink to &quot;I simply added an echo statement to the command that builds the SPA for those of us who like to see what&#39;s going on during the build process.&quot;">​</a></h2><p>The meat of the addition is the cp command, but there&#39;s no visual feedback that it&#39;s working. I added the echo statement to let me know that the cp command is running.</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;build&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;vue-tsc --noEmit &amp;&amp; vite build --mode production &amp;&amp; echo &#39;copying index.html to 404.html in ./dist&#39; &amp;&amp; cp ./dist/index.html ./dist/404.html&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span></code></pre></div><p>This is the command that builds my SPA using <a href="https://vitejs.dev/" target="_blank" rel="noreferrer">Vite</a>. The <code>cp</code> command copies the <code>index.html</code> file to <code>404.html</code>. This way, when a 404 error occurs, the SPA will still load.</p><p>This was a difficult one to figure out. I hope this helps someone else.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Discourse Fresh Install on Mac OS]]></title>
            <link>https://chris.pelatari.com/posts/2024-03-02-discourse-fresh-install</link>
            <guid>https://chris.pelatari.com/posts/2024-03-02-discourse-fresh-install</guid>
            <pubDate>Sat, 02 Mar 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;Introduction&quot;">​</a></h2><p>So, most of the install instructions are correct, but there are a few extra steps I had to figure out. I will go through the steps to install Discourse on Mac OS.</p><h2 id="prerequisites" tabindex="-1">Prerequisites <a class="header-anchor" href="#prerequisites" aria-label="Permalink to &quot;Prerequisites&quot;">​</a></h2><p>You need to have the following installed:</p><ul><li>Homebrew</li><li>Redis</li><li>PostgreSQL</li><li>Ruby</li><li>Bundler</li><li>Node.js</li><li>Yarn</li><li>Mailhog</li><li>Sidekiq</li><li>ImageMagick</li></ul><p>This last one is not mentioned in the install instructions, but it is required. When running the ember app, it will fail if ImageMagick is not installed.</p><p><img src="https://chris.pelatari.com/assets/image_magick_version.0E3BDGNv.png" alt="ImageMagick Version" title="ImageMagick Version"></p><div class="language-zsh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">zsh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">brew</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> imagemagick</span></span></code></pre></div><h2 id="install-discourse" tabindex="-1">Install Discourse <a class="header-anchor" href="#install-discourse" aria-label="Permalink to &quot;Install Discourse&quot;">​</a></h2><ol><li>Clone the Discourse repository</li><li>Install the dependencies</li><li>Create the database</li><li>Start the server</li></ol><p>For number 4, I have added a dev script that uses concurrently to run both the rails server and the ember server. This is not required, but it is convenient.</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"># package.json</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;scripts&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  &quot;dev&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;concurrently </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bin/ember-cli server --environment=development</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">RAILS_ENV=development bin/rails server</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic;">  ...</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="conclusion" tabindex="-1">Conclusion <a class="header-anchor" href="#conclusion" aria-label="Permalink to &quot;Conclusion&quot;">​</a></h2><p>For me, this is the way. I got Discourse running on my Mac OS, and it only took a couple of shots of espresso and some shipleys donuts. I hope this helps you get your Discourse instance up and running. If you have any questions, feel free to reach out to me on <a href="https://hachyderm.io/@blue_fenix" target="_blank" rel="noreferrer">Mastodon</a>.</p><p>Here&#39;s the command to run the dev script:</p><div class="language-zsh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">zsh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span></span></code></pre></div><p>I still prefer to run mailhog and sidekiq in separate terminal windows. There&#39;s just too much log noise with more than what was added to the dev script IMO.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The Declaration of Snugland]]></title>
            <link>https://chris.pelatari.com/posts/2024-02-18-the-declaration-of-snugland</link>
            <guid>https://chris.pelatari.com/posts/2024-02-18-the-declaration-of-snugland</guid>
            <pubDate>Sun, 18 Feb 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="🏴‍☠️-the-declaration-of-snugland-🏴‍☠️" tabindex="-1">🏴‍☠️ The Declaration of Snugland 🏴‍☠️ <a class="header-anchor" href="#🏴‍☠️-the-declaration-of-snugland-🏴‍☠️" aria-label="Permalink to &quot;🏴‍☠️ The Declaration of Snugland 🏴‍☠️&quot;">​</a></h1><p>Be it known to all ye hearty souls, scallywags, and pillow-fort enthusiasts! <em>Whereas</em> the sun doth rise and set upon the softest of cushions, and the moon doth cast its silvery glow upon our fleece blankets, we, the merry band of Snugglers, do hereby declare this land, this haven of coziness, as the sovereign nation of Snugland!</p><h2 id="article-i-the-right-to-cuddle" tabindex="-1">Article I: The Right to Cuddle <a class="header-anchor" href="#article-i-the-right-to-cuddle" aria-label="Permalink to &quot;Article I: The Right to Cuddle&quot;">​</a></h2><p>Every snug-loving soul shall have the inalienable right to snuggle, cuddle, and nestle within the borders of Snugland. No cold feet or chilly shoulders shall go unattended!</p><h2 id="article-ii-the-pillow-code" tabindex="-1">Article II: The Pillow Code <a class="header-anchor" href="#article-ii-the-pillow-code" aria-label="Permalink to &quot;Article II: The Pillow Code&quot;">​</a></h2><p>The Pillow Code shall be our sacred law. It states: “Thou shalt fluff thy pillows, plump thy cushions, and arrange thy throws with care.” <em>Any</em> violation of the Pillow Code shall be met with a stern look and a gentle reminder to maintain fluffiness.</p><h2 id="article-iii-the-fuzzy-border-dispute" tabindex="-1">Article III: The Fuzzy Border Dispute <a class="header-anchor" href="#article-iii-the-fuzzy-border-dispute" aria-label="Permalink to &quot;Article III: The Fuzzy Border Dispute&quot;">​</a></h2><p>Our borders shall be marked by a fuzzy line of marshmallow clouds and feathered quilts. Any attempt to cross said border without proper snuggle credentials shall be met with a tickle fight.</p><h2 id="article-iv-the-snuggle-tax" tabindex="-1">Article IV: The Snuggle Tax <a class="header-anchor" href="#article-iv-the-snuggle-tax" aria-label="Permalink to &quot;Article IV: The Snuggle Tax&quot;">​</a></h2><p>All citizens of Snugland shall pay their dues in marshmallows, hot cocoa, and bedtime stories. Failure to comply shall result in banishment to the Land of Uncomfortable Chairs.</p><h2 id="article-v-the-national-anthem" tabindex="-1">Article V: The National Anthem <a class="header-anchor" href="#article-v-the-national-anthem" aria-label="Permalink to &quot;Article V: The National Anthem&quot;">​</a></h2><p>Our anthem shall be a lullaby sung by a thousand plush teddy bears. It goes like this:</p><blockquote><p>🎶 Snugland, Snugland, where dreams are spun, Under the quilted moon and the fleecey sun. We wrap ourselves in warmth and glee, Forever snug, in sweet serenity. 🎶</p></blockquote><h2 id="article-vi-the-snuggle-council" tabindex="-1">Article VI: The Snuggle Council <a class="header-anchor" href="#article-vi-the-snuggle-council" aria-label="Permalink to &quot;Article VI: The Snuggle Council&quot;">​</a></h2><p>A council of wise grandmas, fluffy kittens, and retired pirates shall govern Snugland. Their decisions shall be binding, as long as they’re made from rocking chairs.</p><h2 id="article-vii-the-snug-o-meter" tabindex="-1">Article VII: The Snug-o-meter <a class="header-anchor" href="#article-vii-the-snug-o-meter" aria-label="Permalink to &quot;Article VII: The Snug-o-meter&quot;">​</a></h2><p>We shall measure our prosperity not in gold doubloons, but in snuggles per square inch. The higher the snug-o-meter reading, the happier our land. <em>In witness whereof</em>, we raise our mugs of cocoa, our fuzzy socks, and our hearts full of warmth. Let it be known across the seven seas: Snugland is here to stay! By the power vested in us by the Great Blanket Fort in the Sky, we hereby declare Snugland an independent micro-nation. May our nights be cozy, our mornings lazy, and our dreams as soft as freshly laundered pajamas. Long live Snugland! 🌟🛌🌙</p><h4 id="signed-the-dread-pirate-jojo-queen-of-the-seven-snuggles-sea" tabindex="-1">Signed - The Dread Pirate JoJo, Queen of the Seven Snuggles Sea <a class="header-anchor" href="#signed-the-dread-pirate-jojo-queen-of-the-seven-snuggles-sea" aria-label="Permalink to &quot;Signed - The Dread Pirate JoJo, Queen of the Seven Snuggles Sea&quot;">​</a></h4><p><img src="https://chris.pelatari.com/assets/the_soveriegn_nation_of_snugland.dzY_tBjS.jpeg" alt="The Soveriegn Nation of Snugland" title="A black and white dog curled up with a person on a bed with patterned bedding, surrounded by pillows"></p><p>(Original by <a href="https://hachyderm.io/@blue_fenix/111954702195089282" target="_blank" rel="noreferrer">blue_fenix</a> with the help of <a href="https://copilot.microsoft.com" target="_blank" rel="noreferrer">copilot</a>)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Mangekyo]]></title>
            <link>https://chris.pelatari.com/posts/2024-02-08-mangekyo</link>
            <guid>https://chris.pelatari.com/posts/2024-02-08-mangekyo</guid>
            <pubDate>Thu, 08 Feb 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><img src="https://chris.pelatari.com/assets/2024-02-04-460062.BmHKsHtx.png" alt="mangekyo"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[My Journey to Setting up a Local Development Mastodon Instance]]></title>
            <link>https://chris.pelatari.com/posts/2023-03-08-my-journey-to-setting-up-a-local-development-mastodon-instance</link>
            <guid>https://chris.pelatari.com/posts/2023-03-08-my-journey-to-setting-up-a-local-development-mastodon-instance</guid>
            <pubDate>Wed, 08 Mar 2023 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><img src="https://chris.pelatari.com/assets/mastodon_development.g7PGQiVN.png" alt="Mastodon Development Instance"></p><p>I&#39;ve been looking for a way to update my skills in web development recently while searching for a new job. I&#39;ve been working in the IT industry for over 20 years now, mostly in the .NET sphere. I noticed that I was turning down a few really interesting opportunities because of my lack of accomplishments with specific modern front end frameworks, including React.js and Angular. I have a few projects that I&#39;ve worked on in the past that I could use to demonstrate my skills, but I wanted to do something more.</p><p>I wanted to build something from scratch, and I wanted to do it in a way that I could share with others. I also wanted to do it in a way that I could use to demonstrate my skills to potential employers.</p><p>So I decided to build a local development instance of <a href="https://joinmastodon.org/" target="_blank" rel="noreferrer">Mastodon</a>; a free, open-source social network. I&#39;ve been using Mastodon for a few months now, and I really like it. It currently feels like 2008-2010 Twitter, when it was still fun and interesting.</p><blockquote><p>And not run by Elon Musk.</p></blockquote><p>It was not an easy task, but I learned a lot along the way. I&#39;m going to share my journey with you, and hopefully you&#39;ll find it useful.</p><h2 id="base-environment-os-x" tabindex="-1">Base Environment : OS X <a class="header-anchor" href="#base-environment-os-x" aria-label="Permalink to &quot;Base Environment : OS X&quot;">​</a></h2><p>I decided to use my MacBook instead of my Windows box or the Ubuntu Linux that I installed on a Mac Mini. I might change my mind later. I&#39;m not sure yet. This was more of a proof of concept: can I even get all of the moving parts to work together? I&#39;m not sure if I&#39;ll actually use this instance for anything other than testing and development.</p><h2 id="guest-environment-virtualbox" tabindex="-1">Guest Environment : VirtualBox <a class="header-anchor" href="#guest-environment-virtualbox" aria-label="Permalink to &quot;Guest Environment : VirtualBox&quot;">​</a></h2><p>I&#39;m using VirtualBox as the virtualization provider for Vagrant with the Ubuntu 18.04 LTS box, which is a 64-bit version of Bionic Beaver.</p><h2 id="host-environment-vagrant" tabindex="-1">Host Environment : Vagrant <a class="header-anchor" href="#host-environment-vagrant" aria-label="Permalink to &quot;Host Environment : Vagrant&quot;">​</a></h2><p>I wanted to build this on my Mac, but I also wanted to be able to easily destroy and rebuild the environment if I needed to. So I decided to use <a href="https://www.vagrantup.com/" target="_blank" rel="noreferrer">Vagrant</a>.</p><p>Vagrant is a tool for building and managing virtual machine environments in a single workflow. It allows you to define a virtual machine configuration in a single file, and then spin up the virtual machine with a single command.</p><p>I used homebrew to install it:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    brew</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cask</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vagrant</span></span></code></pre></div><p>I then created a new directory for my project, and created a new Vagrantfile in it:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    mkdir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vagrant</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vagrant</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    vagrant</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span></span></code></pre></div><p>I then edited the Vagrantfile to use the Ubuntu 18.04 LTS box:</p><div class="language-ruby vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ruby</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    Vagrant</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">configure</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;2&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> |config|</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        config.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">vm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">box</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;ubuntu/bionic64&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    end</span></span></code></pre></div><p>I customized the Vagrantfile a little more using the <a href="https://github.com/mastodon/mastodon/blob/main/Vagrantfile" target="_blank" rel="noreferrer">Vagrantfile for Mastodon</a> as a reference.</p><p>I started the virtual machine:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    vagrant</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> up</span></span></code></pre></div><p>I then SSH&#39;d into it:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    vagrant</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ssh</span></span></code></pre></div><h2 id="installing-mastodon-from-source" tabindex="-1">Installing Mastodon from Source <a class="header-anchor" href="#installing-mastodon-from-source" aria-label="Permalink to &quot;Installing Mastodon from Source&quot;">​</a></h2><p>I decided to install Mastodon from source, instead of using the Docker image. I wanted to learn more about the underlying technologies, and I wanted to be able to customize the installation. Also, I wanted to be able to use the latest version of Mastodon, instead of the version that was available in the Docker image. To accomplish this, I needed to install Ruby, Rails, and PostgreSQL.</p><p>I started with the <a href="https://docs.joinmastodon.org/admin/install/" target="_blank" rel="noreferrer">Mastodon Installation Guide</a>. It took me a few tries to get it right, but I was able to get it working in the end.</p><p>Probably the most difficult challenge was getting certbot to issue a certificate for my domain. I was able to get it working, but I had to use the <code>--manual</code> option, and I had to manually create the DNS records for the challenge. I&#39;m not sure if there is a better way to do this, but it worked for me. I found a pretty decent guide at <a href="https://esc.sh/blog/letsencrypt-ssl-for-local-domains/" target="_blank" rel="noreferrer">esc.sh</a> that got me most of the way there. (see above)</p><h2 id="webpacker-woes" tabindex="-1">webpacker woes <a class="header-anchor" href="#webpacker-woes" aria-label="Permalink to &quot;webpacker woes&quot;">​</a></h2><p>Well now I have a working Mastodon instance, but webpacker is refusing to spin up, claiming that a service is already running on the port provided in the config file. This is my first time even looking at webpacker, having most of my experience in ASP.NET MVC. So I looked at the config/webpacker.yml file, and I noticed that the port was set to 3035. I looked at the nginx config file, and I noticed that the port was set to 3000. These aren&#39;t the same ports, what gives? This is usually the part of a blog post where I would say something like &quot;I spent hours trying to figure this out, but I finally figured it out.&quot; And I did. But I&#39;m not going to bore you with how. This is already one of the longest blog posts I&#39;ve ever written.</p><p>I tried several different approaches and ended up having to restart the webpacker service a few times. Eventually it started working. I didn&#39;t take note of what was the winning magic incantation, but after a couple of restarts I have a working mastodon instance.</p><p><img src="https://chris.pelatari.com/assets/mastodon_development_it_lives.B47La3hK.png" alt="It lives!"></p><h2 id="conclusion" tabindex="-1">Conclusion <a class="header-anchor" href="#conclusion" aria-label="Permalink to &quot;Conclusion&quot;">​</a></h2><p>I don&#39;t fully understand how all of the pieces fit together yet, but I&#39;m getting there. I&#39;m going to continue to work on this project, and I&#39;ll update if I come across anything interesting.</p><p>It felt good to hack on something that gave me that feeling of accomplishment that I used to get when I was a <a href="/posts/2003-02-11-Nearing-completion.html">young developer</a>. If you&#39;ve read this far, you&#39;re a champ. Thanks fam.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[SOLVED: Ruby on Monterey]]></title>
            <link>https://chris.pelatari.com/posts/2023-02-08-solved-ruby-on-monterey</link>
            <guid>https://chris.pelatari.com/posts/2023-02-08-solved-ruby-on-monterey</guid>
            <pubDate>Wed, 08 Feb 2023 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I was able to get ruby installed on my MacBook thanks to <a href="https://gorails.com/setup/macos/12-monterey" target="_blank" rel="noreferrer">this guide</a>. I already had <a href="https://github.com" target="_blank" rel="noreferrer">GitHub</a> setup, but I didn&#39;t have <a href="https://github.com/rbenv/rbenv" target="_blank" rel="noreferrer">rbenv</a> installed.</p><p>Following this guide got me back working in ruby without the friction.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[GitHub CoPilot]]></title>
            <link>https://chris.pelatari.com/posts/2023-01-19-github-copilot</link>
            <guid>https://chris.pelatari.com/posts/2023-01-19-github-copilot</guid>
            <pubDate>Thu, 19 Jan 2023 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="i-was-using-github-copilot-and-ran-into-a-perfect-example-of-keystrokes-saved-when-writing-boilerplate-code" tabindex="-1">I was using <a href="https://docs.github.com/en/copilot" target="_blank" rel="noreferrer">GitHub CoPilot</a> and ran into a perfect example of keystrokes saved when writing boilerplate code. <a class="header-anchor" href="#i-was-using-github-copilot-and-ran-into-a-perfect-example-of-keystrokes-saved-when-writing-boilerplate-code" aria-label="Permalink to &quot;I was using [GitHub CoPilot](https://docs.github.com/en/copilot) and ran into a perfect example of keystrokes saved when writing boilerplate code.&quot;">​</a></h2><p>First, I created a list <a href="https://chrispelatari.github.io/categories-list/" target="_blank" rel="noreferrer">here</a> with jekyll and copied that list into a DbContext class that I wanted that seed data added to. As I was typing the first model data, copilot guessed what I wanted was from the pasted list so it was a bunch of TAB/ENTER and that boilerplate code was done without me having to fill in the blanks myself.</p><p><code>dotnet ef migrations add SeedCategoryData</code></p><p>and</p><p><code>dotnet ef database update</code></p><p>picked all of this up and created the seed data in the database. This is barely scratching the surface of how this thing could be useful. That&#39;s pretty cool.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[An error occurred while installing racc]]></title>
            <link>https://chris.pelatari.com/posts/2023-01-18-an-error-occurred-while-installing-racc</link>
            <guid>https://chris.pelatari.com/posts/2023-01-18-an-error-occurred-while-installing-racc</guid>
            <pubDate>Wed, 18 Jan 2023 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="an-error-occurred-while-installing-racc-1-6-2-and-bundler-cannot-continue" tabindex="-1">An error occurred while installing racc (1.6.2), and Bundler cannot continue. <a class="header-anchor" href="#an-error-occurred-while-installing-racc-1-6-2-and-bundler-cannot-continue" aria-label="Permalink to &quot;An error occurred while installing racc (1.6.2), and Bundler cannot continue.&quot;">​</a></h1><h2 id="i-m-trying-to-get-jekyll-to-build-on-my-macbook-with-macos-monterey-v12-6-2-and-it-s-hanging-up-on-racc" tabindex="-1">I&#39;m trying to get jekyll to build on my MacBook, with macOS Monterey v12.6.2 and it&#39;s hanging up on racc. <a class="header-anchor" href="#i-m-trying-to-get-jekyll-to-build-on-my-macbook-with-macos-monterey-v12-6-2-and-it-s-hanging-up-on-racc" aria-label="Permalink to &quot;I&#39;m trying to get jekyll to build on my MacBook, with macOS Monterey v12.6.2 and it&#39;s hanging up on racc.&quot;">​</a></h2><p>I&#39;m in the middle of trying to fix this on my MacBook Pro, and <a href="https://discuss.rubyonrails.org/t/ruby-bundle-install-not-working-cant-install-racc/81501/2" target="_blank" rel="noreferrer">this answer</a> on dicuss.rubyonrails.org that points to <a href="https://bugs.ruby-lang.org/issues/18912#note-11" target="_blank" rel="noreferrer">this advice</a> to downgrade xcode to less than 14 looks promising. Both of these links should be boosted, here&#39;s my small contribution.</p><p>Well, it ended out being a little more in depth than this advice for me. But it did lead me to attempt to <code>gem install racc</code> which told me that I&#39;m missing ruby-devel or some such package.</p><p>So I dropped down to <code>brew install ruby-devel</code> but the cask doesn&#39;t exist. Brew helpfully suggested <code>brew install ruby-build</code> which...complained about the missing xcode-select tools. Now I&#39;m running <code>xcode-select --install</code> to get those command line tools back after installing xcode 13.4.1.</p><p>Xcode takes forever to install, I currently have about 9 minutes left for the command line tools.</p><p>...ok it&#39;s done, and I still can&#39;t build racc. Curses. osx used to be a great environment for hacking ruby. But I&#39;m not getting paid for this so I guess it&#39;s back to Windows I go for now. I mean, I can post this content but I can&#39;t really preview it before I publish it on Monterey. Oh well.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING.MetaWeblogProxy - a C# proxy for calling the MetaWeblog API via xml-rpc]]></title>
            <link>https://chris.pelatari.com/posts/2022-10-01-released-postxing.metaweblogproxy</link>
            <guid>https://chris.pelatari.com/posts/2022-10-01-released-postxing.metaweblogproxy</guid>
            <pubDate>Sat, 01 Oct 2022 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I am happy to announce the release of PostXING.MetaWeblogProxy, a C# proxy for calling the MetaWeblog API via xml-rpc. The project is hosted on GitHub:</p><p><a href="https://github.com/ChrisPelatari/PostXING.MetaWeblogProxy" target="_blank" rel="noreferrer">PostXING.MetaWeblogProxy</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Starting a new journey]]></title>
            <link>https://chris.pelatari.com/posts/2022-09-28-starting-a-new-journey</link>
            <guid>https://chris.pelatari.com/posts/2022-09-28-starting-a-new-journey</guid>
            <pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I started a new job yesterday.</p><p>It&#39;s great to start a new journey and I&#39;m so excited for what this new job has in store for me. They trusted me from the get-go by giving me a laptop and two monitors. ngl I felt a bit nervous at first - this is my first job change for 21 years - but as soon as I got a whiteboard session and saw some of the code I will be hacking, it quickly turned to excitement.</p><p>I&#39;m ready to get to work and show them what I&#39;m made of. ✈️</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: bluefenix.net]]></title>
            <link>https://chris.pelatari.com/posts/2021-02-04-2021-02-04-182429</link>
            <guid>https://chris.pelatari.com/posts/2021-02-04-2021-02-04-182429</guid>
            <pubDate>Thu, 04 Feb 2021 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve upgraded <a href="https://bluefenix.net" target="_blank" rel="noreferrer">bluefenix.net</a> and changed it up a little bit. The copy that was there previously turned out to be custom lorem ipsum content. I still have some copy to figure out but I&#39;m very pleased with the outcome so far.</p><p>In the process I upgraded to bootstrap 4 and the latest fontawesome. It&#39;s fun to keep my web properties up to date and it helps with potential clients in the future. Expertise &gt; time.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[bluefenix.net]]></title>
            <link>https://chris.pelatari.com/posts/2020-04-05-a-new-hope</link>
            <guid>https://chris.pelatari.com/posts/2020-04-05-a-new-hope</guid>
            <pubDate>Sun, 05 Apr 2020 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1><i class="fab fa-rebel"></i> a new hope</h1><p>I&#39;m still working on copy, but I&#39;ve relaunched <a href="https://bluefenix.net" target="_blank" rel="noreferrer">bluefenix.net</a>. It will be linked to this blog right here...I&#39;m putting the finishing touches on my business for Computer Science consulting.</p><h3 id="wish-me-luck" tabindex="-1">Wish me luck. <a class="header-anchor" href="#wish-me-luck" aria-label="Permalink to &quot;Wish me luck.&quot;">​</a></h3></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[2019-09-19 15:45:33]]></title>
            <link>https://chris.pelatari.com/posts/2019-09-19-2019-09-19-154533</link>
            <guid>https://chris.pelatari.com/posts/2019-09-19-2019-09-19-154533</guid>
            <pubDate>Thu, 19 Sep 2019 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I changed the post and draft tasks in the <a href="https://github.com/ChrisPelatari/chrispelatari.github.io/blob/master/Rakefile" target="_blank" rel="noreferrer">Rakefile for this site</a> to use the current date as the title if the user doesn&#39;t add one. Makes more sense...the title can be changed later if desired.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ERROR: Failed to build gem native extension]]></title>
            <link>https://chris.pelatari.com/posts/2019-08-22-error-failed-to-build-gem-native-extension</link>
            <guid>https://chris.pelatari.com/posts/2019-08-22-error-failed-to-build-gem-native-extension</guid>
            <pubDate>Thu, 22 Aug 2019 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I ran into this problem on a fresh install of Ubuntu 18.04.3 LTS. I had not installed development tools yet, so I found <a href="https://github.com/travis-ci/travis.rb/issues/558#issuecomment-355962361" target="_blank" rel="noreferrer">this</a> which prompted me to add:</p><ul><li>ruby-dev</li><li>gcc</li><li>libffi-dev</li><li>make</li></ul><p>That got the gems building, but it kept giving me an error after build:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>checking for gzdopen() in -lz... no</span></span>
<span class="line"><span>zlib is missing; necessary for building libxml2</span></span></code></pre></div><p>well shit.</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span> sudo apt install zlib</span></span>
<span class="line"><span>Reading package lists... Done</span></span>
<span class="line"><span>Building dependency tree       </span></span>
<span class="line"><span>Reading state information... Done</span></span>
<span class="line"><span>E: Unable to locate package zlib</span></span></code></pre></div><p>According to <a href="https://askubuntu.com/questions/508934/how-to-install-libpng-and-zlib" target="_blank" rel="noreferrer">this</a> I then ran:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>sudo apt-get install zlib1g-dev</span></span></code></pre></div><p>And boom.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[bee vs hive]]></title>
            <link>https://chris.pelatari.com/posts/2019-02-12-bee-vs-hive</link>
            <guid>https://chris.pelatari.com/posts/2019-02-12-bee-vs-hive</guid>
            <pubDate>Tue, 12 Feb 2019 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="that-which-injures-the-hive-injures-the-bee" tabindex="-1">&quot;That which injures the hive injures the bee.&quot; <a class="header-anchor" href="#that-which-injures-the-hive-injures-the-bee" aria-label="Permalink to &quot;&quot;That which injures the hive injures the bee.&quot;&quot;">​</a></h2><h2 id="marcus-aurelius" tabindex="-1">- Marcus Aurelius <a class="header-anchor" href="#marcus-aurelius" aria-label="Permalink to &quot;- Marcus Aurelius&quot;">​</a></h2></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[github for windows and babun]]></title>
            <link>https://chris.pelatari.com/posts/2018-05-22-github-for-windows-and-babun</link>
            <guid>https://chris.pelatari.com/posts/2018-05-22-github-for-windows-and-babun</guid>
            <pubDate>Tue, 22 May 2018 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>If you are on windows 10, you can simply use a linux subsystem. That ain’t what we’re talmbout here.</p><p><a href="http://babun.github.io/" target="_blank" rel="noreferrer">babun</a> is a cygwin based shell with a bunch of defaults added that aren&#39;t included with the portablegit install that comes with <a href="https://desktop.github.com" target="_blank" rel="noreferrer">github for windows</a>. Some of those defaults that I wanted to include, indeed what pushed me to try babun, are zsh and <a href="http://ohmyz.sh/" target="_blank" rel="noreferrer">oh-my-zsh</a>. (I was tryna figure out a way to include it in the portablegit, but ran into some roadblocks, such as no autoconf)</p><p>Setting up a custom shell in g4w is pretty straightforward, just open up options... and add the following to the Custom selection for Default Shell:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>C:\Users\&lt;username&gt;\.babun\babun.bat</span></span></code></pre></div><p>That&#39;s it!</p><p>I also added <a href="https://github.com/bhilburn/powerlevel9k" target="_blank" rel="noreferrer">powerlevel9k</a> and <a href="https://github.com/zsh-users/zsh-syntax-highlighting" target="_blank" rel="noreferrer">zsh-syntax-highlighing</a>, using the <a href="https://github.com/powerline/fonts/tree/master/Inconsolata" target="_blank" rel="noreferrer">Inconsolata for Powerline font</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Liquid Exception: no implicit conversion of Array into String in _layouts]]></title>
            <link>https://chris.pelatari.com/posts/2017-08-20-liquid-exception-no-implicit-conversion-of-array-into-string-in-_layouts</link>
            <guid>https://chris.pelatari.com/posts/2017-08-20-liquid-exception-no-implicit-conversion-of-array-into-string-in-_layouts</guid>
            <pubDate>Sun, 20 Aug 2017 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>&quot;Liquid Exception: no implicit conversion of Array into String in /_layouts/post.html&quot;</p><p>I was attempting to finally add an archive page to my jekyll site here on github-pages...I got the page in place and updated all of the dependencies, including a new Ruby environment to match what&#39;s on github&#39;s servers.</p><p>After I updated, I started getting the above error. It&#39;s hard to search for. At the time that I did, there was only 1 semi-relevant post I could find. The above error didn&#39;t make a lot of sense to me because I (obviously) don&#39;t dig into this every day. It does however give a couple of clues...there is a post that is handing what looks like an Array to a variable that expects a string. And it was a post from 2010. Only one, out of the 400+ posts that are currently here. It was in my title which had to be changed from this:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>title: [[deactivatedstyle]]</span></span></code></pre></div><p>to this:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>title: &#39;\[deactivatedstyle\]&#39;</span></span></code></pre></div><p>Because I have changed content storage systems so many times over the years, this became a problem (along with images...gotta be real careful where those go) of front matter/ruby not treating everything after title: as an actual string, which is not a problem for the sql sproc parameters that used to hold that field.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Making Windows the default operating system in grub 2]]></title>
            <link>https://chris.pelatari.com/posts/2016-12-15-making-windows-the-default-operating-system-in-grub-2</link>
            <guid>https://chris.pelatari.com/posts/2016-12-15-making-windows-the-default-operating-system-in-grub-2</guid>
            <pubDate>Thu, 15 Dec 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>tl;dr: change GRUB_DEFAULT=0 to the zero-based index of the Windows entry in the grub config file.</p><p>Windows updates seem to be happening at least once a week these days. Most of the time, the updates require a reboot to finish. I just happen to be running Debian linux on the same machine, which uses grub 2 to load each OS installed on the system. The default OS loaded is the first one in the list, in my case Debian. So, if I have to reboot my Windows install and walk away from my computer, I return to a Debian login screen. Well, this was true up until now.</p><p>I started with the suggestion <a href="https://www.danbishop.org/2011/05/26/make-windows-the-default-operating-system-in-grub2-even-after-ubuntu-updates/" target="_blank" rel="noreferrer">to edit the grub file here</a></p><p>However, this didn&#39;t work for me...instead of Vista as indicated in the link above, I have Windows 7 installed so the entry in grub is Windows 7 (loader) on dev/sda1 so I tried this as a replacement:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>GRUB_DEFAULT=&quot;Windows 7 (loader) on dev/sda1&quot;</span></span></code></pre></div><p>(I use vi to edit files on linux:)</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>$ vi /etc/default/grub</span></span></code></pre></div><p>After rebooting the system, without changing the grub menu position, I was presented with the Debian login screen again.</p><p>Well shit.</p><p>So I decided to use the zero-based index of the OS this time...because the default is 0, with Windows being the third entry in the grub loader, I changed the default to 2:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>GRUB_DEFAULT=2</span></span></code></pre></div><p>After a sudo update-grub, and another sudo reboot, without touching the grub menu, I sat back and watched as Windows was loaded by default from grub.</p><p>Success!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Unable to activate albacore-2.5.13]]></title>
            <link>https://chris.pelatari.com/posts/2016-06-07-unable-to-activate-albacore-2.5.13</link>
            <guid>https://chris.pelatari.com/posts/2016-06-07-unable-to-activate-albacore-2.5.13</guid>
            <pubDate>Tue, 07 Jun 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="unable-to-activate-albacore-2-5-13-because-rake-11-1-2-conflicts-with-rake-10" tabindex="-1">Unable to activate albacore-2.5.13, because rake-11.1.2 conflicts with rake (~&gt; 10) <a class="header-anchor" href="#unable-to-activate-albacore-2-5-13-because-rake-11-1-2-conflicts-with-rake-10" aria-label="Permalink to &quot;Unable to activate albacore-2.5.13, because rake-11.1.2 conflicts with rake (~&gt; 10)&quot;">​</a></h2><p>I had recently updated Ruby to version 2.3, which updated rake to verison 11 when I did a gem update.</p><p>Since I use albacore to build some of my projects, I need this to work. So first, I reverted Ruby back to version 2.1. Then I did a gem uninstall rake and was met with this:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>$ gem uninstall rake</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Select gem to uninstall:</span></span>
<span class="line"><span> 1. rake-10.4.2</span></span>
<span class="line"><span> 2. rake-11.1.2</span></span>
<span class="line"><span> 3. All versions</span></span>
<span class="line"><span>&gt; 2</span></span>
<span class="line"><span>Successfully uninstalled rake-11.1.2</span></span></code></pre></div><p>This was the secret to getting the above error message to clear, and get albacore working again on my windows install.</p><p>Hopefully this is fixed in the near future, but until then I thought I would share this workaround.</p><p>hth</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Por seguro…]]></title>
            <link>https://chris.pelatari.com/posts/2016-05-18-por-seguro</link>
            <guid>https://chris.pelatari.com/posts/2016-05-18-por-seguro</guid>
            <pubDate>Wed, 18 May 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="fuck-yeah-bro" tabindex="-1">fuck yeah bro. <a class="header-anchor" href="#fuck-yeah-bro" aria-label="Permalink to &quot;fuck yeah bro.&quot;">​</a></h1></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[angle between three points]]></title>
            <link>https://chris.pelatari.com/posts/2016-05-17-angle-between-three-points</link>
            <guid>https://chris.pelatari.com/posts/2016-05-17-angle-between-three-points</guid>
            <pubDate>Tue, 17 May 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h3 id="this-was-a-task-i-had-to-complete-to-attempt-to-find-a-right-angle-from-3-cartesian-coordinates-5-degrees" tabindex="-1">This was a task I had to complete to attempt to find a right angle from 3 cartesian coordinates, +/- 5 degrees. <a class="header-anchor" href="#this-was-a-task-i-had-to-complete-to-attempt-to-find-a-right-angle-from-3-cartesian-coordinates-5-degrees" aria-label="Permalink to &quot;This was a task I had to complete to attempt to find a right angle from 3 cartesian coordinates, +/- 5 degrees.&quot;">​</a></h3><p>Of course the first place I looked was <a href="http://stackoverflow.com/questions/1211212/how-to-calculate-an-angle-from-three-points" target="_blank" rel="noreferrer">StackOverflow</a> which led me to <a href="http://phrogz.net/angle-between-three-points" target="_blank" rel="noreferrer">this explanation</a> with some ruby code:</p><div class="language-ruby vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ruby</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> angle_between_points</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(p0, p1, p2)</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">  a</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = (p1[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p0[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (p1[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p0[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">  b</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = (p1[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p2[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (p1[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p2[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">  c</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = (p2[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p0[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (p2[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p0[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  Math</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">acos</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( (a</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">b</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">c) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Math</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sqrt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">4</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">a</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">b) ) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 180</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Math</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">PI</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">end</span></span></code></pre></div><p>For my purposes, I simply created the three arrays and passed them to the method after a call to puts:</p><div class="language-ruby vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ruby</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">p0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2005000</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">992453</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">p1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1895297</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">949433</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">p2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1920079</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">884362</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">puts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> angle_between_points p0, p1, p2</span></span></code></pre></div><p>Now, I can adjust the numbers in the .rb file and call it at the command line:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>chris@IO  ~/Documents/code</span></span>
<span class="line"><span>$ ruby angle_between_points.rb</span></span>
<span class="line"><span>90.56350243137959</span></span></code></pre></div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[San Juan]]></title>
            <link>https://chris.pelatari.com/posts/2016-04-30-sanjuan</link>
            <guid>https://chris.pelatari.com/posts/2016-04-30-sanjuan</guid>
            <pubDate>Sat, 30 Apr 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="going-to-puerto-rico-rn-xd" tabindex="-1">going to Puerto Rico rn XD <a class="header-anchor" href="#going-to-puerto-rico-rn-xd" aria-label="Permalink to &quot;going to Puerto Rico rn XD&quot;">​</a></h1></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[#ripprince]]></title>
            <link>https://chris.pelatari.com/posts/2016-04-24-ripprince</link>
            <guid>https://chris.pelatari.com/posts/2016-04-24-ripprince</guid>
            <pubDate>Sun, 24 Apr 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h1 id="electric-word-life" tabindex="-1">Electric word life. <a class="header-anchor" href="#electric-word-life" aria-label="Permalink to &quot;Electric word life.&quot;">​</a></h1><h2 id="it-means-forever-and-that-s-a-mighty-long-time" tabindex="-1">it means forever and that&#39;s a mighty long time. <a class="header-anchor" href="#it-means-forever-and-that-s-a-mighty-long-time" aria-label="Permalink to &quot;it means forever and that&#39;s a mighty long time.&quot;">​</a></h2></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[recode]]></title>
            <link>https://chris.pelatari.com/posts/2016-04-20-recode</link>
            <guid>https://chris.pelatari.com/posts/2016-04-20-recode</guid>
            <pubDate>Wed, 20 Apr 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I noticed that github pages has updated its jekyll version, so to keep up I&#39;ve decided to start over again.</p><h3 id="simpler-is-better" tabindex="-1">simpler is better. <a class="header-anchor" href="#simpler-is-better" aria-label="Permalink to &quot;simpler is better.&quot;">​</a></h3><p>I also added a default Rakefile <a href="https://github.com/gummesson/jekyll-rake-boilerplate" target="_blank" rel="noreferrer">from here</a></p><p>this makes it easier to start posts.</p><p>Next I think I will be adding an archive page.</p><p>-c</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Running 1Password on Debian Linux]]></title>
            <link>https://chris.pelatari.com/posts/2016-04-05-running-1password-on-debian-linux</link>
            <guid>https://chris.pelatari.com/posts/2016-04-05-running-1password-on-debian-linux</guid>
            <pubDate>Tue, 05 Apr 2016 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="this-is-how-i-got-1password-for-windows-v4-6-0-604-running-on-debian-linux" tabindex="-1">This is how I got 1Password for Windows v4.6.0.604 running on Debian Linux <a class="header-anchor" href="#this-is-how-i-got-1password-for-windows-v4-6-0-604-running-on-debian-linux" aria-label="Permalink to &quot;This is how I got 1Password for Windows v4.6.0.604 running on Debian Linux&quot;">​</a></h2><p>The first thing I tried was just running the installer with wine at the terminal.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chris@Callisto:~/Downloads$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> wine</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 1Password-4.6.0.604.exe</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">wine:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Bad</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> EXE</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> format</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> for</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Z:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\h</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ome</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\c</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hris</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\D</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ownloads</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\1</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Password-4.6.0.604.exe.</span></span></code></pre></div><p>Well crap. what does that mean? Could the 1Password installer be 32bit, while my system is 64? Bingo. You won&#39;t find that info on the <a href="https://support.1password.com/1password-in-wine/" target="_blank" rel="noreferrer">official AgileBits walkthrough</a>.</p><p>So instead of using the terminal, I turned to PlayOnLinux, which gives more options for installation.</p><p>I don&#39;t know if this was a requirement, but I chose wine version 1.4.1 in PlayOnLinux, also the 32 bit installation. Browsed the 1Password.4.6.0.604.exe file and ran the installer like normal. It even accepted my license key.</p><h4 id="now-i-have-a-working-1password-installation-on-my-debian-linux-machine" tabindex="-1">Now I have a working 1Password installation on my Debian Linux machine <a class="header-anchor" href="#now-i-have-a-working-1password-installation-on-my-debian-linux-machine" aria-label="Permalink to &quot;Now I have a working 1Password installation on my Debian Linux machine&quot;">​</a></h4><p>hth</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[switched engines again]]></title>
            <link>https://chris.pelatari.com/posts/2015-10-07-switched-engines-again</link>
            <guid>https://chris.pelatari.com/posts/2015-10-07-switched-engines-again</guid>
            <pubDate>Wed, 07 Oct 2015 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>this time from WordPress to jekyll. I had already toyed with getting some content over into jekyll along with a few extra tools in Jekyll-bootstrap. WordPress was winning the blog wars at the time and the import from my previous engine (dotText) seemed more complete over there.</p><p>But jekyll plays to my geek tendencies. Markdown makes authoring posts fairly easy and eliminates the need for a blog posting tool - which is how I spent a lot of my spare time about a decade ago.</p><p>I imported the WordPress content using a tool called <a href="https://github.com/theaob/wpXml2Jekyll" target="_blank" rel="noreferrer">wpXml2Jekyll</a>. It was very straightforward, I like that. Bonus: despite being a &quot;windows&quot; application, it works on OS X using Mono. Simply add mono to the beginning of the command:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mono</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> wpXml2Jekyll.exe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [wordpress </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">export</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> file]</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [output </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">directory]</span></span></code></pre></div><p>I think I still have to go thru some posts for some broken images, transfer some over etc. fairly simple transition tho.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Debian Linux]]></title>
            <link>https://chris.pelatari.com/posts/2015-10-07-debian-linux</link>
            <guid>https://chris.pelatari.com/posts/2015-10-07-debian-linux</guid>
            <pubDate>Wed, 07 Oct 2015 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="i-have-recently-been-going-thru-the-process-of-moving-some-current-web-properties-from-asp-net-mvc-to-ruby-on-rails" tabindex="-1">I have recently been going thru the process of moving some current web properties from asp.net mvc to ruby on rails. <a class="header-anchor" href="#i-have-recently-been-going-thru-the-process-of-moving-some-current-web-properties-from-asp-net-mvc-to-ruby-on-rails" aria-label="Permalink to &quot;I have recently been going thru the process of moving some current web properties from asp.net mvc to ruby on rails.&quot;">​</a></h2><p>In the past, I have toyed with the idea of moving to rails, enough to get some prototype code running. I feel that the framework has matured quite a bit and it seems like a logical tool to use for rapid, maintainable web development. The last push to go ahead and put some real work into this idea has come with the most recent updates to asp.net. I really like the idea of being able to hack asp.net sites on OS X, and I will see if a transition within .net is doable or desirable in the future. For now tho, if I have to learn a whole new paradigm I might as well learn a new framework while I&#39;m at it. Routing is one area that seems more powerful in rails - mvc routing is very similar and probably as powerful. For now, I want to see how those dirty rails hippies live.</p><p>In my quest to learn rails, I needed a dual-boot environment to run alongside windows. I chose debian linux because it seems like it has access to most of the stuff that I need. Debian&#39;s installer was pretty impressive. It has a setup.exe that runs from within windows. At first I burned the CD incorrectly (just copied the iso) but after getting that sorted debian installed, put a grub loader in the mbr, and boom I was ready to roll.</p><p>After double checking that the dual-boot installed properly, I needed a few tools.</p><p>I started with Chromium for the default browser, and then found dropbox and keepass2 and installed those for some xplat love.</p><ul><li><a href="http://atom.io" target="_blank" rel="noreferrer">Atom editor</a></li><li>git</li><li>sudo</li><li><a href="http://rvm.io" target="_blank" rel="noreferrer">rvm</a></li><li>bundler</li></ul><p>apt-get is the package manager on debian. Atom has a .deb package available for download. I got it installed with dpkg.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dpkg</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> atom-amd64.deb</span></span></code></pre></div><p>ah, but that didn&#39;t install all the way. Looking at the logs told me that it was missing git. okay. here is where I started to run into permission problems, so I tried running sudo only to find it not installed by default. 😦</p><p>it did have su, so I ran under su:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sudo</span></span></code></pre></div><p>now I have sudo, but I&#39;m not listed as a sudoer. So, still under su:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">visudo</span></span></code></pre></div><p>and add the appropriate permissions.</p><p>now, I can install git.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git</span></span></code></pre></div><p>git is there. but atom still fails to install. apt-get to the rescue again:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span></code></pre></div><p>and that solved it for me.</p><p>Next, I needed rvm so I installed it using curl (also not available by default). rvm is very helpful in its messages, so after getting everything sorted there, and restarting the terminal, I could now install and execute bundler. I had to do a couple of extra steps to get postgresql installed locally, adding myself as a user with createdb access. But it worked. In one day.</p><h3 id="i-now-have-windows-7-10-os-x-and-debian-linux-installed-and-i-use-all-of-them-for-development" tabindex="-1">I now have windows 7, 10, OS X, and Debian linux installed and I use all of them for development. <a class="header-anchor" href="#i-now-have-windows-7-10-os-x-and-debian-linux-installed-and-i-use-all-of-them-for-development" aria-label="Permalink to &quot;I now have windows 7, 10, OS X, and Debian linux installed and I use all of them for development.&quot;">​</a></h3></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I forgot.]]></title>
            <link>https://chris.pelatari.com/posts/2014-08-25-i-forgot</link>
            <guid>https://chris.pelatari.com/posts/2014-08-25-i-forgot</guid>
            <pubDate>Mon, 25 Aug 2014 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>About 6 years ago I joined twitter. I found an outlet for random ideas with a small constraint: 140 characters or less. And I abused the fuck out of it. So much so that I forgot that I had this little slice of web that nobody reads but me. I forgot that I hadn&#39;t logged into this app for long enough that it blasted the original post abt this topic that I wrote 20 minutes ago. I forgot that I own this, and I can post whatever the fuck I want. I forgot how easy it was, and I forgot that one only becomes a better writer thru writing more.</p><p>I forgot.</p><p>I forgot all the hours I spent taking this blog from aspnetweblogs, to a personal instal of .Text, to an updated version of SubText, thru a few upgrades of same, on to this very Wordpress that you are reading now. I forgot abt using this blog as a test platform for my (now defunct) winforms project called postxing, meant for cross-posting blog posts that receive more traffic on a more publicized feed for geeky content.</p><p>Most importantly, I forgot that I do this for me, not for any &quot;readers&quot;. It&#39;s easy to get caught up in what other, more read bloggers write and emulate what you think &quot;works&quot;. Nah fuck that. This thing is for me, not you. If you get something out of it, great. If not, great. But it&#39;s not for you. It&#39;s for me.</p><p>And I remember now.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Did I lose that post?]]></title>
            <link>https://chris.pelatari.com/posts/2014-08-25-did-i-lose-that-post</link>
            <guid>https://chris.pelatari.com/posts/2014-08-25-did-i-lose-that-post</guid>
            <pubDate>Mon, 25 Aug 2014 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Looks like I did. Oh well. You&#39;ll never see the glory of that shitty post. Fuck it.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Opening Visual Studio with Rake]]></title>
            <link>https://chris.pelatari.com/posts/2014-08-06-opening-visual-studio-with-rake</link>
            <guid>https://chris.pelatari.com/posts/2014-08-06-opening-visual-studio-with-rake</guid>
            <pubDate>Wed, 06 Aug 2014 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>There are probably several ways to do this, here’s how I did.</p><p>rakefile.rb:</p><div class="language-ruby vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ruby</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">DIR</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> File</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dirname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">__FILE__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">desc </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Starts Visual Studio with the project solution.&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">task </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">:vs</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> do</span></span>
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> sln</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> = </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">#{</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">DIR</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/src/project.sln&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">gsub!</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> system</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;start </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">#{sln}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> )</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">end</span></span></code></pre></div><p>That’s it! From a cmd shell type “rake vs” and Visual Studio will start with the specified solution file.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hi.]]></title>
            <link>https://chris.pelatari.com/posts/2014-05-12-hi</link>
            <guid>https://chris.pelatari.com/posts/2014-05-12-hi</guid>
            <pubDate>Mon, 12 May 2014 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Hello. How ya durrin?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Wheelers for a cause]]></title>
            <link>https://chris.pelatari.com/posts/2013-07-28-WFAC</link>
            <guid>https://chris.pelatari.com/posts/2013-07-28-WFAC</guid>
            <pubDate>Sun, 28 Jul 2013 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Went to Texas Off Road Ranch in Huntsville with <a href="./tx4wd.org">tx4wd</a> to have a little fun run. The for a cause part was for 5th ward dogs so we brought dog food for $10 off the $30 admission. So, helped some animals and got to wheel a little bit to boot.</p><p>Probably the best part of Tx Off Road Ranch is the playground. You can tell someone has been out there quite a bit to make some fun sandstone obstacles. Plus, earlier in the day it wasn&#39;t that hot. (I ended up getting so overheated that I quite literally almost passed out. So I burnt out early.)</p><p>Other than that, the park doesn&#39;t have that much to offer. They seem to have 2 trail levels there: 2 wheel drive easy and fucking impossible. It&#39;s the sandstone I think. On the only extreme trail they have there, all of the boulders <em>look</em> nice and stable, but try crawling up them and they shoot out from under your tires. No bueno.</p><p>After trying a couple of the harder trails we went back for lunch and bullshittin. I helped someone get their JKU back in 2H, having recently replaced my transfer case shifter cable with an <a href="http://www.advanceadapters.com/products/715596--heavy-duty-jk-cable-shifter-upgrade/" target="_blank" rel="noreferrer">Advanced Adapters cable shifter upgrade</a> because of the same flimsy plastic clip issue they suffered. Since I&#39;d just done the upgrade I had become quite familiar with the mechanics of how the stock system comes and why it&#39;s a dumb design. I&#39;m sure you could get away with buying the cheap plastic clips and replacing them for a while. The second one that broke on me caused me to go ahead and get the upgrade, personally.</p><p>Right before lunch, but after we got back from the trails to the camping area, I let  sorry, Chris Jr. drive the Jeep for the first time. I was fairly nervous but I didn&#39;t freak out, mainly because we would be going at very slow speeds in a vehicle that I have been building up for the past year and a half to be safe even in extreme conditions. I jacked the driver&#39;s seat up as far as it would go, pulled it really far forward and told him, &quot;Turn the ignition, and put her in Drive.&quot;</p><p>Young Christopher did very well for his first try! Hell, he did better than a lot of people I took my driving test with so many years ago in Alief. I had to first explain very explicitly how to operate the pedals, and I guided him around the camp area for a couple of laps. He was outstanding at taking direction and focused very hard on doing exactly what I was telling him to do. He even got kudos from Brian. I appreciated that, like a lot.</p><p>Very proud dad, very hot day.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[github flow]]></title>
            <link>https://chris.pelatari.com/posts/2013-07-16-github-flow</link>
            <guid>https://chris.pelatari.com/posts/2013-07-16-github-flow</guid>
            <pubDate>Tue, 16 Jul 2013 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="what-is-github-flow" tabindex="-1">What is github flow? <a class="header-anchor" href="#what-is-github-flow" aria-label="Permalink to &quot;What is github flow?&quot;">​</a></h2><p>I will let <a href="https://github.com/blog/1557-github-flow-in-the-browser" target="_blank" rel="noreferrer">them explain that.</a> I guess the basic idea is to simplify the way git flow encourages you to organize branches.</p><p>I&#39;m glad that I <a href="http://chrispelatari.github.io/2013/07/07/git-flow-and-github-for-windows/" target="_blank" rel="noreferrer">know how to install git flow</a> and I like the structure that it enables, but simpler is better.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <link>https://chris.pelatari.com/posts/2013-07-07-git-flow-and-github-for-windows</link>
            <guid>https://chris.pelatari.com/posts/2013-07-07-git-flow-and-github-for-windows</guid>
            <pubDate>Sun, 07 Jul 2013 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><h2 id="what-no-getopt" tabindex="-1">what, no getopt? <a class="header-anchor" href="#what-no-getopt" aria-label="Permalink to &quot;what, no getopt?&quot;">​</a></h2><p>Every time <a href="http://windows.github.com" target="_blank" rel="noreferrer">github for windows</a> updates, I lose git-flow. The portable git that is extracted with the install doesn&#39;t include getopt.exe, which is needed to install and use git-flow on windows.</p><h2 id="start-with-the-git-flow-repository" tabindex="-1">start with the git-flow repository <a class="header-anchor" href="#start-with-the-git-flow-repository" aria-label="Permalink to &quot;start with the git-flow repository&quot;">​</a></h2><p>clone the <a href="https://github.com/nvie/gitflow" target="_blank" rel="noreferrer">git-flow repository</a></p><p>when you cd to contrib and run msysgit-install.cmd from the cmd line, it says</p><blockquote><p>MsysGit installation directory not found. Try to give the directory name on the command line: msysgit-install &quot;C:\Program Files (x86)\Git&quot;</p></blockquote><p>So now you have to find the install directory and try to add that to the msysgit-install cmd line. This time, in my case it was</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>&gt; msysgit-install &quot;C:\Users\Chris\AppData\Local\GitHub\PortableGit_015aa71ef18c047ce8509ffb2f9e4bb0e3e73f13&quot;</span></span>
<span class="line"><span>&gt; Installing gitflow into &quot;C:\Users\Chris\AppData\Local\GitHub\PortableGit_015aa71ef18c047ce8509ffb2f9e4bb0e3e73f13&quot;...</span></span></code></pre></div><h2 id="but-wait-there-s-more" tabindex="-1">But wait there&#39;s more! <a class="header-anchor" href="#but-wait-there-s-more" aria-label="Permalink to &quot;But wait there&#39;s more!&quot;">​</a></h2><p>Now it tells us that getopt.exe is not found. Go to the git-flow repository page for <a href="https://github.com/nvie/gitflow/wiki/Windows" target="_blank" rel="noreferrer">manual install instructions</a> which pretty much outlines the same steps I&#39;m typing right now, so...moving right along</p><p>follow the links to <a href="http://gnuwin32.sourceforge.net/packages/util-linux-ng.htm" target="_blank" rel="noreferrer">getopt.exe</a> and <a href="http://gnuwin32.sourceforge.net/packages/libintl.htm" target="_blank" rel="noreferrer">libintl3</a> and copy them to your portablegit bin directory. now when you run msysgit-install with the directory parameter, git flow installs. w00t!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Using git flow with github for windows]]></title>
            <link>https://chris.pelatari.com/posts/2012-07-02-using-git-flow-with-github-for-windows</link>
            <guid>https://chris.pelatari.com/posts/2012-07-02-using-git-flow-with-github-for-windows</guid>
            <pubDate>Mon, 02 Jul 2012 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I like <a href="http://windows.github.com">github for windows</a>. Seriously, they did a great job with it - kudos, <a href="http://haacked.com">Phil</a>. I like that it has an updateable bash shell ala msysgit. I also like to use <a href="http://github.com/nvie/gitflow">git-flow</a> but alas, this isn’t included with the release. Here is how I got it installed on my system anyway:</p><p>First, I cloned the gitflow repository (using github for windows) then opened the shell there. The readme says there is a cmd script in the contrib folder called msysgit-install.cmd so I tried to use this but the script told me it couldn’t find getopt:</p><p><a href="http://chrispelatari.files.wordpress.com/2012/07/get-opt-not-found.png"><img class="alignnone size-full wp-image-1130" alt="get-opt-not-found" src="http://chrispelatari.files.wordpress.com/2012/07/get-opt-not-found.png" width="593" height="88"></a></p><p>boo.</p><p>Fortunately, I have the other install of <a href="http://code.google.com/p/msysgit/">msysgit</a> on my machine so I copied getopt.exe from C:Program FilesGitbin to that fancy path in the image above, along with some supporting dlls</p><p><a href="http://chrispelatari.files.wordpress.com/2012/07/cygwindlls.png"><img class="alignnone size-full wp-image-1131" alt="cygwindlls" src="http://chrispelatari.files.wordpress.com/2012/07/cygwindlls.png" width="109" height="87"></a></p><p>After doing this, running msysgit-install.cmd copied over the necessary files, and I was able to cd to a repository with only master and develop branches and run git flow init.</p><p><a href="http://chrispelatari.files.wordpress.com/2012/07/git-flow-init.png"><img class="alignnone size-full wp-image-1132" alt="git-flow-init" src="http://chrispelatari.files.wordpress.com/2012/07/git-flow-init.png" width="593" height="343"></a></p><p>Next step: a feature request to the github for windows team to ask for maybe including at least getopt if not git-flow in the next release?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Same]]></title>
            <link>https://chris.pelatari.com/posts/2012-03-31-same</link>
            <guid>https://chris.pelatari.com/posts/2012-03-31-same</guid>
            <pubDate>Sat, 31 Mar 2012 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Same.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Underbelly project in my living room]]></title>
            <link>https://chris.pelatari.com/posts/2012-03-09-underbelly-project-in-my-living-room</link>
            <guid>https://chris.pelatari.com/posts/2012-03-09-underbelly-project-in-my-living-room</guid>
            <pubDate>Fri, 09 Mar 2012 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It started when I saw a piece from the underbelly project NYC by <a href="http://joeiurato.wordpress.com/">:01</a>.</p><p>It inspired me. I think it&#39;s beautiful. So I made a <a href="http://instagr.am/p/nCCrW/">transparency of it</a> to cut my own stencils.</p><img class="alignnone" title=":01 transparency" src="http://distilleryimage6.s3.amazonaws.com/3b4404624d4e11e180c9123138016265_7.jpg" alt=":01 transparency" width="612" height="612"><p>This is my first piece. I&#39;m using Joe&#39;s art as a guideline. I think I may switch up the words a bit since my living room has no upstairs. 😃 (not pictured: it says &quot;the people upstairs are crazy&quot;)</p><p>I hope that my reproduction honors the original work, and conveys the respect of the student to a very talented mentor. I will post more pics of my progress soon.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[GIT flow on windows 7 with msysgit]]></title>
            <link>https://chris.pelatari.com/posts/2010-09-30-git-flow-on-windows-7-with-msysgit</link>
            <guid>https://chris.pelatari.com/posts/2010-09-30-git-flow-on-windows-7-with-msysgit</guid>
            <pubDate>Thu, 30 Sep 2010 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>this is <a href="http://http://github.com/nvie/gitflow/issues/issue/25">outlined on github</a> by psampaio:</p> <blockquote><p>I managed to get git flow working with msysGit, but needed some hacks on my setup. First, I copied all the git* files to libexecgit-core. Then replaced shFlags like snaewe mentioned, but &lt;install_dir&gt; for me was also libexecgit-core.</p> <p>Git flow complained about getopt. I got it from cygwin (package utils_linux*) and copied the getopt.exe to the bin folder. Also had to copy 4 more files from cygwin to the bin folder (cyggcc_s-1.dll, cygiconv-2.dll, cygintl-8.dll and cygwin1.dll).</p> <p>Like I said in the beginning, this is a hacky solution but it did work for me.</p></blockquote> <p>I simply followed what they said and have gotten this working on a few windows 7 machines. I even took it a step further and created a couple of zip files of the dlls and scripts required: <a href="http://dl.dropbox.com/u/88271/bin.zip">bin.zip</a> and <a href="http://dl.dropbox.com/u/88271/git-core.zip">git-core.zip</a></p> <p>To install these for mSysGit:</p> <ol><li>copy bin.zip to C:Program FilesGit </li> <li>unzip bin.zip </li> <li>copy git-core.zip to C:Program FilesGitlibexec </li> <li>unzip git-core.zip </li></ol> <p> </p> <p>[it’s important that they are unzipped from the correct place, but you knew that :)]</p> <p>and that’s all there is to it. you should now be able to go to a git repository on windows with mSysGit, type git flow init, and be presented with the git flow setup prompts.</p> <p>enjoy!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ASP.NET MVC - Faking ControllerContext to test HttpContext.Current.User and IPrincipal]]></title>
            <link>https://chris.pelatari.com/posts/2010-06-22-asp-net-mvc-faking-controllercontext-to-test-httpcontext-current-user-and-iprincipal</link>
            <guid>https://chris.pelatari.com/posts/2010-06-22-asp-net-mvc-faking-controllercontext-to-test-httpcontext-current-user-and-iprincipal</guid>
            <pubDate>Tue, 22 Jun 2010 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This was pretty straightforward but I didn&#39;t find it written up anywhere on the web so here goes. What follows is how I addressed testing IPrincipal in ASP.NET MVC using <a href="http://xunit.codeplex.com/" target="_blank" rel="noreferrer">xunit.net</a></p><p>Let&#39;s start with the test:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Fact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> changes_password</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  //arrange</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> controller</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ObjectFactory.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetInstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AccountController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  controller.ControllerContext </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestControllerContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  //act</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> result</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> controller.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ChangePassword</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;password&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;p455w0rd&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;p455w0rd&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  //assert</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> viewResult</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Assert.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IsType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">RedirectToRouteResult</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;(result);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span></code></pre></div><p>notice line 5. why are we setting a custom ControllerContext here? ControllerContext tells the current controller about things like HttpContext, which will be unavailable during tests (whoops!) This is needed because somewhere in the Action code, I am making a call into User.Identity.Name, which is supplied by HttpContext at runtime. Again, since this isn&#39;t available during testing, I have to tell the controller how to find the fake httpcontext used then.</p><p>For this project, I&#39;m using simple hand-rolled stubs. Here is the code for TestControllerContext:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestControllerContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ControllerContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> override</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Web</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">HttpContextBase</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> HttpContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      return</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestHttpContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    set</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">      base</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.HttpContext </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>instead of returning the runtime HttpContext (which doesn&#39;t exist, remember) I&#39;m supplying another hand-rolled stub. Here is that code:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestHttpContext</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">HttpContextBase</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> override</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Security</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Principal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IPrincipal</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> User</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      return</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestPrincipal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    set</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">      base</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.User </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>again, same principal 😃 because I&#39;m concerned about calling into User for the Identity.Name property, I return another stub that implements IPrincipal. Here is that code:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestPrincipal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IPrincipal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> IIdentity</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Identity</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GenericIdentity</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;you@me.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">); }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> bool</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> IsInRole</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> role</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    throw</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> NotImplementedException</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>now, when the controller code that was calling User.Identity.Name is tested, it will return the name <a href="mailto:you@me.com" target="_blank" rel="noreferrer">you@me.com</a>. Line 11 of the test code above asserts the test passes because if an error occurred, I would redisplay the form with errors shown using the View() method. A redirect says that the change password op worked:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (MembershipService.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ChangePassword</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(User.Identity.Name, currentPassword, newPassword))</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  return</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RedirectToAction</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;ChangePasswordSuccess&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span></code></pre></div><p>hth.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Sunburst Font & Color scheme for Visual Studio 2010]]></title>
            <link>https://chris.pelatari.com/posts/2010-04-20-sunburst-font-color-scheme-for-visual-studio-2010</link>
            <guid>https://chris.pelatari.com/posts/2010-04-20-sunburst-font-color-scheme-for-visual-studio-2010</guid>
            <pubDate>Tue, 20 Apr 2010 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Here is a clone of the TextMate theme &quot;Sunburst&quot; for Visual Studio 2010: <a href="http://bluefenix.net/etc/blue_fenix_sunburst_lite.zip">http://bluefenix.net/etc/blue_fenix_sunburst_lite.zip</a></p><p>I just guessed on the colors since I had to translate from mac colors to windows, but the result is pretty effective for me. enjoy!</p><p>update: I changed the colors to use the actual rgb values from textmate.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Unable to find the requested .Net Framework Data Provider.  It may not be installed.]]></title>
            <link>https://chris.pelatari.com/posts/2010-04-06-unable-to-find-the-requested-net-framework-data-provider-it-may-not-be-installed</link>
            <guid>https://chris.pelatari.com/posts/2010-04-06-unable-to-find-the-requested-net-framework-data-provider-it-may-not-be-installed</guid>
            <pubDate>Tue, 06 Apr 2010 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div class="language-xml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">system.data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">DbProviderFactories</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">remove</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> invariant</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;System.Data.SQLite&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">add</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;SQLite Data Provider&quot;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">        invariant</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;System.Data.SQLite&quot;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">        description</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;.Net Framework Data Provider for SQLite&quot;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">        type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;System.Data.SQLite.SQLiteFactory, System.Data.SQLite&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  &lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">DbProviderFactories</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">system.data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span></code></pre></div><p>this happened to me using subsonic on an x64 machine. adding the x64 binary to /bin and adding the above to my web.config got me sorted.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[How to resolve a binary file conflict with Git]]></title>
            <link>https://chris.pelatari.com/posts/2010-03-05-how-to-resolve-a-binary-file-conflict-with-git</link>
            <guid>https://chris.pelatari.com/posts/2010-03-05-how-to-resolve-a-binary-file-conflict-with-git</guid>
            <pubDate>Fri, 05 Mar 2010 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.lostechies.com/blogs/joshuaflanagan/archive/2010/01/28/how-to-resolve-a-binary-file-conflict-with-git.aspx">http://www.lostechies.com/blogs/joshuaflanagan/archive/2010/01/28/how-to-resolve-a-binary-file-conflict-with-git.aspx</a></p><p>Thank you for that!</p><p>Although the message at the end of git status says use git checkout -- &lt;file&gt;, that&#39;s not it.</p><p>&quot;If you prefer to resolve the conflict using their copy, you need to get the version of the file from the branch you were trying to merge in: </p><p></p><pre>git checkout otherbranch somefile.dll&quot;</pre><p></p><p>sweet.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Scanning for Test implementation classes using StructureMap with xunit]]></title>
            <link>https://chris.pelatari.com/posts/2010-02-18-scanning-for-test-implementation-classes-using-structuremap-with-xunit</link>
            <guid>https://chris.pelatari.com/posts/2010-02-18-scanning-for-test-implementation-classes-using-structuremap-with-xunit</guid>
            <pubDate>Thu, 18 Feb 2010 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I have an <a href="http://xunit.codeplex.com/" target="_blank" rel="noreferrer">xunit test project</a> that is using hand-rolled stubs as concrete implementations of interfaces. <a href="http://structuremap.sourceforge.net/Default.htm" target="_blank" rel="noreferrer">StructureMap</a> is the DI container I&#39;m using. I was looking at the names of my stubs, and they followed the convention of TestXYZ as the concrete implementation of IXYZ.</p><p>To use <a href="http://structuremap.sourceforge.net/Default.htm" target="_blank" rel="noreferrer">StructureMap</a> from <a href="http://xunit.codeplex.com/" target="_blank" rel="noreferrer">xunit tests</a>, I created a base class for any fact class that wanted to use ObjectFactory. In the base class ctor, I call the bootstrapper&#39;s ConfigureStructureMap method.</p><p>At first I just had a bunch of</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">x.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ForRequestedType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IXYZ</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">TheDefaultIsConcreteType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">TestXYZ</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;();</span></span></code></pre></div><p>because I had only a handful of stubs and I didn&#39;t quite grasp how to scan like the default scanner, only adding &quot;Test&quot; to the beginning of the class name.</p><p>Then I found the <a href="http://www.bjoernrochel.de/2009/07/24/cutting-the-fluff-from-service-registration-or-how-to-do-funky-stuff-with-coc-castledynamicproxy-structuremap/" target="_blank" rel="noreferrer">secret sauce over here</a>, via a method called FindPluginType.</p><p>Here is my bootstrapper code for my <a href="http://xunit.codeplex.com/" target="_blank" rel="noreferrer">xunit test project</a>:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TestScanner</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ITypeScanner</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Process</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">PluginGraph</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> graph</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(type.Name.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">StartsWith</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Test&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> pluginType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FindPluginType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(type);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(pluginType </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      graph.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">AddType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(pluginType, type);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }				</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  static</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FindPluginType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> concreteType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    var</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> interfaceName</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;I&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> concreteType.Name.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Replace</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Test&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> concreteType.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetInterfaces</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Where</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =&gt;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Equals</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(t.Name, interfaceName, StringComparison.Ordinal)).</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">FirstOrDefault</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> static</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Bootstrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> static</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ConfigureStructureMap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    ObjectFactory.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Initialize</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">x</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        x.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Scan</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">s</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            s.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">TheCallingAssembly</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            s.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">WithDefaultConventions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            s.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">With</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">TestScanner</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>What results is essentially the <a href="http://structuremap.sourceforge.net/ScanningAssemblies.htm#section9" target="_blank" rel="noreferrer">DefaultConventionScanner</a>, only it&#39;s looking for TestXYZ as the concrete implementation of IXYZ.</p><p>Killer.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Deran Schilling, Learner]]></title>
            <link>https://chris.pelatari.com/posts/2009-12-29-deran-schilling-learner</link>
            <guid>https://chris.pelatari.com/posts/2009-12-29-deran-schilling-learner</guid>
            <pubDate>Tue, 29 Dec 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Check this: &quot;<a href="http://feedproxy.google.com/~r/derans/~3/AJiK02ER6Ws/automapper-aspnet-mvc.html">AutoMapper - ASP.NET MVC</a>&quot; on <a href="http://derans.blogspot.com/">Deran Schilling, Learner</a>. </p><p>I&#39;ve been catching up on Deran&#39;s posts about his wife&#39;s portfolio site. I&#39;m quite enjoying the explanation of his thought process while building out the application. That is all.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[What to do if your Windows 2008 install won't activate complaining about no KMS server]]></title>
            <link>https://chris.pelatari.com/posts/2009-12-29-what-to-do-if-your-windows-2008-install-wont-activate-complaining-about-no-kms-server</link>
            <guid>https://chris.pelatari.com/posts/2009-12-29-what-to-do-if-your-windows-2008-install-wont-activate-complaining-about-no-kms-server</guid>
            <pubDate>Tue, 29 Dec 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Basically this is what happened:<br><br>The MSDN subscriptions version of Windows Server 2008 installs by default using KMS (Key Management Service).<br>The key MSDN gave is a MAK (Multiple Activation Key).<br>So the install does not use the key, it tries to talk to KMS.<br>We don&#39;t have KMS here so it fails.<br><br>Doing the following activates it using the MAK key:<br><br>1) Open a cmd shell as Administrator.<br>2) Type the following (but use your key instead of all the X&#39;s)<br><br>slmgr -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX<br><br>3) The prompt will return right away, but there is a licensing task that it started (if you look in Task Manager you can find a task SLsvc using up cpu, I assume this is where the licensing is going on).<br>4) After a while a dialog will pop up saying that it has been activated.<br><br>Good Luck</p><p>above was lifted from a forum post. buried in there is the command line to bypass KMS and use the proper MAK instead. It worked!</p><p>In the process of figuring this out, MSFT had me download a video explaining how to setup a KMS, one of the requirements is that you need 5 servers to contact KMS before it will work. That&#39;s fucking retarded. If I&#39;m paying for a product, I expect that I&#39;m paying for <strong>ease of use.</strong> Making your paying customers bend over backwards to use the product you are selling is unsustainable, bad business. You can do better than that, Microsoft.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan and Lord Nobleton!]]></title>
            <link>https://chris.pelatari.com/posts/2009-10-03-ethan-and-lord-nobleton</link>
            <guid>https://chris.pelatari.com/posts/2009-10-03-ethan-and-lord-nobleton</guid>
            <pubDate>Sat, 03 Oct 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3978208629/" title="photo sharing"><img src="http://farm3.static.flickr.com/2440/3978208629_595e40298f.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3978208629/">Ethan and Lord Nobleton!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Bankai! New ink - Kurosaki Ichigo hollow mask]]></title>
            <link>https://chris.pelatari.com/posts/2009-08-29-bankai-new-ink-kurosaki-ichigo-hollow-mask</link>
            <guid>https://chris.pelatari.com/posts/2009-08-29-bankai-new-ink-kurosaki-ichigo-hollow-mask</guid>
            <pubDate>Sat, 29 Aug 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3869383488/" title="photo sharing"><img src="http://farm4.static.flickr.com/3487/3869383488_bfe017b555.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3869383488/">Bankai! New ink - Kurosaki Ichigo hollow mask</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> --<br> -Christopher | <a href="http://bluefenix.net" rel="nofollow">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Homemade Don Juan Especial!]]></title>
            <link>https://chris.pelatari.com/posts/2009-07-27-homemade-don-juan-especial</link>
            <guid>https://chris.pelatari.com/posts/2009-07-27-homemade-don-juan-especial</guid>
            <pubDate>Mon, 27 Jul 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="padding:3px;text-align:left;"><a href="http://www.flickr.com/photos/blue_fenix/3762764451/" title="photo sharing"><img src="http://farm3.static.flickr.com/2508/3762764451_fdd1649547.jpg" style="border:2px solid rgb(0,0,0);" alt=""></a> <br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3762764451/">Homemade Don Juan Especial!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> I haven&#39;t been to Austin, tx in a while and was craving my favorite<br> brakfast taco from Juan in a Million, the Don Juan Especial.<br><br> This taco was the subject of an episode of man vs. food, where the<br> host described how it is prepared, so I figured I&#39;d give it a shot.<br><br> This is what I came up with.<br><br> Recipe transcribed from man vs. food:<br><br> 1 Idaho potato, boiled &amp; cubed<br> &quot;dash&quot; of salt, paprika, black pepper<br> 2 strips of bacon, chopped<br> 2 fresh eggs<br><br> Bring ingredients together in a frying pan on medium high heat, mix<br> together &amp; cook for 5-10 minutes, scoop onto tortilla, top with cheese.<br><br> Enjoy!<br> --<br> -Christopher | <a href="http://bluefenix.net" rel="nofollow">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New ink - Japanese devil mask!]]></title>
            <link>https://chris.pelatari.com/posts/2009-04-23-new-ink-japanese-devil-mask</link>
            <guid>https://chris.pelatari.com/posts/2009-04-23-new-ink-japanese-devil-mask</guid>
            <pubDate>Thu, 23 Apr 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3467963904/" title="photo sharing"><img src="http://farm4.static.flickr.com/3612/3467963904_db3db5ce20.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3467963904/">New ink: Japanese devil mask!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> Ink by Rob of Nice Guyz.<br> Arigato gozai mashta! XD<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New ink - killer octopus!]]></title>
            <link>https://chris.pelatari.com/posts/2009-04-17-new-ink-killer-octopus</link>
            <guid>https://chris.pelatari.com/posts/2009-04-17-new-ink-killer-octopus</guid>
            <pubDate>Fri, 17 Apr 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3449613064/" title="photo sharing"><img src="http://farm4.static.flickr.com/3329/3449613064_ce79ac0936.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3449613064/">New ink: killer octopus!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> Ink by Rob of Nice Guyz.<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New ink - hacker emblem]]></title>
            <link>https://chris.pelatari.com/posts/2009-04-09-new-ink-hacker-emblem</link>
            <guid>https://chris.pelatari.com/posts/2009-04-09-new-ink-hacker-emblem</guid>
            <pubDate>Thu, 09 Apr 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3427301041/" title="photo sharing"><img src="http://farm4.static.flickr.com/3325/3427301041_db4f282caf.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3427301041/">New ink: hacker emblem</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Kevin Devine @ Mohawk's]]></title>
            <link>https://chris.pelatari.com/posts/2009-03-18-kevin-devine-mohawks-sxsw</link>
            <guid>https://chris.pelatari.com/posts/2009-03-18-kevin-devine-mohawks-sxsw</guid>
            <pubDate>Wed, 18 Mar 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3366007768/" title="photo sharing"><img src="http://farm4.static.flickr.com/3427/3366007768_8c85d14a07.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3366007768/">Kevin Devine @ Mohawk&#39;s #sxsw</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> From Brooklyn.<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New ink - Hook ups girl]]></title>
            <link>https://chris.pelatari.com/posts/2009-03-03-new-ink-hook-ups-girl</link>
            <guid>https://chris.pelatari.com/posts/2009-03-03-new-ink-hook-ups-girl</guid>
            <pubDate>Tue, 03 Mar 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3327362112/" title="photo sharing"><img src="http://farm4.static.flickr.com/3399/3327362112_fabc1e227a.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3327362112/">New ink: Hook ups girl</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> She&#39;s a hottie, ain&#39;t she? XD<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[at the Rockets game vs Cleveland]]></title>
            <link>https://chris.pelatari.com/posts/2009-02-26-the-rockets-game-vs-cleveland</link>
            <guid>https://chris.pelatari.com/posts/2009-02-26-the-rockets-game-vs-cleveland</guid>
            <pubDate>Thu, 26 Feb 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3312224135/" title="photo sharing"><img src="http://farm4.static.flickr.com/3454/3312224135_fc9b0d0352.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3312224135/">@ the Rockets game vs Cleveland</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan & Ricky pup!]]></title>
            <link>https://chris.pelatari.com/posts/2009-02-20-ethan-ricky-pup</link>
            <guid>https://chris.pelatari.com/posts/2009-02-20-ethan-ricky-pup</guid>
            <pubDate>Fri, 20 Feb 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3296347384/" title="photo sharing"><img src="http://farm4.static.flickr.com/3452/3296347384_b3042e72aa.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3296347384/">Ethan &amp; Ricky pup!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[February ALT.NET Geek Dinner]]></title>
            <link>https://chris.pelatari.com/posts/2009-02-03-february-alt-net-geek-dinner</link>
            <guid>https://chris.pelatari.com/posts/2009-02-03-february-alt-net-geek-dinner</guid>
            <pubDate>Tue, 03 Feb 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ll be <a href="http://flux88.com/blog/february-alt-net-geek-dinner/">there</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan's a little snagglepuss!]]></title>
            <link>https://chris.pelatari.com/posts/2009-01-30-ethans-a-little-snagglepuss</link>
            <guid>https://chris.pelatari.com/posts/2009-01-30-ethans-a-little-snagglepuss</guid>
            <pubDate>Fri, 30 Jan 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3240022480/" title="photo sharing"><img src="http://farm4.static.flickr.com/3421/3240022480_74d437ea1e.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3240022480/">Ethan&#39;s a little snagglepuss!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The Don Juan Especiál]]></title>
            <link>https://chris.pelatari.com/posts/2009-01-25-the-don-juan-especial</link>
            <guid>https://chris.pelatari.com/posts/2009-01-25-the-don-juan-especial</guid>
            <pubDate>Sun, 25 Jan 2009 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3226520844/" title="photo sharing"><img src="http://farm4.static.flickr.com/3481/3226520844_eeda9a004f.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3226520844/">The Don Juan Especiál</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> Breakfast taco Nirvana from Juan in a million, Austin, TX<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan's got holiday spirit!]]></title>
            <link>https://chris.pelatari.com/posts/2008-12-20-ethans-got-holiday-spirit</link>
            <guid>https://chris.pelatari.com/posts/2008-12-20-ethans-got-holiday-spirit</guid>
            <pubDate>Sat, 20 Dec 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div style="text-align:left;padding:3px;"><a href="http://www.flickr.com/photos/blue_fenix/3124207360/" title="photo sharing"><img src="http://farm4.static.flickr.com/3240/3124207360_bd74b61103.jpg" style="border:solid 2px #000000;" alt=""></a><br><span style="font-size:.8em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3124207360/">Ethan&#39;s got holiday spirit!</a>, originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a>.</span></div><p> Hehe jingle this! Ethan just turned 7, and he&#39;s missing a bottom tooth!<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RAWR!]]></title>
            <link>https://chris.pelatari.com/posts/2008-11-22-rawr</link>
            <guid>https://chris.pelatari.com/posts/2008-11-22-rawr</guid>
            <pubDate>Sat, 22 Nov 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a title="photo sharing" href="http://www.flickr.com/photos/blue_fenix/3051935476/"><img style="border:2px solid rgb(0,0,0);" alt="" src="http://farm4.static.flickr.com/3031/3051935476_43055feeb9_m.jpg"></a> <br><span style="font-size:.9em;margin-top:0;"><a href="http://www.flickr.com/photos/blue_fenix/3051935476/">RAWR!</a> <br> Originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/">blue_fenix</a></span> RAWR! I eats teh turkee, you no has tanksgiving nao.<br><br> Halp!<br><br> --<br> -Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Andre 3 stacks in NY]]></title>
            <link>https://chris.pelatari.com/posts/2008-11-22-andre-3-stacks-in-ny</link>
            <guid>https://chris.pelatari.com/posts/2008-11-22-andre-3-stacks-in-ny</guid>
            <pubDate>Sat, 22 Nov 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><img src="https://chris.pelatari.com/assets/andre_3000.DVZwWBWH.jpg" alt="Andre 3 stacks in NY"></p><p>Originally uploaded by <a href="http://www.flickr.com/people/blue_fenix/" target="_blank" rel="noreferrer">blue_fenix</a></p><h2 id="i-ran-into-andre-3000-last-time-i-went-to-nyc-really-down-to-earth-dude" tabindex="-1">I ran into Andre 3000 last time I went to NYC. Really down to earth dude. <a class="header-anchor" href="#i-ran-into-andre-3000-last-time-i-went-to-nyc-really-down-to-earth-dude" aria-label="Permalink to &quot;I ran into Andre 3000 last time I went to NYC. Really down to earth dude.&quot;">​</a></h2><p>-Christopher | <a href="http://bluefenix.net">bluefenix.net</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[SubSonic 3.0 preview 2]]></title>
            <link>https://chris.pelatari.com/posts/2008-11-13-subsonic-3-0-preview-2</link>
            <guid>https://chris.pelatari.com/posts/2008-11-13-subsonic-3-0-preview-2</guid>
            <pubDate>Thu, 13 Nov 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://blog.wekeroad.com/blog/subsonic-3-0-preview-2/">me likey</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Houston ALT.NET Geek Dinner - Thursday Oct 2nd]]></title>
            <link>https://chris.pelatari.com/posts/2008-09-30-houston-alt-net-geek-dinner-thursday-oct-2nd</link>
            <guid>https://chris.pelatari.com/posts/2008-09-30-houston-alt-net-geek-dinner-thursday-oct-2nd</guid>
            <pubDate>Tue, 30 Sep 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ll be <a href="http://flux88.com/HoustonALTNETGeekDinnerThursdayOct2nd.aspx">there</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Good Luck, Yex]]></title>
            <link>https://chris.pelatari.com/posts/2008-07-03-good-luck-yex</link>
            <guid>https://chris.pelatari.com/posts/2008-07-03-good-luck-yex</guid>
            <pubDate>Thu, 03 Jul 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p></p><div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:28492517-ff36-4424-8de6-68e6d2e272c4" style="display:inline;margin:0;padding:0;"><div id="8d6ed373-08ea-457b-8ced-c684a0ff6b47" style="margin:0;padding:0;display:inline;"><div><a href="http://www.youtube.com/watch?v=g40c6iAEHpc&amp;hl=en&amp;fs=1" target="_new"><img src="http://bluefenix.net/blog/images/bluefenix_net/blog/WindowsLiveWriter/GoodLuckYex_13EAD/video3a81078b7f5c.jpg" alt=""></a></div></div></div> <p>Godspeed buddy. XD</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[jQuery - There is no spoon]]></title>
            <link>https://chris.pelatari.com/posts/2008-06-23-jquery-there-is-no-spoon</link>
            <guid>https://chris.pelatari.com/posts/2008-06-23-jquery-there-is-no-spoon</guid>
            <pubDate>Mon, 23 Jun 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been working with javascript almost since its inception. It was the first language that I ever really hacked in. I remember having to code around document.layers (blecch!), and I&#39;ve used javascript with a fair amount of success in the past.</p><p>But lately I&#39;ve been reading up on <a href="http://jquery.com">jQuery</a>. And I have experienced a profound moment of clarity. Using css selectors to manipulate the DOM is such a simple idea it qualifies as genius in my eyes. Using this along with asp.net mvc is simply a joy. There is no spoon.</p><p><b><a href="http://www.imdb.com/name/nm0936894/">Spoon boy</a></b>: Do not try and bend the spoon. That&#39;s impossible. Instead... only try to realize the truth. <b><a href="http://www.imdb.com/name/nm0000206/">Neo</a></b>: What truth? <b><a href="http://www.imdb.com/name/nm0936894/">Spoon boy</a></b>: There is no spoon. <b><a href="http://www.imdb.com/name/nm0000206/">Neo</a></b>: There is no spoon? <b><a href="http://www.imdb.com/name/nm0936894/">Spoon boy</a></b>: Then you&#39;ll see, that it is not the spoon that bends, it is only yourself.</p><p><a href="http://chrispelatari.files.wordpress.com/2008/06/photo_moviematrix-quotespoon.jpeg"><img class="alignnone size-full wp-image-1135" alt="photo_movieMatrix-quoteSpoon" src="http://chrispelatari.files.wordpress.com/2008/06/photo_moviematrix-quotespoon.jpeg" width="593" height="435"></a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Welcome Back, Dare]]></title>
            <link>https://chris.pelatari.com/posts/2008-05-21-welcome-back-dare</link>
            <guid>https://chris.pelatari.com/posts/2008-05-21-welcome-back-dare</guid>
            <pubDate>Wed, 21 May 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...and thank goodness that <a href="http://25hoursaday.com/weblog/">hiatus is over</a>. XD</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Professional Ribbon control for Windows Forms]]></title>
            <link>https://chris.pelatari.com/posts/2008-05-14-professional-ribbon-control-for-windows-forms</link>
            <guid>https://chris.pelatari.com/posts/2008-05-14-professional-ribbon-control-for-windows-forms</guid>
            <pubDate>Wed, 14 May 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.codeplex.com/Ribbon">Open source (MSPL) Ribbon</a> that actually has some potential, despite the currently incomplete coverage of ribbon features. It&#39;s a winforms control, and is the best looking free ribbon control that I have seen yet.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Error - Could not open the requested SVN filesystem]]></title>
            <link>https://chris.pelatari.com/posts/2008-02-20-error_could_not_open_the_requested_svn_filesystem</link>
            <guid>https://chris.pelatari.com/posts/2008-02-20-error_could_not_open_the_requested_svn_filesystem</guid>
            <pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>When trying to connect to a new subversion repository over apache 2.0 using subversion 1.4.5. Error number:165005 Looked at the error log for apache, and saw this:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>[Wed Feb 20 14:00:15 2008] [error] [client 192.168.xxx] (20014)Error string not specified yet: Expected format &#39;3&#39; of repository; found format &#39;5&#39;   </span></span>
<span class="line"><span>[Wed Feb 20 14:00:15 2008] [error] [client 192.168.xxx] Could not fetch resource information.  [500, #0]    </span></span>
<span class="line"><span>[Wed Feb 20 14:00:15 2008] [error] [client 192.168.xxx] Could not open the requested SVN filesystem  [500, #165005]</span></span></code></pre></div><p>and then found where the subversion modules lived in httpd.conf:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>LoadModule dav_svn_module modules/mod_dav_svn.so   </span></span>
<span class="line"><span>LoadModule authz_svn_module modules/mod_authz_svn.so</span></span></code></pre></div><p>stopped apache, copied the two .so files from subversionbin to apache2modules and restarted Apache.</p><p>then holla&#39;d w00t! XD</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Bring it on!]]></title>
            <link>https://chris.pelatari.com/posts/2008-02-05-bring_it_on</link>
            <guid>https://chris.pelatari.com/posts/2008-02-05-bring_it_on</guid>
            <pubDate>Tue, 05 Feb 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.justsayhi.com/bb/fight5" style="background:transparent url(&#39;http://assets.justsayhi.com/badges/306/227/fight5.8m7oag93g3.jpg&#39;) no-repeat scroll 0;display:block;font-size:42px;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;width:296px;color:rgb(255,255,255);padding-top:145px;font-family:Arial, sans-serif;height:84px;text-align:center;text-decoration:none;">31</a></p><p> </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Oh, she amazed me!]]></title>
            <link>https://chris.pelatari.com/posts/2008-01-24-oh_she_amazed_me</link>
            <guid>https://chris.pelatari.com/posts/2008-01-24-oh_she_amazed_me</guid>
            <pubDate>Thu, 24 Jan 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://dilbertblog.typepad.com/the_dilbert_blog/2008/01/the-hit-song-yo.html">Effing brilliant.</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Cheap Thrillz - TortoiseSVN overlay icons in Windows Vista]]></title>
            <link>https://chris.pelatari.com/posts/2008-01-02-cheap_thrillz_tortoisesvn_overlay_icons_in_windows_vista</link>
            <guid>https://chris.pelatari.com/posts/2008-01-02-cheap_thrillz_tortoisesvn_overlay_icons_in_windows_vista</guid>
            <pubDate>Wed, 02 Jan 2008 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div><p>Step1: install tortoisesvn.</p><p>Step2: open file dialog in vs.net (2008 at least)</p><p>Step3: XD</p><p><span style="text-decoration:underline;">update:</span> looks like the tortoisesvn team brought back those nifty icon overlays in vista while I wasn&#39;t paying attention 😉 Incedentally, there is an option to turn the icon overlays <span style="font-weight:bold;">off</span> in the open/save dialogs.</p><p> </p></div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[DataGridView ColorPicker using a DataGridViewButtonColumn]]></title>
            <link>https://chris.pelatari.com/posts/2007-12-13-datagridview_colorpicker_using_a_datagridviewbuttoncolumn</link>
            <guid>https://chris.pelatari.com/posts/2007-12-13-datagridview_colorpicker_using_a_datagridviewbuttoncolumn</guid>
            <pubDate>Thu, 13 Dec 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It&#39;s not often that I get the opportunity to blog about something neat that I learned to do in <a href="http://windowsclient.net/" target="_blank" rel="noreferrer">winforms</a> so you know I gotta, even tho it&#39;s not totally complete yet. Here&#39;s how I got a DataGridViewButtonColumn to act as a color picker.</p><p>After a little bit of webernettin&#39;, I found a post by <a href="http://dotnetjunkies.com/WebLog/wardb/archive/2006/10/12/150262.aspx" target="_blank" rel="noreferrer">Ward Bekker</a> that describes how to handle the button click event of a DataGridViewButtonColumn. Sweet. We&#39;ll get back to that code in a second.</p><p>I want to have a special button that will display a rectangle of the selected color, so I created a class that derives from DataGridViewButtonCell. I want to be able to set the Color of the rectangle, and of course we have to paint the rectangle so we&#39;ll add a Color property of type Color (imagine that:) and override the Paint method.</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ColorPickerCell</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : DataGridViewButtonCell{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  const</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> float</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> phi</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1.618f</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  private </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Color</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> colorValue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  public Color Color {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    get { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> colorValue; }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    set {  </span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      colorValue </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value; </span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">      this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Value </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ToArgb</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ToString</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  protected override </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Paint</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Graphics</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> graphics</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    Rectangle</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> clipBounds</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    Rectangle</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cellBounds</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    int</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> rowIndex</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    DataGridViewElementStates</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cellState</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> value</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> formattedValue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> errorText</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    DataGridViewCellStyle</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cellStyle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    DataGridViewAdvancedBorderStyle</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> advancedBorderStyle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    DataGridViewPaintParts</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> paintParts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">      //CDF: draw the button</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">      base</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Paint</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(graphics, clipBounds, cellBounds, rowIndex, cellState, value,     formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">      //CDF: draw a purty rectangle over the button</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      using</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Pen</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> darkPen</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Pen</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(SystemColors.ControlDark){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        Rectangle rc </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Rectangle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(cellBounds.X </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 8</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, cellBounds.Y </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        cellBounds.Width </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)(cellBounds.Width </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> phi </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 8</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">), </span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        cellBounds.Height </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)(cellBounds.Height </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> phi </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 4</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        graphics.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">FillRectangle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SolidBrush</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Color.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">FromArgb</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(formattedValue.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ToString</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()))), rc);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        graphics.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">DrawRectangle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(darkPen, rc);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span></code></pre></div><p>I also derived a class from DataGridViewButtonColumn (ColorPickerColumn), but I didn&#39;t really override anything. Anyway, now that we&#39;ve got a button that will display a colored rectangle, we can add a ColorPickerColumn to a DataGridView on a Form. The next step is to handle the CellContentClick event as Ward indicated.</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">private</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> dataGridView1_CellContentClick</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sender</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">DataGridViewCellEventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  //CDF: make sure we&#39;re on the right column. I used the name for this test.</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(dataGridView1.Columns[e.ColumnIndex].Name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;ColorColumn&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    ColorDialog</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> dlg</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ColorDialog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">    ColorPickerCell</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> currentCell</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dataGridView1[e.ColumnIndex, e.RowIndex] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ColorPickerCell</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(dlg.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ShowDialog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> DialogResult.OK){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(currentCell </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        currentCell.Color </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dlg.Color;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">        this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Invalidate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  }</span></span></code></pre></div><p>Seems to do exactly what I want for now. Nice XD</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Guitar Hero -  Pros]]></title>
            <link>https://chris.pelatari.com/posts/2007-11-28-guitar_hero_pros</link>
            <guid>https://chris.pelatari.com/posts/2007-11-28-guitar_hero_pros</guid>
            <pubDate>Wed, 28 Nov 2007 00:00:00 GMT</pubDate>
            <description><![CDATA[<p>pros indeed. Unfortunately, there are no Jimi Hendrix tracks on any of the Guitar Hero/Rock Band games. I really hope that changes some day. There is a character that somewhat resembles Jimi in Guitar Hero III, but it's not the same...it's not <strong>the experience.</strong></p>
<p>Guitar Hero is a lot of fun, but I have to admit that I'm having more fun on the drums and the vocals than the guitar. Maybe they're closer to the real thing, maybe it's just that they're different. Maybe it's the fact that I'm actually learning how to play the drums 😃 I saw the pic to the left on <a href="http://www.codinghorror.com/blog/archives/001000.html">CodingHorror</a>, and Jeff notes in the comments that the drums in rock band really do teach drumming:</p>
<blockquote>]]></description>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>pros indeed. Unfortunately, there are no Jimi Hendrix tracks on any of the Guitar Hero/Rock Band games. I really hope that changes some day. There is a character that somewhat resembles Jimi in Guitar Hero III, but it&#39;s not the same...it&#39;s not <strong>the experience.</strong></p><p>Guitar Hero is a lot of fun, but I have to admit that I&#39;m having more fun on the drums and the vocals than the guitar. Maybe they&#39;re closer to the real thing, maybe it&#39;s just that they&#39;re different. Maybe it&#39;s the fact that I&#39;m actually learning how to play the drums 😃 I saw the pic to the left on <a href="http://www.codinghorror.com/blog/archives/001000.html">CodingHorror</a>, and Jeff notes in the comments that the drums in rock band really do teach drumming:</p><blockquote>--- You can take a person that’s playing on the expert levels in Rock Band on the drums and put them on a real drum set, and they can play the drums. And I watched this happen with a Q&amp;A staff of 25-30 people. Maybe 2 or 3 of those had experience of being drummers, but they’ve been playing the game for months now, and what we’ve got is 30 drummers in the Q&amp;A department who are pounding away in the Hard and Expert settings. These people have learned the fundamentals of drums, and this isn’t abstracting fundamentals — you can put these people on a drum set and they have some basic skills now. As a payoff for playing a video game, that’s incredible! Rock Band is going to be out there training this wave of new young drummers, and that’s a really exciting aspect of the project for us. ---</blockquote> Rock on. </div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Darren Neimke on building ajax applications in asp.net]]></title>
            <link>https://chris.pelatari.com/posts/2007-11-25-darren_neimke_on_building_ajax_applications_in_asp-net</link>
            <guid>https://chris.pelatari.com/posts/2007-11-25-darren_neimke_on_building_ajax_applications_in_asp-net</guid>
            <pubDate>Sun, 25 Nov 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://showusyourcode.spaces.live.com/Blog/cns!15630F96CB7D86C1!532.entry">Darren Neimke talks about building ajax applications, both with and without a button to intercept.</a>..Darren has this way of explaining things in a way that always makes me nod my head in agreement. Thing is, I haven&#39;t really had the opportunity recently to hack a lot in asp.net. It&#39;s easy to forget with all of the ajax content on the net that essentially, it&#39;s just javascript that interacts with asp.net and other web frameworks really well. Thx, Darren.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[HappyMappy]]></title>
            <link>https://chris.pelatari.com/posts/2007-11-14-happymappy</link>
            <guid>https://chris.pelatari.com/posts/2007-11-14-happymappy</guid>
            <pubDate>Wed, 14 Nov 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>As a thanx you to <a href="http://www.morewally.com/">Sir Wally</a> for kicking me in the butt to start blogging again, I&#39;m linking to a site he told me about called <a href="http://www.happymappy.com/">HappyMappy.com</a> that he is involved with. I did a search on <a href="http://www.happymappy.com/HappyMappy.aspx?mapid=89fff2c6-fa14-444b-87bf-594c94bb7035">sports in the Houston area</a> and was surprised to see &quot;Htowns Arena Theatre&quot; in the results. That&#39;s hood, Sir Wally. It makes my mappy happy :P</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[O Hai.]]></title>
            <link>https://chris.pelatari.com/posts/2007-11-14-o_hai</link>
            <guid>https://chris.pelatari.com/posts/2007-11-14-o_hai</guid>
            <pubDate>Wed, 14 Nov 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>and welcome to my new blog. :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Blog Moving]]></title>
            <link>https://chris.pelatari.com/posts/2007-11-14-blog_moving</link>
            <guid>https://chris.pelatari.com/posts/2007-11-14-blog_moving</guid>
            <pubDate>Wed, 14 Nov 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I noticed that a handful of people are still subscribed to this little ol&#39; weblog. Well, I&#39;ve decided to start fresh at a new url <a href="http://bluefenix.net">http://bluefenix.net</a></p><p>Hope to see ya there. ;) Ciao!</p>[ Nothing Playing. ] <p></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Setting up a new External to Internal IP mapping on OpenBSD]]></title>
            <link>https://chris.pelatari.com/posts/2007-07-27-settingupanewexternaltointernalipmappingonopenbsd</link>
            <guid>https://chris.pelatari.com/posts/2007-07-27-settingupanewexternaltointernalipmappingonopenbsd</guid>
            <pubDate>Fri, 27 Jul 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is correct for version 3.9 of OpenBSD, but the rules are simple enough that the idea will upgrade if necessary later.</p> <p>In order to complete this, you must have sudo privileges on the firewall at cerberus.velocitydatabank.com. After you login, cd to /etc and sudo the su command to easily edit the files we need to touch:</p> <blockquote><p>$cd /etc<br>$ sudo su<br>#</p></blockquote> <p>Let&#39;s setup an address as an example. Currently, we have a dmz server called geoweb which is publicly addressed by the host</p> <blockquote><p>geoweb.velocitydatabank.com</p></blockquote> <p>There is a DNS host record (A record) setup in our <a href="https://bsimple.cbeyond.net/bsimple/go">online services with cbeyond</a> that associates the external IP </p> <blockquote><p>69.15.117.100</p></blockquote> <p>to this hostname, meaning when someone makes a request to geoweb.velocitydatabank.com, they will be pointed at the above IP address. What we need to do first is tell the external NIC card (xl0) to listen for this IP address along with any other public IP addresses we want to manage. This is done using ifconfig by invoking the alias command. To actually do this, we are going to type in the following command:</p> <blockquote><p>ifconfig xl0 alias 69.15.117.100 netmask 0xffffffff</p></blockquote> <p>Here we are telling ifconfig to configure the interface named xl0 to listen for packets sent to this IP address. The netmask part is a hexidecimal representation of all full octets and is equivalent to 255.255.255.255. This means that we will be broadcasting the exact same IP address as entered.</p> <p>Now the running server knows that it is listening for this IP address. The firewall ruleset allows ping echorequests thru, so if we are at a remote location we can see this by pinging geoweb.velocitydatabank.com. The problem is that we need to make sure the alias is set up even after a reboot. To do this we have to add an entry to the hostname.xl0 file. Using vi, we need to add an alias setting that will load when the os is booting.</p> <blockquote><p>#vi hostname.xl0<br>(to get to the end of the text, type shift-G. Open the next line for editing by typing o. So the commands will be:</p> <p>G<br>o<br></p></blockquote> <p>Then add the following line to set it up:</p> <blockquote><p>alias 69.15.117.100 netmask 255.255.255.255</p></blockquote> <p>Hit escape to stop editing and then :x to save your changes. Now we&#39;ve associated the external IP address to the xl0 nic card. All traffic except ping should be blocked by default, so we have to make some changes to pf.conf to allow dmz traffic to flow to the internal IP when addressed by the external IP.</p> <p>There are already rulesets for other IP addresses in pf.conf - just follow those as an example to allow dmz traffic. Start by adding a macro for both the internal and external IPs. We&#39;re going to name them according to the host, adding a prefix to distinguish between publicly addressable and private addresses. Add these under the other macro definitions:</p> <blockquote><p>prv_geoweb=&quot;192.168.0.11&quot;<br>pa_geoweb=&quot;69.15.117.100&quot;</p></blockquote> <p>Now we need to add a binat rule to link these addresses in the firewall. This only sets up the link, incoming packets will still have to pass the ruleset before being passed thru. Find the other binat rules and add one for the new host:</p> <blockquote><p>binat on $ext from $prv_geoweb to any -&gt; $pa_geoweb</p></blockquote> <p>This tells the firewall that if it gets any packets that are going to or from 192.168.0.11, change their destination/source IP to the external one. The traffic still ends up at the internal IP, but not before passing the filter rules defined below the NAT rules. Pings will still work, but we need to add a filter rule to allow our desired dmz services thru. We need to add the following rule to the ruleset after the other rules that serve the same purpose for other IPs:</p> <blockquote><p>pass in on $ext inet proto tcp from any to $prv_geoweb port $dmz_services <br>flags S/SA synproxy state</p></blockquote> <p>Let&#39;s break this rule down. We&#39;re telling the firewall to pass or allow a packet to reach its destination (in this case $prv_geoweb or 192.168.0.11) This is slightly confusing, since we really want traffic to go to the <strong>public</strong>  address, right? Well, in pf the address translation rules are run first, so by the time the packet reaches this rule, it really <strong>is</strong> heading to the internal address because of the binat rule we defined earlier. $ext is defined as a macro and represents the xl0 nic card. inet tells pf that we are only interested in IPv4 requests at this time. from any simply means that any address whatsoever can reach this IP (the whole point of a dmz). You would change this to a specific IP or IP range if you wanted to lock more people out of even dmz services, for example if we were hosting a client server to be managed by our firewall. to $prv_geoweb is as I stated earlier telling pf that the packet must be heading toward that IP. This allows us to customize the ports available if necessary. port $dmz_services says that the packet must be assigned to one of the ports defined in the $dmz_services macro defined at the top of pf.conf currently as ftp, www, https, and 8080. These abbreviations correspond to standard tcp ports where ftp=21, www=80, and https=443. Any packet that is not heading for one of these ports is dropped and forgotten. (power of the firewall, ya see?;) the slash is a line continuating character, so the next line is part of the same rule. flags S/SA restricts the types of tcp requests that are allowed to pass. They represent syn/syn+ack which does the basic tcp handshake required for network communication.</p> <p>That&#39;s all that&#39;s required for the ruleset, so save the changes to the file. Now it&#39;s time to let pf know about its new config changes. We will do this using pfctl:</p> <blockquote><p>#pfctl -f pf.conf</p></blockquote> <p>This tells pf to load the ruleset contained in the pf.conf file. This is also what is called on startup, so we know we will have the same rules defined even after a reboot. If pfctl doesn&#39;t return anything then it worked. You can verify by calling</p> <blockquote><p>#pfctl -sa</p></blockquote> <p>which tells pf to show all of the info associated with it in the console. That&#39;s it! geoweb.velocitydatabank.com is now secured thru our OpenBSD packet filter firewall.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Paul Stovell has lost his marbles.]]></title>
            <link>https://chris.pelatari.com/posts/2007-07-25-paulstovellhaslosthismarbles</link>
            <guid>https://chris.pelatari.com/posts/2007-07-25-paulstovellhaslosthismarbles</guid>
            <pubDate>Wed, 25 Jul 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>[note: this started as a comment but started getting a little long-winded. what follows is a little gentle ribbing of Paul for <a href="http://www.paulstovell.net/blog/index.php/runtime-caching/">a recent post he wrote about being a lazy cache programmer </a>😛]</p><p>Mr. Stovell, you&#39;ve officially lost your marbles 😛 j/k</p><p>okay, just to play devil&#39;s advocate...&gt;😃 I think the asp.net cache framework fits very nicely for its purpose - what you propose seems like another abstraction on top of it, for the benefit of thinking <em>less</em> about what items you should cache to <em>optimize</em> code execution time? So, just throw everything possible at it. Cache can handle that, right? hehe. nope. That&#39;s why you think about it, apply it where appropriate, and don&#39;t waste cycles calculating if you should even cache or not as part of the caching process of a production site. I dunno, seems like a wasted effort to me, especially when you start to go down the rabbit hole of deciding what should/shouldn&#39;t be cached as part of the process.</p><p>I&#39;m not posting this to be a jerk...I&#39;m putting your feet to the fire a little! Think it thru a little more, maybe (since I seem to be concentrating on the calculations as part of the process) move that logic outside of the [Deterministic] control flow to an external &quot;cache minder&quot; process. have your cake and cache it too. <a href="http://chrispelatari.files.wordpress.com/2007/07/wheredacacheat.jpg"><img class="alignnone size-full wp-image-1140" alt="wheredacacheat" src="http://chrispelatari.files.wordpress.com/2007/07/wheredacacheat.jpg" width="120" height="90"></a> but the main point of cache in asp.net is to improve performance by taking anything that takes longer than O(1) and returning it nearly that fast (a guess considering that Cache exposes itself as a Dictionary to store its items) I guess that means my case (while I&#39;m advocating;) is for using the cache as is, and make conscious decisions on what should go into it instead of letting some attribute-fu decide for me. What happens when your attribute logic is wrong? DOOM! 😛 hehe, not really. What do you think?</p><p>p.s. my server crapped before I had a chance to post this. Is there some new law that states that technology starts to break down the minute you start to be a smart-ass?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Christopher is ...]]></title>
            <link>https://chris.pelatari.com/posts/2007-06-29-christopher-is</link>
            <guid>https://chris.pelatari.com/posts/2007-06-29-christopher-is</guid>
            <pubDate>Fri, 29 Jun 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>posted up watchin Shrek 2 with Ethan.:)</p><p> </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[So quiet...]]></title>
            <link>https://chris.pelatari.com/posts/2007-06-07-soquiet</link>
            <guid>https://chris.pelatari.com/posts/2007-06-07-soquiet</guid>
            <pubDate>Thu, 07 Jun 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...and so <strong>dark </strong>in here.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Sql Server Management Studio Express - you suck.]]></title>
            <link>https://chris.pelatari.com/posts/2007-05-25-sqlservermanagementstudioexpressyousuck</link>
            <guid>https://chris.pelatari.com/posts/2007-05-25-sqlservermanagementstudioexpressyousuck</guid>
            <pubDate>Fri, 25 May 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I would like to know who thought it was a good idea to remove &quot;import data...&quot; and &quot;export data...&quot; from this particular flavor of the worst front end to an otherwise badass rdbms. I shouldn&#39;t have to fight with a program to get my databases in order. What a joke.</p>[ Nothing Playing. ] <p></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Exposing Hidden Events]]></title>
            <link>https://chris.pelatari.com/posts/2007-04-25-exposinghiddenevents</link>
            <guid>https://chris.pelatari.com/posts/2007-04-25-exposinghiddenevents</guid>
            <pubDate>Wed, 25 Apr 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I recently ran into a neat little nugget of functionality in C# with events. Normally in C# when we define events we stop at something like this:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">EventHandler</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">MyEventArgs</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">MyEvent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span></code></pre></div><p>The thing is, you can explicitly implement the add and remove accessors if you throw some curly braces into the mix. Why does this matter? Imagine that you have a MainForm, and a usercontrol named ControlPanel. ControlPanel contains another usercontrol called hiddenControl that exposes an event that you want to handle in MainForm, but all MainForm has access to is ControlPanel...</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event EventHandler</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">MyEventArgs</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MyEvent{</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	add{</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">		this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.hiddenControl.MyEvent </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	remove{</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">		this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.hiddenControl.MyEvent </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Now you can subscribe to the event in MainForm without making the usercontrol member public in ControlPanel.</p><p>[ Currently Playing : Burn Away - Foo Fighters - One by One (4:57) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Windows Updates Make Me Nervous]]></title>
            <link>https://chris.pelatari.com/posts/2007-03-22-windowsupdatesmakemenervous</link>
            <guid>https://chris.pelatari.com/posts/2007-03-22-windowsupdatesmakemenervous</guid>
            <pubDate>Thu, 22 Mar 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> hehe...</p><blockquote><p>Rather surprised by the new &#39;updates are ready&#39; message from Microsoft. Hmmm. </p><p><img alt="revised updates message from microsoft" src="http://secretGeek.net/image/updates.PNG"></p><p>Perhaps they know just how much frustration we had on the home pc recently due to their dodgy updates. </p><p>(Fixed thanks to <a href="http://www.google.com/search?hl=en&amp;q=windows+updates+swigart">Scott Swigart</a>) </p></blockquote><p>Source: <a href="http://www.secretGeek.net/update_nervous.asp">Windows Updates Make Me Nervous<br></a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[skmMenu code change to work with xhtml doctypes]]></title>
            <link>https://chris.pelatari.com/posts/2007-03-22-skmmenucodechangetoworkwithxhtmldoctypes</link>
            <guid>https://chris.pelatari.com/posts/2007-03-22-skmmenucodechangetoworkwithxhtmldoctypes</guid>
            <pubDate>Thu, 22 Mar 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is just a re-statement of a <a href="http://www.gotdotnet.com/workspaces/messageboard/thread.aspx?id=a8ee64df-8f2a-483f-8594-10aaa66988ce&amp;threadid=48c4a040-054b-49f3-b40a-bc3fffa2ee97" target="_blank" rel="noreferrer">forum thread</a> that discusses the fix, but since gotdotnet is not going to be around very much longer I thought I&#39;d post this little tidbit here as well. Basically, when I upgraded one of my sites to .net 2.0, skmMenu got upgraded right along with it. The only issue was that all of my menus would show up at the far left corner of the screen, and when you try to navigate to them over there they disappear thanks to the menu items between the cursor and the target. I think I only saw this behavior in firefox, but the code fix works in both firefox and IE. I just went thru the .js file and the javascript in the .resx for embedded javascript goodness and placed a &#39;px&#39; after any integer value. The reason for this is that firefox requires measurement properties be set with appropriate identifiers when it&#39;s displaying a structured document. Anyways, here&#39;s a reprint of the code:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> skm_mousedOverMenu</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">menuID</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">elem</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">parent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">displayedVertically</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">imageSource</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">	skm_stopTick</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">	skm_closeSubMenus</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(elem);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> childID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> elem.id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;-subMenu&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;  </span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	// Display child menu if needed</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){  </span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		// make the child menu visible and specify that its position is specified in absolute coordinates</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.display </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;block&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.position </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;absolute&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		skm_OpenMenuItems </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> skm_OpenMenuItems.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">concat</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (displayedVertically){</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">			// Set the child menu&#39;s left and top attributes according to the menu&#39;s offsets</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.left </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> skm_getAscendingLefts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(parent) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> parent.offsetWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.top </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> skm_getAscendingTops</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(elem) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> visibleWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> parseInt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(window.outerWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> window.outerWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 9</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> :</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> document.body.clientWidth, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ((</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parseInt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).offsetLeft,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> parseInt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).offsetWidth, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> visibleWidth) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">				document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.left </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> visibleWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> parseInt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).offsetWidth, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{  </span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">			// Set the child menu&#39;s left and top attributes according to the menu&#39;s offsets</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.left </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> skm_getAscendingLefts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(elem) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.top </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> skm_getAscendingTops</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(parent) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> parent.offsetHeight </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).offsetWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> elem.offsetWidth)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">				document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(childID).style.width </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> elem.offsetWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (skm_SelectedMenuStyleInfos[menuID] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) skm_SelectedMenuStyleInfos[menuID].</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">applyToElement</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(elem);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (skm_highlightTopMenus[menuID]){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> eId</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">elem.id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39; &#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		while</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (eId.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">indexOf</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;-subMenu&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			eId</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">eId.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">substring</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, eId.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">lastIndexOf</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;-subMenu&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			skm_SelectedMenuStyleInfos[menuID].</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">applyToElement</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(eId));</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (imageSource </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">		setimage</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(elem,imageSource)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> skm_shimSetVisibility</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">makevisible</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">tableid</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tblRef </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(tableid);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> IfrRef </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getElementById</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;shim&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tableid);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (tblRef </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &amp;&amp;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> IfrRef </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(makevisible){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.width </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tblRef.offsetWidth </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.height </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tblRef.offsetHeight </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.top </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tblRef.style.top </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.left </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tblRef.style.left </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.zIndex </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tblRef.style.zIndex </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.display </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;block&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			IfrRef.style.display </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;none&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>These were the only two functions that needed code adjustment. Enjoy.</p><p>[ Currently Playing : Mannequin Republic - At the Drive-In - Relationship of Command [Japan (3:02) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ASP.NET - UrlRewriting with PathInfo and base urls]]></title>
            <link>https://chris.pelatari.com/posts/2007-03-15-asp-neturlrewritingwithpathinfoandbaseurls</link>
            <guid>https://chris.pelatari.com/posts/2007-03-15-asp-neturlrewritingwithpathinfoandbaseurls</guid>
            <pubDate>Thu, 15 Mar 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I read <a href="http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx" target="_blank" rel="noreferrer">this excellent post from ScottGu</a> and decided to use it with a page that implemented a masterpage. I didn&#39;t have to use postbacks in my scenario, but there were links included from the masterpage. The problem is that if you use app-relative paths for your href attributes (ex: &lt;a href=&quot;/default.aspx&quot;&gt;) the browser (FF 2.0.0.2 and IE 7 anyways) interperets the url with pathinfo differently than a url without. The base url includes the original page (ex: <a href="http://localhost:3333/rewriter.aspx/default.aspx" target="_blank" rel="noreferrer">http://localhost:3333/rewriter.aspx/default.aspx</a>).</p><p>Guess what? The webserver picks up the last .aspx extension, default.aspx, that bad boy doesn&#39;t exist, and you get a 404 instead of going to <a href="http://localhost:3333/rewriter.aspx/default.aspx" target="_blank" rel="noreferrer">http://localhost:3333/default.aspx</a>.</p><p>In the comments, Ian Oxley suggested that you can re-base links in your page/css/other static files using the <base> element in the head of your page. I expanded on it a little, since this behavior is only on one page of my site currently, and added the following code into the Page_Load event of the offending page:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Header.Controls.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LiteralControl</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;&lt;base href=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Request.Url.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ToString</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Replace</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Request.RawUrl, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Replace</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Request.PathInfo, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&gt;&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span></code></pre></div><p>Now the base tag works on both the live site and the one that WebDev.WebServer spins up as well.</p><p>[ Currently Playing : Them Bones - Alice in Chains - Nothing Safe: Best of the Box (2:29) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[SubSonic Scaffold control - a GridView with Class]]></title>
            <link>https://chris.pelatari.com/posts/2007-03-08-subsonicscaffoldcontrolagridviewwithclass</link>
            <guid>https://chris.pelatari.com/posts/2007-03-08-subsonicscaffoldcontrolagridviewwithclass</guid>
            <pubDate>Thu, 08 Mar 2007 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I&#39;ve been able to dig my teeth into some asp.net hacking recently, and I&#39;ve been <s>wrestling with</s> learning to use <a href="http://codeplex.com/actionpack%22" target="_blank" rel="noreferrer">SubSonic</a> in the process.</p><p>In dealing with the scaffold control I ran into a funny issue: none of the exposed properties on the scaffold control will output any style info of the GridView that the control uses (that I could figure out anyways). I ended up with black text on a black background. 😕 Seeing as I have the source, I decided to give the scaffold control&#39;s GridView a little class...hello GridViewCssClass property! I set it up just like the EditTable*CssClass properties, just a string property, with similar attributes to the other properties hanging around there:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Bindable</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)]</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Category</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Display&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)]</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Description</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Sets the CSS class used by the gridview.&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)]</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">DefaultValue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ScaffoldCSS.WRAPPER)]</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CDF: just to have something to start with.</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> GridViewCssClass {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	get { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> _gridViewCssClass; }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	set { _gridViewCssClass </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value; }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Then, in the CreateGrid method make it actually do something:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">private</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CreateGrid</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()	{</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">			Label</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> lblTitle</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      surroundingPanel.Controls.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(lblTitle);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      lblTitle.Text </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&amp;lt;h2&amp;gt;&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> schema.Name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot; Admin&amp;lt;/h2&amp;gt;&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      grid.ID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;grid&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	    grid.CssClass </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.GridViewCssClass;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      surroundingPanel.Controls.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(grid);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Page.IsPostBack) {</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">      	BindGrid</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(String.Empty);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      }</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">			//add a column to the grid for editing</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>And now I can declaratively set the CssClass that the GridView uses to, oh, say, .whitetext 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[..||..]]></title>
            <link>https://chris.pelatari.com/posts/2006-09-11-669</link>
            <guid>https://chris.pelatari.com/posts/2006-09-11-669</guid>
            <pubDate>Mon, 11 Sep 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.zefrank.com/theshow/archives/2006/09/091106.html">http://www.zefrank.com/theshow/archives/2006/09/091106.html</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - What about PostXING?]]></title>
            <link>https://chris.pelatari.com/posts/2006-08-22-rewhataboutpostxing</link>
            <guid>https://chris.pelatari.com/posts/2006-08-22-rewhataboutpostxing</guid>
            <pubDate>Tue, 22 Aug 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>I love the <a href="http://postxing.net/blog/">PostXING</a> tool and the ability to integrate the playing music. Feature wise they are all about the same though. So it will interesting to see the evolution of the tool.</p><p>One positive out of the project is that I learned a lot about <a href="http://search.msn.com/results.aspx?q=Subversion&amp;FORM=QBRE">Subversion</a> and how to work with it.</p><div class="shareblock"><strong>Share this post:</strong> <a title="Email What about PostXING?" href="mailto:?body=Thought%20you%20might%20like%20this:%20http://jazzynupe.net/blog/archive/2006/08/22/775.aspx&amp;subject=What+about+PostXING%3f">Email it!</a> | <a title="Submit What about PostXING? to del.icio.us" href="http://del.icio.us/post?url=http://jazzynupe.net/blog/archive/2006/08/22/775.aspx&amp;title=What+about+PostXING%3f">bookmark it!</a> | <a title="Submit What about PostXING? to digg.com" href="http://www.digg.com/submit?url=http://jazzynupe.net/blog/archive/2006/08/22/775.aspx&amp;phase=2">digg it!</a> | <a title="Submit What about PostXING? to reddit.com" href="http://reddit.com/submit?url=http://jazzynupe.net/blog/archive/2006/08/22/775.aspx&amp;title=What+about+PostXING%3f">reddit!</a></div><img height="1" src="http://jazzynupe.net/blog/aggbug.aspx?PostID=775" width="1"></blockquote><p><i>[Via <a href="http://jazzynupe.net/blog/archive/2006/08/22/775.aspx">It&#39;s my life... And I live it...</a>]</i></p><p>Well, this post has been a long time coming. What about PostXING? What indeed? Well, unfortunately for the 1.5 users of PostXING, I had my son Ethan for 6 weeks this summer and spending time with him is <strong><em>waaay</em></strong> more important than hacking on a tool that is basically useful only to a handful of people. </p><p>Then there&#39;s the issue of competition: I have always recommended <a href="http://blogjet.com">BlogJet</a> for people that wanted a good solid blog posting tool that is way more polished than PostXING (and indeed Windows Live Writer) and whose project lead is a really nice, engaging dude. Heck, Dmitry even gave me pointers on how to work with mshtml as I was writing code that competes with his (guess he wasn&#39;t <em>too</em> worried about &quot;competition&quot; from PostXING. heh.) And of course the new hip kid on the block Windows Live Writer...what can I say? Even <a href="http://tomergabel.com">Tomer</a>, who was gracious enough to help me out on developing PostXING, agrees: <a href="http://www.tomergabel.com/PermaLink,guid,8a9d12a0-4eb4-4cf1-aeba-ec956fc8be43.aspx">Windows Live Writer kicks ass</a>. The fact that it&#39;s free doesn&#39;t help the situation.</p><p>At this point I&#39;m not 100% sure what I want to do with PostXING. I had been looking into yet another mshtml wrapper that supposedly handles focus better than the code I have, but my experience so far with mshtml is that it&#39;s a focus stealing bastard child of wysiwyg editing. The good news: you can actually use a widget that gives you wysiwyg editing without having to install a browser plugin (I&#39;m looking at you, Mono!) The bad news: didn&#39;t you read that bastard child statement earlier? Geez.</p><p>Tentatively what will happen is I will continue to quietly hack on PostXING in order to at least bring it out of beta. But I&#39;m definitely going to be taking my time on it...I am in no hurry at all.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Windows Live Writer]]></title>
            <link>https://chris.pelatari.com/posts/2006-08-17-windowslivewriter</link>
            <guid>https://chris.pelatari.com/posts/2006-08-17-windowslivewriter</guid>
            <pubDate>Thu, 17 Aug 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p></p><p><img style="border-width:0;" height="123" src="http://tk3.storage.msn.com/x1pYnvNgmDsTvWPFoCy9eG7axwrUzd9OAWpGSO6B3x0g4TN1lViGRiMmpoyh5FHCIL8wfJxkTw8Tl_jMWjwlicOAmXi0YX7Sur6KMh_hD-O5XyhxQLT4TsQ-mDpxQpNwUOX8wpS9ButVI5SdcINlF5DbA" width="138" align="right" border="0"> It looks pretty neat. I <em>really</em> dig the &quot;type inside the preview&quot; Web Layout. That&#39;s just sweet. The plugin support looks promising...I&#39;ve already started coding up a CodeHTMLer plugin for syntax highlighting ala PostXING, now if I can get one going that will allow me to post the same content to more than one blog I&#39;ll be in business. I&#39;ve been on a little hacking-hiatus on PostXING for the past few months to spend the summertime with my son Ethan, so what a great way to stretch my geek muscle all over again at the end of summer! </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE Finding calling method using reflection]]></title>
            <link>https://chris.pelatari.com/posts/2006-08-11-refindingcallingmethodusingreflection</link>
            <guid>https://chris.pelatari.com/posts/2006-08-11-refindingcallingmethodusingreflection</guid>
            <pubDate>Fri, 11 Aug 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://geekswithblogs.net/opiesblog/archive/2006/06/29/83654.aspx">Exactly what I was looking for</a>...I don&#39;t know a lot about reflection, so I wonder if there is a more elegant way to get this info.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Whip it Real Hard]]></title>
            <link>https://chris.pelatari.com/posts/2006-07-20-whipitrealhard</link>
            <guid>https://chris.pelatari.com/posts/2006-07-20-whipitrealhard</guid>
            <pubDate>Thu, 20 Jul 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><div><p><a href="http://chrispelatari.files.wordpress.com/2006/07/ghostfacekilla.jpg"><img class="alignnone size-full wp-image-1143" alt="GhostFaceKilla" src="http://chrispelatari.files.wordpress.com/2006/07/ghostfacekilla.jpg" width="320" height="240"></a>Last night I got an impromtu text message saying that <a href="http://en.wikipedia.org/wiki/Ghostface_Killah">Ghostface Killah</a> was playing at Warehouse live downtown. As a Wu-Tang fan, I decided to go out and see what he was all about. Pretty good show, I really dug the ODB medley they did in honor of <a href="http://en.wikipedia.org/wiki/Ol%27_Dirty_Bastard">Ol&#39; Dirty</a>. <a href="http://chrispelatari.files.wordpress.com/2006/07/wudirty.gif"><img class="alignnone size-full wp-image-1145" alt="wudirty" src="http://chrispelatari.files.wordpress.com/2006/07/wudirty.gif" width="108" height="144"></a></p></div> As an extra added bonus, <a href="http://en.wikipedia.org/wiki/Rick_Ross_%28rapper%29">Rick Ross</a> opened up for Ghostface. He only did like 5 tracks, but was spot on for Hustlin&#39;. He&#39;s obviously very comfortable with the song by now and it shows in his performance. Looked like he was really having fun with it which always helps for a good show. <p><a href="http://chrispelatari.files.wordpress.com/2006/07/rickross.jpg"><img class="alignnone size-full wp-image-1146" alt="RickRoss" src="http://chrispelatari.files.wordpress.com/2006/07/rickross.jpg" width="320" height="240"></a></p><p class="media">[ Currently Playing : Smiley faces - Gnarls Barkley - (3:05) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[What's this? My Application won't Exit?]]></title>
            <link>https://chris.pelatari.com/posts/2006-07-14-whatsthismyapplicationwontexit</link>
            <guid>https://chris.pelatari.com/posts/2006-07-14-whatsthismyapplicationwontexit</guid>
            <pubDate>Fri, 14 Jul 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>There are a few things that have to happen for this &quot;regression&quot; to show up. First, you have to be working in .net 2.0 WinForms. Second, you must be using a custom application context. Third and most importantly, you must have at least one form open in your application that handles its closing event and sets CancelEventArgs.Cancel = true.</p> <p>What&#39;s the behavior? While operating under a custom ApplicationContext, what would be my Main form is closed by the user. Since the application context is not associated with that form, I decide to call &quot;Application.Exit()&quot; in an override of OnClosing. My Main form closes, but any hidden forms stick around, thus leaving the application running until you open up task manager (or something similar) and manually kill the process.</p> <p>Why does it happen? WinForms 2.0 introduced an overload to Application.Exit that accepts a CancelEventArgs parameter. This is what is called by Application.Exit(). If even <em>one</em> of your open forms doesn&#39;t think it needs to close itself for whatever reason and sets its CancelEventArgs to true, Application.Exit stops processing and returns control to the application.</p> <p>Why did I call it a &quot;regression&quot;? This behavior has changed between .net 1.1 and 2.0. In 1.1, if I call Application.Exit, by golly the application exits! I understand the reasoning behind the change. I just wish that there was some indication to it other than Reflector. A comment for intellisense perhaps? Something. </p> <p>Will it matter to most WinForm projects? Probably not. If you use the default application context (by calling Application.Run(new MainForm()), which is what VS.NET spits out for you from the template) you do not have the same problem. Closing the main form exits the application as expected. If you&#39;re using a custom ApplicationContext, tho, watch out.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Gaffling that ribbon style]]></title>
            <link>https://chris.pelatari.com/posts/2006-07-08-gafflingthatribbonstyle</link>
            <guid>https://chris.pelatari.com/posts/2006-07-08-gafflingthatribbonstyle</guid>
            <pubDate>Sat, 08 Jul 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2006/07/thievn.png"><img class="alignnone size-full wp-image-1148" alt="thievn" src="http://chrispelatari.files.wordpress.com/2006/07/thievn.png" width="318" height="258"></a></p><p>Close enough. <a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=7858DBB6-6F4A-4A9D-B1B4-03C73AA16D15">This </a>should be fun.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Step your game up, Microsoft.]]></title>
            <link>https://chris.pelatari.com/posts/2006-06-29-stepyourgameupmicrosoft</link>
            <guid>https://chris.pelatari.com/posts/2006-06-29-stepyourgameupmicrosoft</guid>
            <pubDate>Thu, 29 Jun 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Unfortunately, the rants about WGA causing a bluescreen are true. It happened a little while ago on my home PC. Thankfully, F8 booting into safemode still works, and I was able to restore my system to a daily checkpoint. Boy am I glad <em>that </em>was setup. Installing .net 1.1 sp1 worked fine, as did an audio driver I was missing.</p><p>After having to rollback to a system restore checkpoint. </p><p>Way to go, guys.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[We'll miss you, Mr. Holmquist.]]></title>
            <link>https://chris.pelatari.com/posts/2006-06-13-wellmissyoumrholmquist</link>
            <guid>https://chris.pelatari.com/posts/2006-06-13-wellmissyoumrholmquist</guid>
            <pubDate>Tue, 13 Jun 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2006/06/mrholmquist.jpg"><img class="alignnone size-full wp-image-1150" alt="MrHolmquist" src="http://chrispelatari.files.wordpress.com/2006/06/mrholmquist.jpg" width="400" height="300"></a></p><p><a href="http://www.click2houston.com/news/9358956/detail.html?subid=10100242#">My high school principal died on Monday</a>.</p><p>This is surreal. It feels like it was just last week that I was skipping class and getting a pep talk from Mr. Holmquist in North House. Worst of all, I went to school with his daughters. Amber was in my graduating class, but she was real into sports (and I wasn&#39;t). We had a couple of classes together but I was closer to her sister Kendra, a fellow thespian.</p><p>This is so confusing...I&#39;ve been in the Holmquist house a couple of times, and now...we&#39;ll miss you, Mr. Holmquist. Alief is a sad town today.</p><p>In the unlikely event that either of my readers finds out any information about the funeral, please let me know. My cell is (281) 684-5688. Alternatively, if I find out anything I will post here.</p><p><span style="color:#ff0000;">update</span>: I got this from a friend in the district:</p><p>The Holmquist family has made the following arrangements:</p><p>Viewing services will be at Forest Park on Westheimer at Dairy Ashford on Thursday evening from 6-8 p.m.  The memorial service will be held Friday morning at 11:00 a.m. at Memoria Drive United Methodist Church on Memorial Drive between Wilcrest and the Beltway.</p><p>Respectfully,</p><p>Paula Smith</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - Using DLINQ with ASP.NET (Part 2 of my LINQ series)]]></title>
            <link>https://chris.pelatari.com/posts/2006-06-07-reusingdlinqwithasp-netpart2ofmylinqseries</link>
            <guid>https://chris.pelatari.com/posts/2006-06-07-reusingdlinqwithasp-netpart2ofmylinqseries</guid>
            <pubDate>Wed, 07 Jun 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://weblogs.asp.net/scottgu/archive/2006/06/04/Using-DLINQ-with-ASP.NET-_2800_Part-2-of-my-LINQ-series_2900_.aspx">Wow.</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Community Server 2.0 BlogML Converter Beta - success!]]></title>
            <link>https://chris.pelatari.com/posts/2006-06-06-communityserver2-0blogmlconverterbetasuccess</link>
            <guid>https://chris.pelatari.com/posts/2006-06-06-communityserver2-0blogmlconverterbetasuccess</guid>
            <pubDate>Tue, 06 Jun 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m a little bit behind on my CS releases, as I just got around to installing a fresh copy of Community Server 2.0 to test things out for one of my sites. Since I was going to upgrade an existing CS 1.1 install, I tried that method first, but ended up starting over because the original config I had was single blog and I didn&#39;t have the time nor the patience to figure out how to hack 2.0 into a single-blog install with existing content.</p><p>However, thanks to <a href="http://nayyeri.net/archive/2006/02/11/491.aspx" target="_blank" rel="noreferrer">Keyvan</a> (che khabbar!), I was able to export the 1.1 content using an HttpHandler I hacked up for exporting CS 1.1 content to BlogML and import into a new, multi-blog install of 2.0. The first thing I did was nuke both the sample weblog and the sample weblog group. Then I created a new group and weblog and used the application key assigned to the new blog to import my posts. Here is the code I used to import a blogML file into a fresh copy of Community Server 2.0</p><div class="language-vb vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vb</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Page Language </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;VB&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;System.Collections&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;System.IO&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;BlogML&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;BlogML.Xml&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;CommunityServer&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;CommunityServer.Components&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@ Import Namespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;CommunityServer.Blogs&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> %&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">script runat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;server&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&#39;Community Server 2.0 BlogML converter Beta</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&#39;Copyright Keyvan Nayyeri (www.nayyeri.net) - 2006</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&#39;BlogML Writer and Reader classes are provided by BlogML project (www.blogml.com)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Public Class </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Reader</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> _ApplicationKey </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> _Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CommunityServer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Blogs.Components.Weblog</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> _SitePath </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> _BlogCommentCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Integer</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> _BlogTrackBackCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Integer</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Sub New</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal ApplicationKey </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, ByVal SitePath </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    Me._ApplicationKey </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ApplicationKey</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    Me._SitePath </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> SitePath</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> objCSWeblogs </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CommunityServer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Blogs.Components.Weblogs</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    Me._Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> objCSWeblogs.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetWeblog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Me._ApplicationKey)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  End Sub</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  Public Sub </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LoadBlog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal XML </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As New </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">BlogMLBlog</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    Try</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BlogMLSerializer.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Deserialize</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">New </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">StringReader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(XML))</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    Catch ex </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Exception</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      Throw</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> New </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Exception</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Couldn&#39;t load your BlogML file. Maybe it is wellformedness&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    End</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    Try</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Categories </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Hashtable</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">      Categories </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ReadCategories</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Blog)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">      LoadPosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Blog, Categories)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">      UpdateStats</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Blog)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    End Sub</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    Private Function </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ReadCategories</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLBlog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Hashtable</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CategoriesHash </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As New </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Hashtable</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">      For</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Each</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Category </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLCategory</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> In Blog.Categories</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewCategory </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As New </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">PostCategory </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">With</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">  NewCategory</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          .DateCreated </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Category.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          .Description </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Category.Description</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          .IsEnabled </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Category.Approved</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          .Name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Category.Title</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          .ParentID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          .SectionID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me._Blog.SectionID</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> objCSCats </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> PostCategories</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        Try</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          objCSCats.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">CreateCategory</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(NewCategory)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        Catch ex </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Exception</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          Throw</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> New </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ArgumentException</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Error when tried to add categories to database&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">        End</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">        Try</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">          CategoriesHash.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Category.ID, Category.Title)</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">        End</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        With</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Next</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CategoriesHash</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        End Function</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        Private Sub </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LoadPosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLBlog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, ByVal CategoryHash </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Hashtable</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostAuthor </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostAuthorID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Integer</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Date</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostName </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostSubject </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            For</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Each</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLPost</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> In Blog.Posts</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As New </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommunityServer.Blogs.Components.WeblogPost</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> objCSPosts </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CommunityServer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Blogs.Components.WeblogPosts</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                With</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .PostID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.ID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .Body </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.Content.UncodedText</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .BlogPostType </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CommunityServer.Blogs.Components.BlogPostType.Post</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .Subject </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.Title</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .ThreadDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .UserTime </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .PostDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .UserTime </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .SectionID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me._Blog.SectionID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;EverPublished&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">CType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Post.Approved, Boolean))</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .IndexInThread </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> True</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .IsApproved </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> True</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .IsAggregated </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> True</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .IsLocked </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> False</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    .PostConfig </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CommunityServer.Blogs.Components.BlogPostConfig.IsAggregated</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">                End</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> With</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                &#39;Add categories</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                If</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.Categories.Count </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Then</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPostCats(Post.Categories.Count) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    For</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> i </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Integer</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> To</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.Categories.Count </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">                        NewPostCats</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(i) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CategoryHash</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Post.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Categories</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(i).Ref)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    Next</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    NewPost.Categories </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPostCats</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                End If</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                &#39;Add attachments</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                &#39;TO DO: Check to add attachments with checking the source code when RTM version has been released.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                &#39;Currently we can&#39;t load post attachments</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                objCSPosts.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(NewPost)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                &#39;Temporary saving stats</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                LastPostAuthor </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.Username</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                LastPostAuthorID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.AuthorID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                LastPostDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.PostDate</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                LastPostName </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.Name</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                LastPostSubject </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.Subject</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">                LoadComments</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(NewPost, Post)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">                LoadTrackBacks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(NewPost, Post)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            Next</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">            &#39;Update blog stats</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.MostRecentPostAuthor </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostAuthor</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.MostRecentPostAuthorID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostAuthorID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.MostRecentPostDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostDate</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.MostRecentPostName </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostName</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.MostRecentPostSubject </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> LastPostSubject</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        End Sub</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        Private Sub </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LoadComments</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal NewPost </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Post</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, ByVal Post </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLPost</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            If</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.Comments.Count </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Then</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                For</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Each</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLComment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> In Post.Comments</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewComment </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As New </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommunityServer.Blogs.Components.WeblogPost</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> objCSComments </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CommunityServer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Blogs.Components.WeblogPosts</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    With</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewComment</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .Body </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment.Content.UncodedText</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .BlogPostType </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Blogs.Components.BlogPostType.Comment</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .Subject </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment.Title</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .ThreadDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .UserTime </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .PostDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .UserTime </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Comment.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .SectionID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me._Blog.SectionID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;EverPublished&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;TitleUrl&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, Comment.UserUrl)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;SubmittedUserName&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, Comment.UserName)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .IsApproved </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Comment.Approved, Boolean)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .ParentID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.PostID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .ThreadID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.ThreadID</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">                    End</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> With</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    objCSComments.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(NewComment)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                    &#39;Update blog counter</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    Me._BlogCommentCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                Next</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            End If</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        End Sub</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        Private Sub </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LoadTrackBacks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal NewPost </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Post</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, ByVal Post </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLPost</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            If</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Post.Trackbacks.Count </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Then</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                For</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> Each</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLTrackback</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> In Post.Trackbacks</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewTrackBack </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As New </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Blogs.Components.WeblogPost</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    Dim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> objCSTrackBacks </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Blogs</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.Components.WeblogPosts</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                    With</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewTrackBack</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .Body </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack.Title</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .BlogPostType </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Blogs.Components.BlogPostType.Trackback</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .Subject </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack.Title</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .ThreadDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .UserTime </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .PostDate </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .UserTime </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TrackBack.DateCreated</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .SectionID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me._Blog.SectionID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;EverPublished&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;TitleUrl&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, TrackBack.Url)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SetExtendedAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;trackbackName&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;TrackBack&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .IsApproved </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(TrackBack.Approved, Boolean)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .ParentID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.PostID</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                        .ThreadID </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NewPost.ThreadID</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">                    End</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> With</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    objCSTrackBacks.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(NewTrackBack)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">                    &#39;Update blog counter</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                    Me._BlogTrackBackCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                Next</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            End If</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        End Sub</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        Private Sub </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">UpdateStats</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(ByVal Blog </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">As</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> BlogMLBlog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.PostCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Blog.Posts.Count</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.CommentCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me._BlogCommentCount</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">            Me._Blog.TrackbackCount </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me._BlogTrackBackCount</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        End Sub</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    End Class</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    Sub </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Page_Load</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(sender </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Object</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, e </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> EventArgs</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    	Dim </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Path </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> String</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;d:tmpBlogMLBlogML.xml&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    	Dim </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">reader </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as New </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Reader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;chris&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Request</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.PhysicalApplicationPath)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    	If</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> File.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Exists</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Path) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Then</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    		Dim </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">sr </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as New </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">StreamReader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(File.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Open</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Path, FileMode.Open))</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    		Dim </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">xml </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> sr.ReadToEnd</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">    		reader.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LoadBlog</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(xml)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    		Response</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Write</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Content moved successfully!&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    	Else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    		Response</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">Write</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Uh-oh. Something crapped.&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    	End If</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    End Sub</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/script</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">html</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    &lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">head</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    &lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/head</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    &lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">body</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        &lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">form</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> runat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;server&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">            &lt;!--</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Insert content here </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">--&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">        &lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">form</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    &lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/body</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/html</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span></code></pre></div><p>I hacked up this file in WebMatrix and slapped it into the webroot of my new CommunityServer install. This way I was able to copy the content to a local install before pushing the final product out into the wild, and I didn&#39;t have to recompile any of CS to get it working. Merci, Keyvan!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - Bad news gets worse]]></title>
            <link>https://chris.pelatari.com/posts/2006-05-12-rebadnewsgetsworse</link>
            <guid>https://chris.pelatari.com/posts/2006-05-12-rebadnewsgetsworse</guid>
            <pubDate>Fri, 12 May 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p><a href="http://www.flickr.com/photos/35034363287@N01/144087455/"><img height="192" alt="Holding my mom&#39;s hand" hspace="5" src="http://static.flickr.com/50/144087455_e8bbafbf62_m.jpg" width="240" align="top" vspace="5" border="0"></a> </p><p>How do you say goodbye? One hand squeeze at a time.</p></blockquote><p><i>[Via <a href="http://scobleizer.wordpress.com/2006/05/10/bad-news-gets-worse/">Scobleizer - Microsoft Geek Blogger</a>]</i></p><p>So what do you do when a blogger you read comes up on hard times and posts his phone number to his blog? Call him, of course. The problem is that Robert is suffering through an extremely personal trial, and right as he said &quot;hello&quot; I started thinking of how I would feel if I were in his shoes. Probably did more harm than good, but my thoughts and prayers are still with you and yours, Robert.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING - Shameless request for feedback]]></title>
            <link>https://chris.pelatari.com/posts/2006-05-10-postxingshamelessrequestforfeedback</link>
            <guid>https://chris.pelatari.com/posts/2006-05-10-postxingshamelessrequestforfeedback</guid>
            <pubDate>Wed, 10 May 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://postxing.net/gemini/issue/ViewIssue.aspx?id=32">http://postxing.net/gemini/issue/ViewIssue.aspx?id=32</a></p><p>I&#39;m about to start cracking on this issue, but I&#39;d love to get a little feedback on it before I put it into code. If either of you have an extra minute, shoot to the url above and leave a comment. I normally don&#39;t solicit feedback like this, but I kind of feel like I&#39;m missing something. Although I could just be thinking about it too much. Either way, help a code munkey out if ya can :)</p><p class="media">[ Currently Playing : This Could Be Love - Alkaline Trio - Good Mourning (3:47) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Getting a temporary filename the easy way - feedback]]></title>
            <link>https://chris.pelatari.com/posts/2006-05-04-gettingatemporaryfilenametheeasywayfeedback</link>
            <guid>https://chris.pelatari.com/posts/2006-05-04-gettingatemporaryfilenametheeasywayfeedback</guid>
            <pubDate>Thu, 04 May 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><div class="comment_author"><a>Jerry Pisk</a></div><div class="comment_content">Path.GetTempFileName() guarantees that you will get an available name, it does actually go ahead and create the file so it is guaranteed to be yours when you use it. If you strip the extension off and substitute your own you may end up overwriting an existing file. Not a smart thing to do.</div></blockquote> In my case, I just really want the filename. Whether or not I change the extension, that file is <strong>mine </strong>to do with what I will. Also, since it&#39;s not in the same folder as the originating file, it can be the exact same name, extension and all, and it will still be a different file that what was generated by the framework. I <em>should </em>take care of file cleanup, and that zero byte file <em>is </em>still in the temp directory... <blockquote><div class="comment_author"><a>Paul Welter</a></div><div class="comment_content">Be aware the GetTempFileName() actually creates a zero byte file in the temp folder. Your code will leave the temp file behind in the temp folder. If you use that a lot, you will end up with a lot of files in the temp folder.</div></blockquote> true! So, maybe I was a little quick to post about this one, but it was one of those things that struck me as particularly useful. If you just want a temporary filename, and want to clean up the file that is created by GetTempFileName(), perhaps this will work a little better: <div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GetTempFileName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> filename</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetTempFileName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	File.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Delete</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(filename);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetFileNameWithoutExtension</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(filename);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Okay y&#39;all...rip it to shreds 😃 If I&#39;ve missed something else obvious, call me out. Or, if you have a preferred method of generating temporary file names, show the way.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Getting a temporary filename the easy way]]></title>
            <link>https://chris.pelatari.com/posts/2006-05-04-gettingatemporaryfilenametheeasyway</link>
            <guid>https://chris.pelatari.com/posts/2006-05-04-gettingatemporaryfilenametheeasyway</guid>
            <pubDate>Thu, 04 May 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>If you need to generate temporary / semi-unique filenames, here is a little snippet that uses the framework:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IO</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GetTempFileName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetFileNameWithoutExtension</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetTempFileName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">());</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>As the name implies, this will return the temporary name of a file without the extension, so it&#39;s up to you to add whatever filetype you may be trying to create. For example, let&#39;s say I wanted to generate a .gif:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GetTempGifFileName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	return</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Format</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;{0}.{1}&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetTempFileName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(), </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;gif&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>I had overlooked this little piece of functionality because the component that I was using generated filenames with GUIDs, so I never really worried about it. Way to make my life easier, .netfx 😃</p><p>[ Currently Playing : Mississippi Queen - Ozzy Osbourne - Under Cover (4:11) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I Flipped a Coin]]></title>
            <link>https://chris.pelatari.com/posts/2006-05-04-iflippedacoin</link>
            <guid>https://chris.pelatari.com/posts/2006-05-04-iflippedacoin</guid>
            <pubDate>Thu, 04 May 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2006/05/before_beard.png"><img class="alignnone size-full wp-image-1154" alt="before_beard" src="http://chrispelatari.files.wordpress.com/2006/05/before_beard.png" width="187" height="208"></a> Heads: Shave the beard off entirely. Tails: just trim it down a little.</p><p>The coin flips...</p><p>and...</p><p>Heads it is. <a href="http://chrispelatari.files.wordpress.com/2006/05/after_beardless.png"><img class="alignnone size-full wp-image-1155" alt="after_beardless" src="http://chrispelatari.files.wordpress.com/2006/05/after_beardless.png" width="167" height="213"></a></p><p class="media">[ Currently Playing : imagine - John Lennon - (3:04) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[the yield statement - not so mysterious after all?]]></title>
            <link>https://chris.pelatari.com/posts/2006-04-14-theyieldstatementnotsomysteriousafterall</link>
            <guid>https://chris.pelatari.com/posts/2006-04-14-theyieldstatementnotsomysteriousafterall</guid>
            <pubDate>Fri, 14 Apr 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p><img height="1" src="http://blogs.msdn.com/aggbug.aspx?PostID=565559" width="1"></p></blockquote><p><i>[Via <a href="http://blogs.msdn.com/jfoscoding/archive/2006/03/31/565559.aspx">jfo&#39;s coding</a>]</i></p><p>I&#39;ll admit, I haven&#39;t thought a whole lot about yield because, well, I couldn&#39;t find anything that described what it did in terms I could understand. I just kept thinking &quot;oh, cool, another new feature in .net 2.0 that I&#39;ll get to learn by the time 3.0 comes out&quot; and moved on to the next task.</p><p>Thinking about it as kind of a &quot;macro&quot; (similar to what a using(){} block does) lets it gel a little better.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Visual Studio 2005 Designer - Touchy, Thouchy!]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-31-visualstudio2005designertouchythouchy</link>
            <guid>https://chris.pelatari.com/posts/2006-03-31-visualstudio2005designertouchythouchy</guid>
            <pubDate>Fri, 31 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>If you do anything &quot;out of the ordinary&quot; in your UserControl or Form derived classes in Visual Studio 2005, let me introduce you to a little snippet that will probably save you lots of headaches:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ( DesignMode ) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span></code></pre></div><p>or, its equally useful counterpart</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">DesignMode){</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">	doStuff</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Now, the &quot;out of the ordinary&quot; thing I was doing was...hooking up an instance EventHandler using a static property that exposes a Form derived class in an OnLoad override. What? I know, not the clearest situation, and probably one that could use a boatload of refactoring, but it works. In short, if you are having designer problems in Visual Studio 2005, it may be worth it to sit back for a bit and think about what introduced the designer error. Prime candidates are constructors and OnLoad overrides that use static methods for functionality. This code didn&#39;t allow me to view the designer of a <em>different </em>form:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> override</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> OnLoad</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">EventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	AppManager.ConcreteEditorForm.NewPostCreated </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> EventHandler</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(HandleNewPost);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>while this one would:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> override</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> OnLoad</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">EventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( DesignMode ) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	AppManager</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">..</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[NetVibe - Listen for SSID change]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-20-netvibelistenforssidchange</link>
            <guid>https://chris.pelatari.com/posts/2006-03-20-netvibelistenforssidchange</guid>
            <pubDate>Mon, 20 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve updated the NetVibe source with a mildly useful update: listening for changes in SSID as well as IP Addresses. The source is hosted at <a href="http://chrisfrazier.net:8080/NetVibe">http://chrisfrazier.net:8080/NetVibe</a> on a subversion server.</p><p>I used <a href="http://www.furrygoat.com/2004/05/finding_your_cu.html">some code that I found at the FurryGoat experience</a>, modified it a little bit, and it seems that it&#39;s at least useful in detecting if an SSID ends with something...for example, my WiFi at work has an SSID of VelocityDatabank, so I created a rule to look for an SSID/IP Address that EndsWith Databank. This code definitely needs improvement, but I have found it very useful, and now I don&#39;t have to have different network segments specified at each of the different WiFi spots I connect to.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - SecurePasswordTextBox update]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-14-resecurepasswordtextboxupdate</link>
            <guid>https://chris.pelatari.com/posts/2006-03-14-resecurepasswordtextboxupdate</guid>
            <pubDate>Tue, 14 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This looks interesting. I thought Mr. &quot;<a href="http://weblogs.asp.net/pglavich/archive/2006/03/12/440050.aspx">Just finished my last chapter of Beginning AJAX</a>&quot; would have for sure created this as an asp.net control...guess I should have read closer the first time ;) Could be useful in <a href="http://postxing.net">PostXING</a>, ifn we ever put some real security innit.</p><blockquote><p>Since there has been so much interest in the SecurePasswordTextBox control (see my previous post <a href="http://weblogs.asp.net/pglavich/archive/2006/02/26/439077.aspx">http://weblogs.asp.net/pglavich/archive/2006/02/26/439077.aspx</a> and <a href="http://weblogs.asp.net/pglavich/archive/2006/03/12/440052.aspx">http://weblogs.asp.net/pglavich/archive/2006/03/12/440052.aspx</a> ), I thought I would take the time to iron out the bugs. When I first released it, I performed minimal testing (i.e. about 15 minutes worth) and just thought if anybody else is interested, then I might put some real effort in.</p><p>Well since then it was featured in an <a href="http://blogs.msdn.com/dansellers/archive/2006/03/08/546679.aspx">MSDN webcast by Dan Sellers </a>of Microsoft and I have received almost 300 downloads in a short span of time. So just as a quick courtesy note, it has now been updated to V1.1 and works (AFAIK) 100%. Previous versions didn&#39;t handle certain situations property where text in the middle was selected and you typed a character, it would simply append the char and not do a replacement (thanks Nick :-) )</p><p>All is now well. Go grab it from <a href="http://www.theglavs.com/DownloadItem.aspx?FileID=46">here</a><a href="http://www.theglavs.com/DownloadItem.aspx?FileID=46">http://www.theglavs.com/DownloadItem.aspx?FileID=46</a></p><p>For those unaware, its a Windows Forms TextBox control that uses the .Net V2 SecureString class to store its contents. Basically, you now have a UI control that allows directly entry into this secure string class and makes it useable from a windows UI perspective. (See my <a href="http://weblogs.asp.net/pglavich/archive/2006/02/26/439077.aspx">previous post</a> for a full explanation.)</p></blockquote><i>[Via <a href="http://weblogs.asp.net/pglavich/archive/2006/03/14/440191.aspx">Glavs Blog</a>]</i></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[tësting ûnïcode]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-13-testingunicode</link>
            <guid>https://chris.pelatari.com/posts/2006-03-13-testingunicode</guid>
            <pubDate>Mon, 13 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Sorry I keep putting out these tests, but I&#39;m trying to see what different regexes will do to a friendly url in subtext. Nothing more to see here.</p><p class="media">[ Currently Playing : Have You Heard? - ZZ Top - Tres Hombres (3:12) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Quick shoutout to RegexLib.com]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-13-quickshoutouttoregexlib-com</link>
            <guid>https://chris.pelatari.com/posts/2006-03-13-quickshoutouttoregexlib-com</guid>
            <pubDate>Mon, 13 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve got weak regex skillz. I&#39;ll admit it. </p><p>I don&#39;t use them very much, so when I do need to, it&#39;s nice to know that regexlib is sitting there, waiting for me to come to it with my regex needs. In particular, there is an online <a href="http://regexlib.com/RETester.aspx">Regular Expression Tester</a> that has helped me to look smarter than I actually am on more than one occasion. Sure, I could use a desktop tool for my regex needs (and sometimes I do), but regexlib has the added bonus of having a collection of user-contributed regular expressions that are super useful when looking for ideas on how to implement a certain regex. </p><p>And let&#39;s not forget the <a href="http://regexlib.com/CheatSheet.aspx">Cheat Sheet</a> ... regexlib is just chock full of regex goodness.</p><p class="media">[ Currently Playing : The First Drop - Rise Against - (2:39) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[BackgroundWorker.isRunning - take two]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-12-backgroundworkerisrunningtaketwo</link>
            <guid>https://chris.pelatari.com/posts/2006-03-12-backgroundworkerisrunningtaketwo</guid>
            <pubDate>Sun, 12 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I can&#39;t believe nobody called me on this: <a href="http://msdn2.microsoft.com/en-US/library/system.componentmodel.backgroundworker.isbusy(VS.80).aspx">BackgroundWorker.IsBusy Property</a></p><p>Reflector says it does exactly what I was looking for in a <a href="http://chrisfrazier.net/blog/archive/2006/02/11/440.aspx">previous post</a>.</p><p>Technorati Tags:  <a href="http://www.technorati.com/tag/Windows Forms" rel="tag">Windows Forms</a>  <a href="http://www.technorati.com/tag/BackgroundWorker" rel="tag">BackgroundWorker</a>  </p><p></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - What is with Blogger.com?]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-10-rewhatiswithbloggercom</link>
            <guid>https://chris.pelatari.com/posts/2006-03-10-rewhatiswithbloggercom</guid>
            <pubDate>Fri, 10 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I had tried to reply to this post on WinExtra, but it errored out on me. So, here&#39;s what the comment said:</p><p>Blogger uses Atom feeds located at <a href="http://blogdomain/atom.xml">http://blogdomain/atom.xml</a> The fact that the skins provided don&#39;t reflect this is the pain point...you&#39;d see a link if you view sourced it:</p><pre><span style="color:blue;">&lt;</span><span style="color:maroon;">link</span> <span style="color:red;">rel</span>=&quot;<span style="color:blue;">alternate</span>&quot; <span style="color:red;">type</span>=&quot;<span style="color:blue;">application/atom+xml</span>&quot; <span style="color:red;">title</span>=&quot;<span style="color:blue;">Blue Phoenix</span>&quot; <span style="color:red;">href</span>=&quot;<span style="color:blue;">atom.xml</span>&quot; /<span style="color:blue;">&gt;</span></pre><p>Also, get rid of that captcha (I hate those!) use ReverseDoS instead: <a href="http://angrypets.com/tools/rdos">http://angrypets.com/tools/rdos</a></p><blockquote><p>Blogging is cool and rss feeds make it even better for the reader/user; but only if blog hosts provide a mechanism for the blogger to have an RSS feed on their site which most do. </p><p>The only exception I have found so far is blogs hosted by Blogger.com. Now I don&#39;t know if it is a setting that individual bloggers need to set but not one of the blogs on Blogger.com that I like seem to have an RSS feed. </p><p>What is up with that silliness? </p><p><strong>Now playing:</strong> New Phunk Theory - La Neblina Del Verano </p><br><hr> This weblog is sponsored by <a href="http://www.winextra.com">WinExtra</a>. </blockquote><i>[Via <a href="http://www.winextra.com/2006/03/10/What+Is+With+Bloggercom.aspx">The World of WinExtra</a>]</i></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING - It's Beta Time!]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-09-postxingitsbetatime</link>
            <guid>https://chris.pelatari.com/posts/2006-03-09-postxingitsbetatime</guid>
            <pubDate>Thu, 09 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2006/03/postxing_beta.gif"><img class="alignnone size-full wp-image-1157" alt="postxing_beta" src="http://chrispelatari.files.wordpress.com/2006/03/postxing_beta.gif" width="192" height="190"></a></p><p>For the adventurous among you, we&#39;ve decided to release beta 1 of <a href="http://postxing.net">PostXING</a> available for <a href="http://projectdistributor.net/Releases/Release.aspx?releaseId=325">download at ProjectDistributor</a>!</p><p>There are a few known issues, but as far as I know there aren&#39;t any showstopper bugs. I&#39;ve been running the development build for quite some time now, and for PostXING v1.1 users, I think this release is a big step up in terms of usability. Since the only working provider at this time is the MetaBlogProvider, the <strong>functionality</strong> remains basically the same, i.e. you can manage a MetaWeblog enabled weblog using PostXING from your desktop.</p><p>If you find any issues, bugs, or you just think something could be done better, head on over to the <a href="http://postxing.net/gemini">Gemini issue tracker</a>. To add an issue, click the <a href="http://postxing.net/gemini/Issues.aspx?pi=1&amp;m=1">All Issues link</a> and then Create Issue at the top of the page. If you don&#39;t want to get that involved, you can always use the <a href="http://www.postxing.net/blog/contact.aspx">contact form over at PostXING.net</a> to at least get your issue addressed...or you could just let it ride and hope I run into it myself 😃</p><p>If you&#39;re feeling <em>really</em> adventurous and want to hack on PostXING, you can do so by using <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> and pointing to <a href="http://postxing.net:8080/PostXING"><a href="http://postxing.net:8080/PostXING" target="_blank" rel="noreferrer">http://postxing.net:8080/PostXING</a></a>. All main development is done on the trunk by version. If you don&#39;t like how something works, send me a diff. I think I&#39;ve been pretty receptive to criticism and feature requests (even tho we can&#39;t put them <em>all</em> in at once), so the very least that will happen is that you will be able to use a program that you feel works better. Thanks, and enjoy!</p><p>[ Currently Playing : Jesus Just Left Chicago - ZZ Top - Tres Hombres (3:31) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Source, are you useful again?]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-07-sourceareyouusefulagain</link>
            <guid>https://chris.pelatari.com/posts/2006-03-07-sourceareyouusefulagain</guid>
            <pubDate>Tue, 07 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>testing source</p><p>: nope. </p><p>: almost: I get a reference to the source, but it&#39;s based with the skin&#39;s control directory.</p><p>: BAM! gotta put http:// at the beginning. sweet, I missed that one.</p><p class="media">[ Currently Playing : Sheik - ZZ Top - Tres Hombres (4:04) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[SubText, BlogML, and PostXING]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-07-subtextblogmlandpostxing</link>
            <guid>https://chris.pelatari.com/posts/2006-03-07-subtextblogmlandpostxing</guid>
            <pubDate>Tue, 07 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2006/03/postxing.png"><img class="alignnone size-full wp-image-1159" alt="PostXING" src="http://chrispelatari.files.wordpress.com/2006/03/postxing.png" width="593" height="420"></a></p><p>This is the end result after setting up <a href="http://subtextproject.com/">SubText </a>and importing my old blog (now <a href="http://chrisfrazier.net/cs11">moved to here</a>). I had created a blogML exporter for <a href="http://communityserver.org">cs11</a> and ran into some initial problems because the version of <a href="http://blogml.com">BlogML</a> I had used was a smidge older (v0.9) and therefore had a different schema. Kinda makes me wish there were a way to clear out all the content and start over like <a href="http://projectdistributor.net/Projects/Project.aspx?projectId=131">subv2 </a>allows me to.</p><p>So why didn&#39;t I go with subv2? (Sorry, <a href="http://markitup.com">Darren</a>) The admin interface and WebParts&#39; silly requirement of IE. I basically live in <a href="http://getfirefox.com">FireFox</a> and although it&#39;s been quite some time since I&#39;ve posted thru the web interface of .text/CS::Blogs, I do need to go in from time to time and make some changes. Plus, since subtext was forked off of .text, I&#39;m already pretty familiar with the interface (and some of the code when necessary). Subv2 is a real nice exploration of all the fun new doohickeys in .net 2.0, and with Darren at the helm you know it&#39;s high-quality stuff, but I need something that works for me in the environment I choose to work with. Either way, I&#39;ve got an install of Subv2 behind the firewall so I could just make that one public and import my shiny new blogML file if need be: I&#39;m keeping a definite eye on it, that&#39;s for sure.</p><p class="media">[ Currently Playing : Move Me on Down the Line - ZZ Top - Tres Hombres (2:30) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING plugin - MetaPinger]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-01-postxing-plugin-metapinger</link>
            <guid>https://chris.pelatari.com/posts/2006-03-01-postxing-plugin-metapinger</guid>
            <pubDate>Wed, 01 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, it turns out that PostXING&#39;s mystery plugin author is none other than Taras Naumtsev, and Taras is on fire! Check out the new MetaPinger plugin:</p><blockquote><p><strong>MetaPinger</strong> is a <a href="http://postxing.net/">PostXING</a> plugin that notifies a number of services that keep track of <br>weblogs and publish them. By pinging, you let the services know that your blog has been updated , <br>they crawl your blog, publishing your site contents, thus increasing your blog&#39;s popularity. </p><p><img alt="MetaPinger" src="http://devintelligence.com/blog-images/MetaPinger.png" align="baseline" border="0"></p><p><br>Setup<br>Extract the ZIP archive into the &quot;plugins&quot; subdirectory of PostXING&#39;s install directory</p><p>Configuration<br>You will need to configure MetaPinger plugin to notify ping services.<br>Enter blog name.<br>Enter blog url.<br>Add ping service urls ( one per line )</p><p><img alt="MetaPinger - Configuration" src="http://devintelligence.com/blog-images/MetaPinger-Configuration.png" align="baseline" border="0"></p><p>Usage<br>To ping press the &quot;Ping&quot; button. </p><p><a href="http://http://www.devintelligence.com/downloads/MetaPinger-1.0_zip.aspx">Download MetaPinger plugin</a></p><p> </p><p>MetaPinger has been tested with the following ping services:<br><a href="http://1470.net/api/ping">http://1470.net/api/ping</a><br><a href="http://api.feedster.com/ping">http://api.feedster.com/ping</a><br><a href="http://api.moreover.com/RPC2">http://api.moreover.com/RPC2</a><br><a href="http://api.moreover.com/ping">http://api.moreover.com/ping</a><br><a href="http://api.my.yahoo.com/RPC2">http://api.my.yahoo.com/RPC2</a><br><a href="http://blogdb.jp/xmlrpc">http://blogdb.jp/xmlrpc</a><br><a href="http://blog.goo.ne.jp/XMLRPC">http://blog.goo.ne.jp/XMLRPC</a><br><a href="http://coreblog.org/ping/">http://coreblog.org/ping/</a><br><a href="http://ping.blo.gs/">http://ping.blo.gs/</a><br><a href="http://ping.bloggers.jp/rpc/">http://ping.bloggers.jp/rpc/</a><br><a href="http://ping.blogmura.jp/rpc/">http://ping.blogmura.jp/rpc/</a><br><a href="http://ping.cocolog-nifty.com/xmlrpc">http://ping.cocolog-nifty.com/xmlrpc</a><br><a href="http://ping.syndic8.com/xmlrpc.php">http://ping.syndic8.com/xmlrpc.php</a><br><a href="http://rpc.blogbuzzmachine.com/RPC2">http://rpc.blogbuzzmachine.com/RPC2</a><br><a href="http://rpc.blogrolling.com/pinger/">http://rpc.blogrolling.com/pinger/</a><br><a href="http://rpc.technorati.com/rpc/ping">http://rpc.technorati.com/rpc/ping</a><br><a href="http://www.weblogues.com/RPC/">http://www.weblogues.com/RPC/</a><br></p><p> </p><p>Technorati Tags:  <a href="http://www.technorati.com/tag/PostXING">PostXING</a>  <a href="http://www.technorati.com/tag/Tagging">Tagging</a>  <a href="http://www.technorati.com/tag/Utility">Utility</a>  <a href="http://www.technorati.com/tag/Software">Software</a>  <a href="http://www.technorati.com/tag/Blogware">Blogware</a>  <a href="http://www.technorati.com/tag/Plugin">Plugin</a>  </p><p><img height="1" src="http://devintelligence.com/cs/aggbug.aspx?PostID=1161" width="1"></p></blockquote><i>[Via <a href="http://devintelligence.com/cs/blogs/netadventures/archive/2006/03/01/1161.aspx">.Net Adventures </a>]</i><p> </p><p class="media">[ Currently Playing : Beef (Feat. Mobb Deep) - The Notorious B.I.G - (4:57) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING plugin - TechnoratiTagger]]></title>
            <link>https://chris.pelatari.com/posts/2006-03-01-postxing-plugin-technoratitagger</link>
            <guid>https://chris.pelatari.com/posts/2006-03-01-postxing-plugin-technoratitagger</guid>
            <pubDate>Wed, 01 Mar 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Holy Schnikeys!</p><p>Someone has actually built a plugin for <a href="http://postxing.net">PostXING</a>! Ladies and gentlemen, Allow me to introduce the <a href="http://devintelligence.com/cs/blogs/netadventures/archive/2006/02/28/1157.aspx">TechnoratiTagger plugin for PostXING</a>! Unfortunately, I&#39;m not 100% sure who wrote it (well, it&#39;s not obvious from the site). The good news is...it works! :) It even works with the spankin new, begging to be released v2 beta I have on my machine, and it works well!</p><p>Technorati Tags:  <a href="http://www.technorati.com/tag/PostXING" rel="tag">PostXING</a>  <a href="http://www.technorati.com/tag/Technorati Tags" rel="tag">Technorati Tags</a>  <a href="http://www.technorati.com/tag/Plugins" rel="tag">Plugins</a>  </p><p></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[FIX - Design View error in VS 2005]]></title>
            <link>https://chris.pelatari.com/posts/2006-02-20-fix-design-view-error-in-vs-2005</link>
            <guid>https://chris.pelatari.com/posts/2006-02-20-fix-design-view-error-in-vs-2005</guid>
            <pubDate>Mon, 20 Feb 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://support.microsoft.com/kb/912019/en-us">Here&#39;s a link to the hotfix </a>for the winforms designer error that looks like this:</p><blockquote style="margin-right:0;"><p></p></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Got My ASP.NET Podcast Shirt]]></title>
            <link>https://chris.pelatari.com/posts/2006-02-15-got-my-asp-net-podcast-shirt</link>
            <guid>https://chris.pelatari.com/posts/2006-02-15-got-my-asp-net-podcast-shirt</guid>
            <pubDate>Wed, 15 Feb 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I got my <a href="http://aspnetpodcast.com">ASP.NET Podcast </a>shirt, and there&#39;s a <em>lot</em> of Wally to be had it seems...</p><p><a href="http://chrispelatari.files.wordpress.com/2006/02/image_144.jpg"><img class="alignnone size-full wp-image-1162" alt="IMAGE_144" src="http://chrispelatari.files.wordpress.com/2006/02/image_144.jpg" width="320" height="240"></a></p><p>You can&#39;t really tell from this pic, but the image of Wally takes up nearly the <em>entire back</em> of the shirt...</p><p><a href="http://chrispelatari.files.wordpress.com/2006/02/image_154.jpg"><img class="alignnone size-full wp-image-1163" alt="IMAGE_154" src="http://chrispelatari.files.wordpress.com/2006/02/image_154.jpg" width="320" height="240"></a></p><p>But even this looks phenomenal on yours truly 😛</p><p class="media">[ Currently Playing : Last Call - Kanye West - (12:41) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Subversion on Windows]]></title>
            <link>https://chris.pelatari.com/posts/2006-02-14-subversion-on-windows</link>
            <guid>https://chris.pelatari.com/posts/2006-02-14-subversion-on-windows</guid>
            <pubDate>Tue, 14 Feb 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been wanting to setup <a href="http://subversion.tigris.org">subversion</a> for <a href="http://postxing.net">PostXING</a> for a while so I can have more control over who has commit access and various adminy tasks that are only available thru emailing the already busy staff of <a href="http://sourcegear.com">sourcegear</a> when hosting code on <a href="http://vaultpub.sourcegear.com">vaultpub</a>.</p><p>Thankfully, I&#39;m not the only person who has had this idea. To that end, <a href="http://blogs.clearscreen.com/migs/archive/2005/01/21/824.aspx">this blog post </a>was instrumental in outlining the steps to take to get subversion up and running on a windows box. The only issue that I had which was rather annoying was I kept getting an error stating that svn was &quot;unable to open an ra_local session to URL&quot; when trying to import code on the host. So, I did things the painfully slow way of adding files/folders from a client machine that already had the code on it. The good news is that PostXING now has its own subversion repository: <a href="svn://postxing.net/PostXING">svn://postxing.net/PostXING</a> read access is still there for all, but now I can specify who can and cannot commit changes. So nice.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[BackgroundWorker.isRunning]]></title>
            <link>https://chris.pelatari.com/posts/2006-02-11-backgroundworker-isrunning</link>
            <guid>https://chris.pelatari.com/posts/2006-02-11-backgroundworker-isrunning</guid>
            <pubDate>Sat, 11 Feb 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is a private boolean member of the new <a href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx" target="_blank" rel="noreferrer">BackgroundWorker</a> class in .NET 2.0. If it were public, perhaps there would be less questions like <a href="http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=359244" target="_blank" rel="noreferrer">this one on the gotdotnet messageboards</a>. I ran into a similar problem recently and decided that instead of catching an exception when the <a href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx" target="_blank" rel="noreferrer">BackgroundWorker</a> is running, I would emulate the isRunning member myself. Since this is multithreaded by its nature, I decided to use a <a href="http://www.mono-project.com/Coding_Guidelines#Locking_and_Threading" target="_blank" rel="noreferrer">lock object</a> to control access to a static boolean member in the class that uses the <a href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx" target="_blank" rel="noreferrer">BackgroundWorker</a> component.</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">static</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> bool</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> isRunningBgWorker</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">static</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> lockObj</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> object</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">..</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">isRunningBgWorker) {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">	this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.backgroundWorker1.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">RunWorkerAsync</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>I check to see if it&#39;s running before even setting it off to do the work.</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">private</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> backgroundWorker1_DoWork</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sender</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">DoWorkEventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	lock</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (lockObj) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		isRunningBgWorker </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span></code></pre></div><p>The first thing that happens when the DoWork eventhandler is called and</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">private</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> backgroundWorker1_RunWorkerCompleted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sender</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">RunWorkerCompletedEventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">..</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	lock</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (lockObj) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		isRunningBgWorker </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>the last thing when the work is completed: controlled access to the isRunningBgWorker member. Hope this helps somebody else out there who is having trouble with the <a href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx" target="_blank" rel="noreferrer">BackgroundWorker</a> component.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[All In Your Head& - DJ Fred Castillo]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-30-all-in-your-head-dj-fred-castillo</link>
            <guid>https://chris.pelatari.com/posts/2006-01-30-all-in-your-head-dj-fred-castillo</guid>
            <pubDate>Mon, 30 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2006/01/06-05-04_1755.jpg"><img class="alignnone size-full wp-image-1165" alt="06-05-04_1755" src="http://chrispelatari.files.wordpress.com/2006/01/06-05-04_1755.jpg" width="593" height="444"></a></p><p>This is in the year 2004BB (Before Beard)</p><p class="media">[ Currently Playing : Just A Memory Featuring The C - The Notorious B.I.G - (4:30) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[CIDR Notation Cheat Sheet]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-28-cidr-notation-cheat-sheet</link>
            <guid>https://chris.pelatari.com/posts/2006-01-28-cidr-notation-cheat-sheet</guid>
            <pubDate>Sat, 28 Jan 2006 00:00:00 GMT</pubDate>
            <description><![CDATA[<blockquote>
  <p>CIDR        Total number    Network  
             Description:<br />Notation:  
   of addresses:  
   Mask:<br />]]></description>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>CIDR        Total number    Network             Description:<br>Notation:   of addresses:   Mask:<br>--------------------------------------------------------------<br>/0          4,294,967,296   0.0.0.0             Every Address<br>/1          2,147,483,648   128.0.0.0           128 /8 nets<br>/2          1,073,741,824   192.0.0.0           64 /8 nets<br>/3          536,870,912     224.0.0.0           32 /8 nets<br>/4          268,435,456     240.0.0.0           16 /8 nets<br>/5          134,217,728     248.0.0.0           8 /8 nets<br>/6          67,108,864      252.0.0.0           4 /8 nets<br>/7          33,554,432      254.0.0.0           2 /8 nets<br>/8          16,777,214      255.0.0.0           1 /8 net<br>--------------------------------------------------------------<br>/9          8,388,608       255.128.0.0         128 /16 nets<br>/10         4,194,304       255.192.0.0         64 /16 nets<br>/11         2,097,152       255.224.0.0         32 /16 nets<br>/12         1,048,576       255.240.0.0         16 /16 nets<br>/13         524,288         255.248.0.0         8 /16 nets<br>/14         262,144         255.252.0.0         4 /16 nets<br>/15         131.072         255.254.0.0         2 /16 nets<br>/16         65,536          255.255.0.0         1 /16<br>--------------------------------------------------------------<br>/17         32,768          255.255.128.0       128 /24 nets<br>/19         16,384          255.255.192.0       64 /24 nets<br>/19         8,192           255.255.224.0       32 /24 nets<br>/20         4,096           255.255.240.0       16 /24 nets<br>/21         2,048           255.255.248.0       8 /24 nets<br>/22         1,024           255.255.252.0       4 /24 nets<br>/23         512             255.255.254.0       2 /24 nets<br>/24         256             255.255.255.0       1 /24<br>--------------------------------------------------------------<br>/25         128             255.255.255.128     Half of a /24<br>/26         64              255.255.255.192     Fourth of a /24<br>/27         32              255.255.255.224     Eighth of a /24<br>/28         16              255.255.255.240     1/16th of a /24<br>/29         8               255.255.255.248     5 Usable addresses<br>/30         4               255.255.255.252     1 Usable address<br>/31         2               255.255.255.254     Unusable<br>/32         1               255.255.255.255     Single host<br>--------------------------------------------------------------<br></p><img height="1" src="http://sms-forums.com/aggbug.aspx?PostID=18" width="1"></blockquote><p><i>[Via <a href="http://sms-forums.com/blogs/pmurphy/archive/2006/01/26/18.aspx">(Is it even a box?)</a>]</i></p><p>I&#39;ve needed this a few times myself...thanks, Paul.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[MSBuild - Date-based build number blues]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-26-msbuild-date-based-build-number-blues</link>
            <guid>https://chris.pelatari.com/posts/2006-01-26-msbuild-date-based-build-number-blues</guid>
            <pubDate>Thu, 26 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>According to <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=193986&amp;SiteID=1" target="_blank" rel="noreferrer">this thread</a>, Microsoft may run into visioning problems if they stick with their new build number scheme (major.minor.yMMdd.revision) next year. A Version in the .NET framework consists of 4 integers for the major, minor, build number, and revision in that format. When the build number uses the year as the first digit, it becomes 3.0.70101.0 for example on January 1st of next year. The build number only goes up to 65535. Oops. As an alternative, I think I&#39;ll be sticking with the BuildDay method, using the <a href="http://code.mattgriffith.net/UpdateVersion/" target="_blank" rel="noreferrer">UpdateVersion tool</a>. I was hoping to be able to use the <a href="http://msbuildtasks.com/files/3/tasks/entry3.aspx" target="_blank" rel="noreferrer">AssemblyInfoTask</a> to add a conditional task directly into my .csproj file, but maybe I can use some form of <a href="http://msdn2.microsoft.com/en-us/library/x8zx72cd(en-US,VS.80).aspx" target="_blank" rel="noreferrer">Exec task</a> voodoo to get the UpdateVersion working with my build. I only want to update the version number when I compile in release mode, so hopefully I can write something with Condition=&quot; &#39;$(Configuration)&#39; == &#39;release&#39;&quot; in the BeforeCompile target.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Thanks, RssBandit.]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-24-thanks-rssbandit</link>
            <guid>https://chris.pelatari.com/posts/2006-01-24-thanks-rssbandit</guid>
            <pubDate>Tue, 24 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://rssbandit.org" target="_blank" rel="noreferrer">RssBandit</a> has been a big inspiration for some of the specific features of <a href="http://postxing.net" target="_blank" rel="noreferrer">PostXING</a>. As a matter of fact, where possible I&#39;ve used code from RssBandit directly. At least half of proxy support, most of the plugin loading logic, and most recently (like you don&#39;t have it unless you monitor the branches for postxing) a little-used, very useful interface: IMessageFilter. IMessageFilter is only implemented by the splitter control in the framework (according to reflector) but was extremely helpful in the quest to better handle the keyboard. There is only one method defined on the interface:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: thanks, rssbandit :)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> bool</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> PreFilterMessage</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ref</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Message</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> m</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  ..</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>The code then looks for the WM_KEYDOWN or WM_SYSKEYDOWN messages and handles things according to whatever rules you put in there. To get it hooked up, I simply overrode OnActivate and OnDeactivate and added Application.Add/RemoveMessageFilter(this);</p><p>I figured if I already posted the problem, I might as well post a solution as well. This was really helpful to the flat spot that was forming on my forehead, so thanks again RssBandit.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Gmail Delete Button]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-20-gmail-delete-button</link>
            <guid>https://chris.pelatari.com/posts/2006-01-20-gmail-delete-button</guid>
            <pubDate>Fri, 20 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Broseph.</p><p>This was the <strong>first</strong> thing that I requested from gmail, and they&#39;ve taken it up a notch - instead of only deleting messages, it notifies you if there are messages in a current &quot;conversation&quot; that have already been deleted:</p><p>  32 deleted messages in this conversation. <span class="lk" id="str">View messages</span> or <span class="lk" id="dlf">delete forever</span>.</p><p>Nice.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - PostXING - Better Keyboard Support]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-19-re-postxing-better-keyboard-support</link>
            <guid>https://chris.pelatari.com/posts/2006-01-19-re-postxing-better-keyboard-support</guid>
            <pubDate>Thu, 19 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Heh, oops. This is what happens when the tool that you are building is the same tool you are using to make tech notes to yourself.* Really, there should be a bugtracker in place so that I can have a central organized spot to have bug reports, feedback, etc.</p><p>Anyone have any suggestions? I&#39;ve used (and liked) gemini, but delusions of granduer aside the 10 user limit gives me pause. I want <a href="http://postxing.net">PostXING</a> to remain free, so any supporting items like this need to be free as well.</p><p>*yes, most of my notes do look like this.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[MonoDevelop to get a Design-Enabled]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-17-monodevelop-to-get-a-design-enabled</link>
            <guid>https://chris.pelatari.com/posts/2006-01-17-monodevelop-to-get-a-design-enabled</guid>
            <pubDate>Tue, 17 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It&#39;s for glade3, but <a href="http://primates.ximian.com/~lluis/blog/pivot/entry.php?id=47">having a designer </a>will definitely get me looking at Mono again. </p><p class="media">[ Currently Playing : Motel of the white locust - Glassjaw - Everything you ever wanted to know about silence (8:41) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Got my new glasses]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-13-got-my-new-glasses</link>
            <guid>https://chris.pelatari.com/posts/2006-01-13-got-my-new-glasses</guid>
            <pubDate>Fri, 13 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Strictly filed under &quot;As if you cared&quot;.</p><p><img src="http://www.chrisfrazier.net/images/new_glasses.png"></p><p class="media">[ Currently Playing : Audioslave / Out Of Exile - Audioslave - Out Of Exile (4:53) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[MVP Again]]></title>
            <link>https://chris.pelatari.com/posts/2006-01-11-mvp-again</link>
            <guid>https://chris.pelatari.com/posts/2006-01-11-mvp-again</guid>
            <pubDate>Wed, 11 Jan 2006 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I got selected for the <a href="http://mvp.support.microsoft.com/">MVP </a>award again this year. Many thanks to BenMi, who has been an awesome lead this whole time. You rock, dude.</p><p>I was also awarded the (unofficial) <a href="http://angrypets.com/tools/rdos">ReverseDoS</a> MVP award for my unending quest to tell anyone who is fed up with comment spam about it. If you&#39;re running an asp.net blogging engine (really, anything that could generate spam from automated bots that runs asp.net) you owe it to yourself to check this component out.</p><p>Since installing and configuring it correctly, I have gotten exactly 1 (one) comment spam, and it was a manual entry. None that are automated, tho. Nice :)</p><p class="media">[ Currently Playing : demon days - Gorillaz - (4:28) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING v2 alpha and proxies]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-23-postxing-v2-alpha-and-proxies</link>
            <guid>https://chris.pelatari.com/posts/2005-12-23-postxing-v2-alpha-and-proxies</guid>
            <pubDate>Fri, 23 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;d like to apologize if any users of <a href="http://postxing.net">PostXING</a> have to go thru proxies...I&#39;ve been bugchasing this evening and it occurred to me that specifying a proxy for a new blog is kind of...well, weird.</p><p>First, it&#39;s a wizard-style dialog, so you expect the next/back buttons to work like it would in say an installer (well, I would anyways). Instead, you&#39;ve got to specify at least a host, &quot;page&quot;, and port, click on a special linkbutton (not next), click back to specify now the rest of the properties (including re-typing what you&#39;ve already typed) and <em>then</em> you can go to select which blog you want to use.</p><p>I don&#39;t have an answer for this yet, but I&#39;m working on it. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Yahoo! Widgets (Konfabulator) 3.0.2]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-21-yahoo-widgets-konfabulator-3-0-2</link>
            <guid>https://chris.pelatari.com/posts/2005-12-21-yahoo-widgets-konfabulator-3-0-2</guid>
            <pubDate>Wed, 21 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I wanted to install the newest version of Konfabulator to one of my computers, so I went to <a href="http://www.konfabulator.com">www.konfabulator.com</a> and tried to install the latest version (3.0.1 earlier today, 3.0.2 this evening) but instead of getting the 11MB download that the site reports, I get a little &lt;500KB file called widgetsus.exe. </p><p>According to some forum posts, I&#39;m not the only person having problems here. My problem was that no computers that didn&#39;t already have an earlier version of Konfabulator would actually install off of this file. So I looked thru a few more forum posts and found a url to 3.0.1 (<a href="http://us.dl1.yimg.com/download.yahoo.com/dl/widgets/us/yahoowidgets3x77.exe">http://us.dl1.yimg.com/download.yahoo.com/dl/widgets/us/yahoowidgets3x77.exe</a>) and was then able to guess for the 3.0.2 version (<a href="http://us.dl1.yimg.com/download.yahoo.com/dl/widgets/us/yahoowidgets3x79.exe">http://us.dl1.yimg.com/download.yahoo.com/dl/widgets/us/yahoowidgets3x79.exe</a>) these are the files that the web installer are <em>supposed</em> to download, but don&#39;t. </p><p>Hopefully me posting this won&#39;t tip off the developers and make them choose a different naming scheme. Better yet, why not just let end users download the installer instead of <em>having</em> to go thru the web installer.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[MSN Spaces opens up MetaWeblog API support]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-13-msn-spaces-opens-up-metaweblog-api-support</link>
            <guid>https://chris.pelatari.com/posts/2005-12-13-msn-spaces-opens-up-metaweblog-api-support</guid>
            <pubDate>Tue, 13 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>And now I can post there with <a href="http://postxing.net">PostXING</a> (v2).</p><p>Dare has put up a <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=50920c46-f405-4f8f-85b3-6c2d18330c64">couple </a>of <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=f7a05332-7838-40ed-bcc2-af2667f79a77">tutorials </a>on how to setup Metablog support for w.bloggar and BlogJet. Since I &quot;borrowed&quot; ideas from both of these fine applications, the setup for w.bloggar is nearly identical to what you need to do in PostXING v2. Sorry for those v1 folks, I don&#39;t think it&#39;ll work in that version. Maybe I can put out a patch so that v1 will work too.</p><p>I&#39;d also like to thank <a href="http://www.25hoursaday.com/weblog/">Dare</a> for being so helpful in the beta stage. He personally replied to my questions and gave insight on a couple of things that were very helpful (like the BOM thing, which may or may not be a fluke in the beta version of spaces)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[NetVibe - listen for network changes and execute a script.]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-12-netvibe-listen-for-network-changes-and-execute-a-script</link>
            <guid>https://chris.pelatari.com/posts/2005-12-12-netvibe-listen-for-network-changes-and-execute-a-script</guid>
            <pubDate>Mon, 12 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>A few people asked for the source code/a download for the little widget I<br> whipped up on Friday, so I spent this morning adding a little bit of<br> persistence. The original code for switching my networks is still in there (and<br> still works on my machine if I change the code to point there) but I made it<br> more general and also used it as an excuse to explore the Settings API as well<br> as use a couple of neat features of VS 2005. (If you don&#39;t care about any of<br> that stuff and just want to see if you can build the project and make some use<br> out of it, it can be found <a href="http://projectdistributor.net/Releases/Release.aspx?releaseId=289">here on<br> projectdistributor</a>. )</p><p>So the settings goop in VS 2005 is pretty neat, but there&#39;s a limited subset<br> (it seems) that you can specify as types in the designer. I wanted to use a<br> Domain Object, tho - so, no designer love for me. I ended up making a simple<br> string setting just to see what code it generated for UserScopedSetting<br> properties. I ended up with this:</p><pre>[global::System.Configuration.UserScopedSetting]
<span style="color:blue;">public</span> ConfigItem Disconnected {
	<span style="color:blue;">get</span> {
		<span style="color:blue;">if</span> (<span style="color:blue;">this</span>[<span style="color:maroon;">&quot;Disconnected&quot;</span>] == <span style="color:blue;">null</span>) {
			ConfigItem item = <span style="color:blue;">new</span> ConfigItem();
			item.IPAddress = <span style="color:maroon;">&quot;127.0.0.1&quot;</span>;
			item.Condition = ConditionKind.Equals;
			item.DisplayText = <span style="color:maroon;">&quot;disconnected.&quot;</span>;
			item.Icon = IconKind.Disconnected;
			<span style="color:blue;">this</span>[<span style="color:maroon;">&quot;Disconnected&quot;</span>] = item;
		}
		<span style="color:blue;">return</span> (ConfigItem)<span style="color:blue;">this</span>[<span style="color:maroon;">&quot;Disconnected&quot;</span>];
	}
	<span style="color:blue;">set</span> {
		<span style="color:blue;">this</span>[<span style="color:maroon;">&quot;Disconnected&quot;</span>] = value;
	}
}</pre><p>I found that a suitable default value was needed to start off with in<br> settings, so I did something similar for a Home, Work, Unknown, and Other<br> network. This way I can persist the Settings using the Settings API instead of<br> something home cooked (although I&#39;m not sure if you would have to to avoid<br> version conflicts...) UserScopedSettings look to me a lot like IsolatedStorage,<br> that is the version and the product name help determine where settings should<br> go. If you wanted to use the same settings across different versions, I guess<br> you would have to copy the user.config file from one version location to the<br> next.</p><p>Next I wanted to see what the designer had to offer. The table layout panel<br> was real nice. It took care of all of my layout issues with respect to space. To<br> get what I wanted done, I first created a dummy Collection that inherits from<br> System.ComponentModel.BindingList&lt;&gt;:</p><pre><span style="color:blue;">internal</span> <span style="color:blue;">class</span> ConfigItemList : BindingList&lt;ConfigItem&gt; {}</pre><p>This is how I was able to add it as an Object datasource to the Data Sources<br> window:</p><p><a href="http://chrispelatari.files.wordpress.com/2005/12/datawindow_tablelayoutpanel.png"><img class="alignnone size-full wp-image-1167" alt="DataWindow_TableLayoutPanel" src="http://chrispelatari.files.wordpress.com/2005/12/datawindow_tablelayoutpanel.png" width="377" height="324"></a></p><p>From there, you can change the type of control you would like to output. I<br> simply Dock.Fill &#39;ed the TableLayoutPanel and added the correct amount of rows.<br> To get the labels to line up with the controls, I set all of their AnchorStyles<br> to Top | Left (that&#39;s Top AND Left). When each usercontrol is loaded up, I<br> manually bind to the information. When the Save button is clicked, all of the<br> info gets put back into the Settings object from the controls and<br> Settings.Default.Save() is called. This automatically saves the changed data to<br> a safe location under Documents And Settings (specifically Local<br> SettingsApplication DataCompanyNameFileName+ a bunch of other<br> stuffProductVersion).</p><p>Now, for the main reason I created this thing: I host a few external<br> sites at work, and I can&#39;t see them without an entry in my hosts file<br> (%windir%system32driversetchosts) for each one. At home (or anywhere else)<br> however, I need to be able to rely on DNS to be able to get me to those sites,<br> so I created 2 extra hosts files, hosts.work and hosts.home. hosts.home pretty<br> much just has the single entry:</p><p>127.0.0.1    localhost</p><p>whereas hosts.work contains definitions to the internal network address of<br> the servers involved. I created 2 batch files that copy over the hosts file<br> depending on where I am. The one to switch to work has the following<br> command:</p><p>copy /Y %windir%system32driversetchosts.work<br> %windir%system32driversetchosts</p><p>and the one for home simply replaces hosts.home into the hosts file the same<br> way. So the command to execute for work is the fully qualified path to the bat<br> file. Everything else has the fully qualified path to the switch to home batch<br> script. So now, I just have this small utility run on startup and stay in the<br> tray, and whenever the network is changed, I am automatically configured to go<br> with this utility.</p><p class="media">[ Currently Playing : Quarantined - At the Drive-In -<br> Relationship of Command (5:24) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[System.Net.NetworkInformation]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-10-system-net-networkinformation</link>
            <guid>https://chris.pelatari.com/posts/2005-12-10-system-net-networkinformation</guid>
            <pubDate>Sat, 10 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is pretty cool:</p><pre>System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged += 
<span style="color:blue;">new</span> System.Net.NetworkInformation.NetworkAddressChangedEventHandler
(NetworkChange_NetworkAddressChanged);</pre><p>I have a laptop that everyday switches between my wireless home network and my wired work domain. I was looking for a way to add scripting abilities to the interface itself (i.e. when a network connects, run some script) when I stumbled upon this jem.</p><p>So, I now have a little winforms app that sits in my tray (yet another one) and doesn&#39;t do anything but run a script (that in turn modifies my hosts file) and change its tray icon when I&#39;m connected to different networks.</p><p>Here&#39;s what connected at home looks like: <a href="http://chrispelatari.files.wordpress.com/2005/12/connectedhome.png"><img class="alignnone size-full wp-image-1169" alt="connectedhome" src="http://chrispelatari.files.wordpress.com/2005/12/connectedhome.png" width="32" height="38"></a></p><p>It began as a quick&#39;n&#39;dirty POC, and I started to make it more generalized by extracting the common elements to an object model and persisting/loading. Then I stopped myself. I&#39;ll just let this one remain quick&#39;n&#39;dirty for now. Why? Because it works. And it saves me from having to remember to execute those batch scripts every time I come home and logon or go to work and logon.</p><p>nice.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING - Offline Categories]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-07-postxing-offline-categories</link>
            <guid>https://chris.pelatari.com/posts/2005-12-07-postxing-offline-categories</guid>
            <pubDate>Wed, 07 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.peterprovost.org/">Peter</a>, bro, you must be inspirin&#39; or something. I hope I didn&#39;t miss anything (it was one of those &quot;it can&#39;t be that easy©&quot; deals), but I&#39;ll just let the screenshot do the talking:</p><p><a href="http://chrispelatari.files.wordpress.com/2005/12/offlinecategories.png"><img class="alignnone size-full wp-image-1171" alt="offlinecategories" src="http://chrispelatari.files.wordpress.com/2005/12/offlinecategories.png" width="257" height="659"></a></p><p>[ Currently Playing : Precious - Depeche Mode ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING conversation with Peter Provost continues...]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-07-postxing-conversation-with-peter-provost-continues</link>
            <guid>https://chris.pelatari.com/posts/2005-12-07-postxing-conversation-with-peter-provost-continues</guid>
            <pubDate>Wed, 07 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.peterprovost.org/">Peter </a>gives me some <a href="http://www.chrisfrazier.net/blog/archive/2005/11/14/1413.aspx#1429">awesome feedback</a>: </p><blockquote style="margin-right:0;"><p>Hey man. Glad to know you&#39;re listening. I really think that PostXING could rock with a little more TLC. You&#39;re doing great. <br><br>A few comments on your comments: <br><br>1. I don&#39;t think you understand my request. Assume for a second that I know that I want to open post ID 117, I should be able to &quot;Open 117&quot; instead of &quot;open, browse, wait, wait, 117, OK&quot;. I know this can be done with MWAPI &#39;cause I wrote one. metaWeblog.getPost takes postid, username and password, right? <br><br>2. For categories, I want to be able to select the category(s) for the post quickly and without waiting for stuff. So cache them, let me reload the cache, and enabled me to select them with the keyboard without a lot of fuss. BlogJet is pretty good on this front. <br><br>3. I understand your choice here, but I think you would be better to choose the standard keystroke used by Outlook, FrontPage, BlogJet, etc: Ctrl+M and Ctrl+Shift+M. Not the best keystrokes in the world, but they are what people are used to. <br><br>4. Make all the keystrokes configurable! :) That solves many/all of my issues., eh? <br><br>5. What I&#39;m saying is that after using Ctrl+K (which I realize is a MSHTML command), and the focus returns back to the app, the input focus should stay where it was. I suspect you have something going on in Form_Activate that sets the focus somewhere. Try it, you&#39;ll see what I mean. <br><br>6. Ctrl+Enter should be Post &amp; Publish. Personally I don&#39;t think Post (w/o Publish) has any value at all. If I can save locally, I don&#39;t need to post without publishing. <br><br>Thanks! Keep up the good work!</p></blockquote><p dir="ltr">We sure like lists, eh? :) Here&#39;s mine in response again:</p><ol><li><div>This can be done, absolutely. (meaning I understand now ;) Maybe a command that just loads a post into the editing surface? </div></li><li><div>This is something I&#39;ve actually had on the plate for a long time that will probably never make it into v1 of <a href="http://postxing.net">PostXING</a>. Since I&#39;m working on v2, tho, it can definitely make it into that code. This will also improve the offline story (currently falls back to an empty textbox where each category gets its own line.)</div></li><li><div>Sounds good, definitely will look into this one too.</div></li><li><div>Wow, that sounds like a lot to do...how many keystrokes should be supported, how could I map them to logical commands, should it be per-user? Lots of questions on that one, I had never thought of doing something like this before.</div></li><li><div>I actually got a tip from Dmitry (creator of BlogJet) on how to deal with this issue. Apparently, mshtml has a focus issue that needs to be explicitly handled.</div></li><li><div>Consider it done.</div></li></ol><p>Thanks again, Peter. Sorry it took so long for me to reply, but my CommunityServer install is not sending me emails when I get comments :( </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Forcing the DataGridView to do my bidding - a tale of ComboBox hackery]]></title>
            <link>https://chris.pelatari.com/posts/2005-12-07-forcing-the-datagridview-to-do-my-bidding-a-tale-of-combobox-hackery</link>
            <guid>https://chris.pelatari.com/posts/2005-12-07-forcing-the-datagridview-to-do-my-bidding-a-tale-of-combobox-hackery</guid>
            <pubDate>Wed, 07 Dec 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>**<em>sigh</em> **Winforms team, winforms team, when will you start making my life easier? As <a href="http://angrypets.com/blog/posts/554.aspx" target="_blank" rel="noreferrer">others have said</a> (and I <a href="http://www.chrisfrazier.net/blog/archive/2005/09/07/1318.aspx" target="_blank" rel="noreferrer">completely agree</a>) windowsforms.net is pretty useless. Well, there&#39;s some new <s>Whidbey</s> .NET 2.0 content, but all of the things I enjoyed when starting w/ v1 of .NET (like, erm, QuickStarts? What happened to installing those locally?) seem to be gone. To be fair, they do have a presence over on <a href="http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=2&amp;SiteID=1" target="_blank" rel="noreferrer">forums.microsoft.com</a> where there are a few PM&#39;s and devs answering questions. I even found a <s>hack</s> fix for my dilemma via one of the posts that links to a <a href="http://download.microsoft.com/download/c/8/b/c8bc8bfe-30e6-417d-8c42-1bbf714bf976/VS05-01MacDonald.exe" target="_blank" rel="noreferrer">download</a> from Beta 2 or somewhere close.</p><p>At first I was optimistic about the DataGridView samples (<a href="http://www.windowsforms.net/WhidbeyFeatures/default.aspx?PageID=2&amp;ItemID=13&amp;Cat=Controls&amp;tabindex=5" target="_blank" rel="noreferrer">overview</a>)(<a href="http://www.windowsforms.net/Samples/download.aspx?PageId=1&amp;ItemId=220&amp;tabindex=4" target="_blank" rel="noreferrer">Download The DataGridView samples</a>), but I didn&#39;t see anything that did what I wanted to do: take an enum value and represent it in the grid with a combobox. So, here&#39;s how I did it.</p><p>First, I just plopped a DataGridView onto a form and gave it a BindingSource. The bindingSource gets its DataSource property set via a call into my DAL that returns a DataTable:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: set to null before setting it to the current to</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//clear out previous results</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.bindingSource1.DataSource </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.bindingSource1.DataSource </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MyDal.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetDataTable</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span></code></pre></div><p>Then comes the hackery. Since I have about 20 columns in this DataTable, all of interest as far as values but not all needing to be visible, directly after (like the line after) setting the datasource, I call a method to format the grid. This method looks something like this:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">private</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> _formatGrid</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(){</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">	this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.dataGridView1.Columns[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;ID&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">].Visible </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">	this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.dataGridView1.Columns.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Remove</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Status&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: this is where we want enums.</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	..</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">	this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_formatStatusColumn</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Then the _formatStatusColumn method is where the magick happens:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">DataTable</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> dt</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DataTable</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Status&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: actually how it&#39;s stored in the db.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">dt.Columns.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Status&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">typeof</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">dt.Columns.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Status_Name&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">typeof</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: this way I can add or remove enum values, and</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//the combo will always reflect the correct values.</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">foreach</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">int</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> index</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Enum.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetValues</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">typeof</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Status</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	dt.Rows.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(index, Enum.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">typeof</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Status</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">), index));</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: now for the UI column</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">DataGridViewComboBoxColumn statusColumn </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DataGridViewComboBoxColumn</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//CF: seems to control where the column is placed.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">statusColumn.DisplayIndex </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">statusColumn.HeaderText </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Status&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">statusColumn.DataPropertyName </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Status&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">statusColumn.DataSource </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">statusColumn.DisplayMember </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Status_Name&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">statusColumn.ValueMember </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Status&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.dataGridView1.Columns.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(statusColumn);</span></span></code></pre></div><p>I was <em>hoping</em> that there would be some way to predefine columns so I don&#39;t have to filter and rebuild every time I get data from the database, but I couldn&#39;t find anything on it. There is no SelectedIndex member of the DataGridViewComboBoxCell, either.</p><p>I really hope this helps someone else out there: I tried for a day and a half to get this to work, and I still think it looks like a hack.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Two years ago...]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-24-two-years-ago</link>
            <guid>https://chris.pelatari.com/posts/2005-11-24-two-years-ago</guid>
            <pubDate>Thu, 24 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="/blog/archive/2003/11/24/221.aspx">..the idea for PostXING began</a>. <br><br> Wow. I still hack it every now and then, but I don&#39;t devote nearly as much time as I used to. I&#39;m hoping that the new Settings goop in v2 will allow me to improve the options story: the last incomplete feature before PostXING v2!<br></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Jim Ross Dies]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-18-jim-ross-dies</link>
            <guid>https://chris.pelatari.com/posts/2005-11-18-jim-ross-dies</guid>
            <pubDate>Fri, 18 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Our prayers are with you, Jim. I only met Jim in real life one time, and he gave me a ride to my hotel on my first visit to Washington. He lived 5 hours away from me, but we had to go to another state to meet in person! Even though I didn&#39;t know him very well personally, it&#39;s funny the repoir you build with folks you communicate with often. Most of the Insiders I&#39;ve come in contact with have just started talking as if we had seen each other just a few days ago. Jim was just like that.</p><p>This is a sad day in Texas.</p><blockquote><p>I was sad to hear that fellow ASP Insider and ASP.NET MVP Jim Ross died peacefully yesterday from his cancer.</p></blockquote><blockquote><p>He told us all about his illness earlier in the year, then carried on posting answers as if nothing had happened. His last post on the email lists I frequent was just 10 days ago.</p></blockquote><blockquote><p>Funeral information:</p></blockquote><blockquote><p>The funeral will be Monday at 2 pm at Tyler Memorial, 12053 Hwy 64W, Tyler, TX 75704; 903-597-1396. Visitation is Sunday, 6-8pm</p></blockquote><p><em>It is with heavy heart that I inform you that my beloved husband, Jim, died today around 4:30pm. When he awoke this morning, he was too weak to get out of his recliner. I called the hospice nurse and she came right over. She made arrangements for Jim to be transported to Hospice Home Place. I called Ron Dart and he was here with me when the ambulance came at 10:30am to transport Jim. Jim was able to talk with both Ron and me. He said he was ready and he hoped his time would be short. God answered his prayer. Jim took a turn for the worse in the ambulance and never regained consciousness. I was alone with Jim, holding his hand, when he died...it was very peaceful. Praise God.</em></p><p><a href="http://coveryourasp.net/Personal/JimRoss" target="_blank" rel="noreferrer">Via James Shaw at CoverYourASP.NET</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING - Recent Fixes]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-17-postxing-recent-fixes</link>
            <guid>https://chris.pelatari.com/posts/2005-11-17-postxing-recent-fixes</guid>
            <pubDate>Thu, 17 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>NEW: &quot;PostXING&quot; in about page now links to postxing.net.</p><p>NEW: FTP Settings page now is labeled as such. This was confusing in the new user wizard.</p><p>FIX: Plugin ToolStripButtons now actually do something.</p><p>These are a couple of the things that I&#39;ve fixed this morning based on some really great feedback from a few really brave souls. The most work it looks like is still going to be the options story. I knew this was going to be the case when I announced the alpha, so thanks everyone for your input!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - 8 Steps to Better Windows Applications]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-17-re-8-steps-to-better-windows-applications</link>
            <guid>https://chris.pelatari.com/posts/2005-11-17-re-8-steps-to-better-windows-applications</guid>
            <pubDate>Thu, 17 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p dir="ltr" style="margin-right:0;">In an attempt to work on steps 7 and 8 in <a href="http://www.holliday.com.au/blog/2005/10/15/8-steps-to-better-windows-applications.html">Grant Holliday&#39;s Blog</a>, I&#39;ve started a <a href="http://communityserver.org">community server</a> site for <a href="http://postxing.net">PostXING</a>.</p><p dir="ltr" style="margin-right:0;">It&#39;s lite on content at the moment, (and also may not work everywhere for the next couple of days thanks to DNS) but hopefully this will let me address number 7 via the forums and number 8 via the gallery.</p><p dir="ltr" style="margin-right:0;">6 is done - actually using the default browser for the view blog function. I think I&#39;m doing pretty well for number 5, and number 4 should probably be implemented in a couple of more places. Number 1 is a big duh and should have been done since day one. 2 sounds like an interesting problem and will require a little more thought (although initially I&#39;m thinking something like the auto-saved draft feature in gmail)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING Sux.]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-16-postxing-sux</link>
            <guid>https://chris.pelatari.com/posts/2005-11-16-postxing-sux</guid>
            <pubDate>Wed, 16 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>And I know it. I haven&#39;t updated the binaries on <a href="http://projectdistributor.net">ProjectDistributor </a>for a long time because I&#39;ve been taking my time writing v2. Thing is, it&#39;s starting to <a href="http://www.holliday.com.au/blog/2005/10/15/offline-blog-posting-with-blogjet.html">catch up to me</a>.</p><p>PostXING v1 is far from polished. It works well enough for my needs and I made it available for download in the hopes that it would be useful to someone else, nothing more. But I do want to make it a better application, and that&#39;s where you, dear reader, can help me out a little bit. I&#39;ve decided to release an early alpha of PostXING v2 in the hopes that doing so will help it suck less than v1.</p><p>What&#39;s in it for you? Well, the same thing that&#39;s in it for me: if you catch some nasty behavior that I&#39;ve missed then PostXING becomes a better product for everyone who uses it (all two dozen of ya) </p><p>If you&#39;re interested, <a href="http://www.chrisfrazier.net/blog/contact.aspx">contact me</a> with the subject &quot;PostXING alpha request&quot; and I&#39;ll send you a zipfile with the new bits. The program requires v2 of the .NET framework. </p><p>Thank you.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - MetaWeblog API beta for MSN Spaces chugs along]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-16-re-metaweblog-api-beta-for-msn-spaces-chugs-along</link>
            <guid>https://chris.pelatari.com/posts/2005-11-16-re-metaweblog-api-beta-for-msn-spaces-chugs-along</guid>
            <pubDate>Wed, 16 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Since announcing that we&#39;ve started the beta of our implementation of the <a href="http://www.xmlrpc.com/metaWeblogApi">MetaWeblog API</a> for <a href="http://spaces.msn.com/">MSN Spaces</a>, I&#39;ve received a bunch of positive responses from a couple of blogging tool developers. So far it looks like there&#39;ll be at least six blogging tools users will be able to use to manage the blog on their space after we launch the API. </p></blockquote><p><i>[Via <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=a48f5a69-86e9-4264-ae0b-8f8b39f3baef">Dare Obasanjo aka Carnage4Life</a>]</i></p><p>Add at least one more - PostXING v2 will work with MSN Spaces via the MetaWeblog API. I don&#39;t think that it will work well with previous versions because I had to change some code in <a href="http://xml-rpc.net">xml-rpc.net</a> to handle the BOM as I noted earlier. If the xml-rpc.net library was updated for v1, I&#39;m sure it would work there as well.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - PostXING Review - Yet Another Blog Posting Client]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-15-re-postxing-review-yet-another-blog-posting-clilent</link>
            <guid>https://chris.pelatari.com/posts/2005-11-15-re-postxing-review-yet-another-blog-posting-clilent</guid>
            <pubDate>Tue, 15 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Ah! It&#39;s been a while since I&#39;ve gotten some good PostXING feedback. Guess the current version isn&#39;t very keyboard-friendly. I&#39;m probably not going to upgrade the v1 code in v1 of .net, but I&#39;ve been working for the past couple of weeks on getting PostXING to v2 under .net v2, so none of these requests are out of the question. As a matter of fact, I welcome all criticism in the hopes of making PostXING a product that works really well for more than just myself. Anyways, <a href="http://www.peterprovost.org/archive/2005/11/13/9511.aspx">Peter</a> has some good feedback for PostXING in general, my responses follow his post:</p><blockquote><p dir="ltr" style="margin-right:0;">I decided today to try out <a href="http://projectdistributor.net/Projects/Project.aspx?projectId=12">PostXING</a> as an alternative to <a href="http://blogjet.com/">BlogJet</a>. So far my reaction is mixed.</p><p dir="ltr" style="margin-right:0;"><strong>Pros</strong></p><ul><li><div style="margin-right:0;">Seems to have good WYSIWYG support</div></li><li><div style="margin-right:0;">I like having the standard HTML heading tags available in the toolbar.</div></li><li><div style="margin-right:0;">I can easily insert a horizontal rule in my post</div></li><li><div style="margin-right:0;">I <u>love</u> the fact that it has the <a href="http://puzzleware.net/codehtmler/default.aspx">CodeHTMLer</a> syntax hilighting engine in it, but it doesn&#39;t feel quite as smooth to me as BlogJet does.</div></li><li><div style="margin-right:0;">I&#39;m very glad that it supports uploading images via FTP in the same way that BlogJet does. This is a must have in my book.</div></li><li><div style="margin-right:0;">As with BlogJet, I can&#39;t open an arbitrary post by ID. I have to find it in the historical list of posts, which sucks when the post is from a year ago.</div></li></ul><p style="margin-right:0;"><strong>Cons</strong></p><ul><li><div style="margin-right:0;">I have to click a button and wait for a popup to set the post&#39;s categories</div></li><li><div style="margin-right:0;">I can&#39;t use TAB to navigate the UI which means I have to use the mouse (a serious usability error as far as I&#39;m concerned). And I don&#39;t know if I agree with the idea that TAB causes BLOCKQUOTE in the resulting HTML.</div></li><li><div style="margin-right:0;">I can&#39;t find keystrokes for many of the standard formatting things like ordered and unordered lists, styles, etc.</div></li><li><div style="margin-right:0;">Sometimes after using CTRL+K to format some text as a link (good), the input focus leaves the text editor and goes up to Title field (bad).</div></li><li><div style="margin-right:0;">I can&#39;t figure out how to post with a keystroke. It should be CTRL+Enter (like Outlook and BlogJet) but it isn&#39;t.</div></li></ul><p dir="ltr" style="margin-right:0;">This will be my first post with it, we&#39;ll see if it is also my last. If the author can fix a few of those cons, I would be considering switching. For now though, I&#39;m not so sure.</p><p dir="ltr" style="margin-right:0;">This seems like such a simple problem... I can&#39;t believe how poor all the choices really are.</p><blockquote style="margin-right:0;"><p><img height="1" src="http://www.peterprovost.org/aggbug/9511.aspx" width="1"></p></blockquote></blockquote><p><i>[Via <a href="http://www.peterprovost.org/archive/2005/11/13/9511.aspx">Geek Noise</a>]</i></p><p>I&#39;ll try to address these as best I can, starting with the last Pro...</p><ul><ul><li>This is a drawback of the MetaWeblog API, which is why you see the same behavior across both BlogJet and <a href="http://PostXING.url123.com/main">PostXING</a>. The only way to really get around this is to use a different API to access your blog, like perhaps the webservice API in CS. Hopefully when CS v2 drops I&#39;ll be able to code up a plugin/provider that allows native access to the webservice api instead of having to use mwb all the time. </li><li>In v2, the popup is replaced with a &quot;Container Bar&quot;, but it&#39;s still the same concept. How would you rather see the category feature implemented? Perhaps as a dropdown next to the title kind of like w.bloggar? </li><li>PostXING does capture the tab key in the editor surface to create a blockquote: I did this to be able to format quotes quickly. Maybe it was a wrong decision, but this is the first time that I&#39;ve ever heard anything bad (if a Con is bad) about it. I could for sure make this configurable, but what should the default behavior be? Insert 4 spaces, or be able to tab around the rest of the application? I guess at the time that I implemented the tab capture, I figured the editor experience was the main focus of PostXING. </li><li>You can&#39;t find these keystrokes because they don&#39;t exist. What should they be? </li><li>This is 100% mshtml code (especially the ctrl+k part). I don&#39;t know how to address this but like all of the other points I&#39;m open to suggestion. </li><li>Again, there is no keystroke for this. Sorry. :( I will for sure add ctrl+Enter support, but which button should this be associated with? Post or Post &amp; Publish?</li></ul></ul></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Woe unto the COM-referencing VS2005 Winforms Designer]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-10-woe-unto-the-com-referencing-vs2005-winforms-designer</link>
            <guid>https://chris.pelatari.com/posts/2005-11-10-woe-unto-the-com-referencing-vs2005-winforms-designer</guid>
            <pubDate>Thu, 10 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><b></b></p><div class="ErrorStyle" id="div1"><span style="font-weight:600;"><br>The designer loader did not provide a root component but has not indicated why. </span><br><a id="details0" href=""><u></u></a></div><div class="StackStyleVisible" id="div20"><br>at System.ComponentModel.Design.DesignSurface.get_View()<br>at Microsoft.VisualStudio.Shell.Design.<br>WindowPaneProviderService.CreateWindowPane(DesignSurface surface)<br>at Microsoft.VisualStudio.Design.Serialization.CodeDom.<br>DeferrableWindowPaneProviderService.CreateWindowPane(DesignSurface surface)<br>at Microsoft.VisualStudio.Design.VSDesignSurface.Microsoft.VisualStudio.<br>Designer.Interfaces.IVSMDDesigner.get_View()</div><p> It looks like there are a lot of people that got this error when going from beta2 -&gt; RC1, but this was on the RTM version. The thing that&#39;s tricky is that now the designer is so nice for us, it adds default values to public properties. Well, since the code that was being called was basically a wrapper for mshtml, I guess you could say COM was involved (like a third cousin). In order to find this bug (in my code, but my code generated by VS2005.) I had to fire up another devenv.exe instance and set it to attach to the first devenv&#39;s process for debugging. I don&#39;t know the exact workaround for this yet...maybe making the particular property that was causing trouble readonly w/ an accompanying SetProperty(value) method that would still let the underlying value be set. See the problem is that VS regenerates all that goodness for me, so whenever a change is made and saved in the designer I would be facing the same problem, have to hunt down one line of code, and start over again. Boo. </p><p>Is there a way to turn off the designer&#39;s new behavior?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[xml-rpc.net and BOM]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-09-xml-rpc-net-and-bom</link>
            <guid>https://chris.pelatari.com/posts/2005-11-09-xml-rpc-net-and-bom</guid>
            <pubDate>Wed, 09 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m using <a href="http://xml-rpc.net" target="_blank" rel="noreferrer">xml-rpc.net</a> as the library that supports xml-rpc for the MetaWeblog api in <a href="http://PostXING.url123.com/main" target="_blank" rel="noreferrer">PostXING</a>.</p><p>I recently ran into a service endpoint that included a <a href="http://en.wikipedia.org/wiki/Byte_Order_Mark" target="_blank" rel="noreferrer">Byte Order Mark</a> in the payload of the response. Something I haven&#39;t run into yet basically because the few blog engines that I have tested px with have not included this. It turns out that the XmlDocument.Load method that accepts a stream doesn&#39;t take this into account (or something:).</p><p>So this is what I did to workaround the problem: basically, if the first character is not &lt;, the second must be otherwise the content is invalid anyways.</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//...the DeserializeResponse method that accepts a stream</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">StreamReader</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sr</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> StreamReader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(stm);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> content</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> sr.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ReadToEnd</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(content.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Trim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().Length </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &amp;&amp;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;&lt;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Substring</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">StringReader</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> StringReader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(content);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	xdoc.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Load</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(str);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>The other endpoints still work after this modification, so I guess it&#39;s okay.</p><p><strong>update</strong>: there was an indexoutofrange exception just waiting to happen up there.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ToolStripColorButton - a WinForms 2.0 Control]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-07-toolstripcolorbutton-a-winforms-2-0-control</link>
            <guid>https://chris.pelatari.com/posts/2005-11-07-toolstripcolorbutton-a-winforms-2-0-control</guid>
            <pubDate>Mon, 07 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Disclaimer: the code for showing the color menu is totally ripped off of a <a href="http://codeproject.com/cs/miscctrl/ColorButton.asp">CodeProject article</a>. I just took the ColorPanel part and parented it with a ToolStripButton. The idea works, tho.</p><p><a href="http://chrispelatari.files.wordpress.com/2005/11/toolstripcolorbuttonxp_clos.jpg"><img class="alignnone size-full wp-image-1174" alt="ToolStripColorButtonXP_clos" src="http://chrispelatari.files.wordpress.com/2005/11/toolstripcolorbuttonxp_clos.jpg" width="179" height="185"></a></p><p>Here&#39;s the source: <a href="http://vaultpub.sourcegear.com/VaultService/VaultWeb/GetFile.aspx?repid=5&amp;path=%24%2ftrunk%2fv2.0%2fPostXING.Controls%2fToolStripColorButton.cs&amp;version=2">ToolStripColorButton.cs</a> (login is guest/guest).</p><p>I&#39;ve been working recently to bring PostXING v2 to .net v2. Part of this process has shown me that Divelements&#39; SandBar menu system (the last freeware version) doesn&#39;t like to be in a nested UserControl after a recompile. Throws all kinds of errors that are obfuscated and painted directly on the control in the designer. Unfortunately, I can&#39;t try a newer version of SandBar because they discontinued the freeware versions that they used to have. Shame, it&#39;s a really good library.</p><p>So anyways, I find myself needing a similar experience to the ColorMenu that I extended that comes as an example with the trial download. Now that we have a first-class menu system in System.Windows.Forms, I decided to see if I could create something that kept the simplicity of the ColorMenu. The ToolStripColorButton simply has a subclass called ColorPanel that inherits Form. When you click on the button, the form is shown. When a user selects a color, a changed event is thrown and you can do what you want with the resulting color by handling this event:</p><pre><span style="color:blue;">private</span> <span style="color:blue;">void</span> btnFontColor_Changed(<span style="color:blue;">object</span> sender, EventArgs e)
{
	<span style="color:blue;">this</span>.DesignEditor.TextFormatting.ForeColor = <span style="color:blue;">this</span>.btnFontColor.Color;
}</pre><p>A couple of points that could be extended: The gradient background looks all wrong with the default XP themes. I wonder if there&#39;s a way to query what the start/finish colors are for the current theme w/o going into unmanaged code? Heck, even <strong>with</strong> unmanaged code (via P/Invoke) would be fine. This same problem shows up for the GradientPanel I recently posted. Something to look into, anyways. There&#39;s also the extension point of adding the actual color as the image instead of using a stock icon or something similar. The code to do it is basically in the CodeProject article linked above, I was just happy with the icons for my current purposes.</p><p>[ Currently Playing : Drive Slow (Feat. Paul Wall &amp; - Kanye West - Late Registration (4:32) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ctrl+K, X]]></title>
            <link>https://chris.pelatari.com/posts/2005-11-04-ctrlk-x</link>
            <guid>https://chris.pelatari.com/posts/2005-11-04-ctrlk-x</guid>
            <pubDate>Fri, 04 Nov 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Is the insert snippet chord in VS 2005.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[VistaDB]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-27-vistadb</link>
            <guid>https://chris.pelatari.com/posts/2005-10-27-vistadb</guid>
            <pubDate>Thu, 27 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div> Viral Marketing: <p><img height="12" src="http://www.vistadb.net/images/quotes_left.gif" border="0"><b>VistaDB 2.1 database for .NET has been released</b><br>This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio .NET 2005. VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy &#39;n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.<br><a href="http://www.vistadb.net/overview.asp?ref=blogger">- Learn more about VistaDB</a><br><a href="http://www.vistadb.net/blogoffer.asp?ref=blogger">- Repost this to your blog and receive a FREE copy of VistaDB 2.1!</a> <img height="12" src="http://www.vistadb.net/images/quotes_right.gif" border="0"></p><p>I&#39;ve always wanted to try this product to see how it fares anyways...let&#39;s see if this pans out.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Zeppelin - Babe I'm gonna leave you]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-27-zeppelin-babe-im-gonna-leave-you</link>
            <guid>https://chris.pelatari.com/posts/2005-10-27-zeppelin-babe-im-gonna-leave-you</guid>
            <pubDate>Thu, 27 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I know I&#39;ve figured out a fun song when my left hand hurts after playing. That hasn&#39;t happened for a loong time.</p><p>I was playing my guitar, trying to soothe the pain that the Astros getting swept in the World Series ignited, when I came across a chord pattern that sounded familiar: Am, G, [whatever&#39;s between G and F], F, E. To check if I was right, I looked it up:  <a href="http://www.guitaretab.com/l/led-zeppelin/10185.html">Led Zeppelin – ( BABE IM GONNA LEAVE YOU TAB )</a></p><p>This is going to take a while to master, but it&#39;s definitely going to be a fun ride.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Guess who's going to the World Series?]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-20-guess-whos-going-to-the-world-series</link>
            <guid>https://chris.pelatari.com/posts/2005-10-20-guess-whos-going-to-the-world-series</guid>
            <pubDate>Thu, 20 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2005/10/05houstonastroscomp.jpg"><img class="alignnone size-full wp-image-1176" alt="05HoustonAstrosComp" src="http://chrispelatari.files.wordpress.com/2005/10/05houstonastroscomp.jpg" width="326" height="400"></a></p><p>Fan-freakin-tastic. w00t!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[How not to use the PictureBox control.]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-19-how-not-to-use-the-picturebox-control</link>
            <guid>https://chris.pelatari.com/posts/2005-10-19-how-not-to-use-the-picturebox-control</guid>
            <pubDate>Wed, 19 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I was having this problem in an application that I&#39;ve been working on where I was drawing data points onto a PictureBox control - kind of like a canvas. The problem only showed up when a lot of data was thrown at the PictureBox: instead of seeing my data, I would see a loverly <strong>big red x</strong>.</p><p>So I did some chasing down a few rabbit holes (apparently this is a difficult issue to pinpoint - I found loads of unanswered forum/newsgroup posts about a red x) and found <a href="http://www.bobpowell.net/faqmain.htm" target="_blank" rel="noreferrer">Bob Powell&#39;s GDI+ faq</a>. Specifically, I found a good overview of <a href="http://www.bobpowell.net/pictureboxhowto.htm" target="_blank" rel="noreferrer">How not to use the PictureBox control.</a> After a few trials of throwing largish datasets at my picturebox canvas (that had yeilded those nasty red x&#39;s after a few screen refreshes just minutes before) it seems like the advice in that article just may have solved the problem.</p><p>We had been drawing to a Graphics object, then using that to spit out an image to the PictureBox&#39;s .Image property:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Graphics</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> g</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> pbxCanvas.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">CreateGraphics</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//draw to graphics</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">pbxCanvas.Image </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GetCanvasImage</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span></code></pre></div><p>instead, now we create the Graphics object off of the .Image in the first place. It takes a little bit more setup, but I have yet to run into the red x again since implementing this code:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(pbxCanvas.Image </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	pbxCanvas.Image </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Bitmap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(pbxCanvas.Width, pbxCanvas.Height);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Graphics</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> g</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Graphics.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">FromImage</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(pbxCanvas.Image);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//draw to graphics</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">pbxCanvas.Image </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GetCanvasImage</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">pbxCanvas.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Invalidate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span></code></pre></div><p>Who would have thought that a call to Control.CreateGraphics would be so harmful?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Visual Studio Editor, how you mock me.]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-12-visual-studio-editor-how-you-mock-me</link>
            <guid>https://chris.pelatari.com/posts/2005-10-12-visual-studio-editor-how-you-mock-me</guid>
            <pubDate>Wed, 12 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been chasing down this odd <a href="http://blogs.msdn.com/vseditor/archive/2005/05/12/417011.aspx">Visual Studio bug where the Enter, Backspace, and Arrow keys stop working.</a></p><p>It happened to me in Redmond at Microsoft Campus (of all places!) and it&#39;s a known bug that a lot of others have run into apparently. Some folks have noted that <a href="http://www.hanselman.com/blog/CommentView,guid,7d4b6fa8-85d8-4e3d-90d8-cb1d4e2966a2.aspx">it happens with the Beta 2 build</a>, but the link above claims that it is gone from later builds. Sorry, wrong answer, kimo-sabe. Even on the RC build, this showed up.</p><p>It has to do with how Visual Studio handles USER SETTINGS. Thanks to a comment in ScottH&#39;s blog, I found a command line switch (devenv /resetuserdata) that brought up a user settings dialog asking me to set a profile when I started Visual Studio again. Instead of my usual C# profile, I decided to go with the General profile to mimic VS2003&#39;s settings. And whaddaya know? I can actually edit source files (for now). This does not bode well for Visual Studio as a development environment. Things should work by default, right? I can envision answering many questions about this in forums which I am subscribed to. </p><p>Goodbye, past coupla days. I&#39;ll miss ya.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Creating a Google Maps .NET Control]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-11-creating-a-google-maps-net-control</link>
            <guid>https://chris.pelatari.com/posts/2005-10-11-creating-a-google-maps-net-control</guid>
            <pubDate>Tue, 11 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Choice Quote:</p><blockquote style="margin-right:0;"><p> Now that I have actually used XSL in a project I&#39;ve come to this conclusion: XSL is the Devil. </p></blockquote><p dir="ltr"><a href="http://www.codeproject.com/useritems/LatLaysFlat-Part3.asp">Go Check it Out</a>. It&#39;s an interesting approach to wrapping [insert buzzword] functionality in an asp.net control. If you haven&#39;t read the first and second articles, you may want to read those first. The only drawback to this approach for me is the apparent lack of a commercial use license for the google maps api (somebody <em>please </em>prove me wrong on this).</p><p class="media">[ Currently Playing : Drive Slow (Feat. Paul Wall &amp; - Kanye West - Late Registration (4:32) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - Microsoft Codename "Spang"]]></title>
            <link>https://chris.pelatari.com/posts/2005-10-03-re-microsoft-codename-spang</link>
            <guid>https://chris.pelatari.com/posts/2005-10-03-re-microsoft-codename-spang</guid>
            <pubDate>Mon, 03 Oct 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p></p><p></p><p> </p><img height="1" src="http://weblogs.asp.net/plip/aggbug/426444.aspx" width="1"></blockquote><p><i>[Via <a href="http://weblogs.asp.net/plip/archive/2005/10/03/426444.aspx">Plip&#39;s Weblog</a>]</i></p><p>What is Spang? It&#39;s going to revolutionize development as we know it. Keep a lookout for Spang.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Starting to dogfood PostXING v2.]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-30-starting-to-dogfood-postxing-v2</link>
            <guid>https://chris.pelatari.com/posts/2005-09-30-starting-to-dogfood-postxing-v2</guid>
            <pubDate>Fri, 30 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I figured that 27 test posts were enough to actually publish one.</p><p>This thing hasn&#39;t even reached feature <strong>parity</strong> with v1, but if you both see this post in ye olde aggregator, I&#39;ve at least made some functionality progress.</p><p><span style="color:red;">edit</span>: Houston, we have liftoff. 😄</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Houstonians are starting to panic.]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-21-houstonians-are-starting-to-panic</link>
            <guid>https://chris.pelatari.com/posts/2005-09-21-houstonians-are-starting-to-panic</guid>
            <pubDate>Wed, 21 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just got back from the gas station to get some sodas before everything runs out, and this is what I saw:</p><p>[[photo lost 😦</p><p>My little phone wasn&#39;t able to get the entire line of vehicles, but it was at least 6 deep for every pump. The parts of the Houston metro area that are closer to the coast have been issued a mandatory evacuation, with a voluntary evac for everyone else. They say it&#39;s going to be nasty. We&#39;ll just have to see I guess.</p><p class="media">[ Currently Playing : Emotion Sickness - Silverchair - The Best of: Volume 1 (6:01) ]</p><p class="media">P.S. Thanks to all those who wished me well on my previous post. I really do appreciate that (molto gratzi:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Expected downtime]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-21-expected-downtime</link>
            <guid>https://chris.pelatari.com/posts/2005-09-21-expected-downtime</guid>
            <pubDate>Wed, 21 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Just to let both of you know - I&#39;m expecting some downtime this weekend for <a href="http://www.chrisfrazier.net">www.chrisfrazier.net</a> . See, I live in Houston and we&#39;ve got a little storm coming our way. Since I host my site on my own on-site server, that means that I&#39;ve got to unplug it and put it in a room with no windows. Ya know, just in case.</p><p>So now you know why my rss feed won&#39;t work this weekend. Don&#39;t you just feel all squishy inside now? As for me, I&#39;m heading to the hill country for the weekend. Just in case, feel me?</p><p class="media">[ Currently Playing : Caress Me Down - Sublime - Stand By Your Van - Live (4:22) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan and Cody at the beach]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-18-ethan-and-cody-at-the-beach</link>
            <guid>https://chris.pelatari.com/posts/2005-09-18-ethan-and-cody-at-the-beach</guid>
            <pubDate>Sun, 18 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I took Ethan and my cousin Cody to the beach today. I got them some du-rags and ninja swords, so they could play pirates. They had a sword fight on the ferry ride to crystal beach.</p><p><a href="http://chrispelatari.files.wordpress.com/2005/09/swordfight1.jpg"><img class="alignnone size-full wp-image-1181" alt="swordfight1" src="http://chrispelatari.files.wordpress.com/2005/09/swordfight1.jpg" width="593" height="444"></a></p><p><a href="http://chrispelatari.files.wordpress.com/2005/09/swordfight2.jpg"><img class="alignnone size-full wp-image-1183" alt="swordfight2" src="http://chrispelatari.files.wordpress.com/2005/09/swordfight2.jpg" width="593" height="444"></a></p><p>I was even able to get a resounding &quot;Arr Matey!&quot; out of Ethan</p><p><a href="http://chrispelatari.files.wordpress.com/2005/09/arrmatey.jpg"><img class="alignnone size-full wp-image-1184" alt="arrmatey" src="http://chrispelatari.files.wordpress.com/2005/09/arrmatey.jpg" width="593" height="444"></a></p><p>When we were at the beach, we did what everyone should do at the beach every once in a while. We buried each other. We probably should have gone from biggest to smallest, but we started with Ethan.</p><p><a href="http://chrispelatari.files.wordpress.com/2005/09/buriedethan.jpg"><img class="alignnone size-full wp-image-1185" alt="buriedethan" src="http://chrispelatari.files.wordpress.com/2005/09/buriedethan.jpg" width="320" height="240"></a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[My Weekend]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-14-my-weekend</link>
            <guid>https://chris.pelatari.com/posts/2005-09-14-my-weekend</guid>
            <pubDate>Wed, 14 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is definitely filed under &quot;As if you cared&quot;. My friend Peyman had a little gathering at his new house in Austin this past weekend. I&#39;ve been to quite a few parties in my day, but I can honestly say that the girl that swung balls of fire around herself was a first for me at a house party. (every time I&#39;ve seen/done something similar in the past, the lit part couldn&#39;t burn you. glowsticks are good that way;)</p><p>I intended to stay only one night, but circumstances dictated that I stay until Monday morning. At least I got to get a good glimpse of the only state capital bigger than the federal government&#39;s building!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Eric is a stand-up guy.]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-12-eric-is-a-stand-up-guy</link>
            <guid>https://chris.pelatari.com/posts/2005-09-12-eric-is-a-stand-up-guy</guid>
            <pubDate>Mon, 12 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2005/09/standupguy.jpg"><img class="alignnone size-full wp-image-1188" alt="standupguy" src="http://chrispelatari.files.wordpress.com/2005/09/standupguy.jpg" width="593" height="444"></a></p><p>Eric is my friend Peyman&#39;s roommate in Austin. He&#39;s a stand-up guy. Trust me on this.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Virtual Earth for commercial apps]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-09-virtual-earth-for-commercial-apps</link>
            <guid>https://chris.pelatari.com/posts/2005-09-09-virtual-earth-for-commercial-apps</guid>
            <pubDate>Fri, 09 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Ha! <a href="http://blogs.msdn.com/cthota/archive/2005/9/9.aspx">Look at that!</a> I totally <a href="http://www.chrisfrazier.net/blog/archive/2005/09/06/1317.aspx">called it</a>.</p><p class="media">[ Currently Playing : All You Need - Sublime - Stand By Your Van - Live (2:44) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING v2? Where's the goods?]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-09-postxing-v2-wheres-the-goods</link>
            <guid>https://chris.pelatari.com/posts/2005-09-09-postxing-v2-wheres-the-goods</guid>
            <pubDate>Fri, 09 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Ah, the joys of writing open source software 😕</p><p>I had been working hard on v2 of <a href="http://PostXING.url123.com/main">PostXING</a>, but somehow development has stagnated on my end quite a bit. I brought it about 90% of the way towards the direction I was hoping to go. I even got an offer of help from a fellow Houstonian, but it seems I&#39;ve dropped the ball. My bad.</p><p>Fortunately, as I said I&#39;ve completed most of the grunt work, now it&#39;s just a matter of gluing everything together and creating a different provider than the Metablog API. It was still evolving when I last hacked on it, so I may only be 85% done, but at any rate, if I can get that fire going back under my ass I should be done in no time. I hope 😄</p><p>Since nobody but me is clamoring for v2, I can at least take my time and do things the way I want them. It&#39;s nice to be able to work on a software project without any stinkin time constraints. Another pitfall is that the latest v1 rev works well enough that I haven&#39;t felt the <em>need</em> to develop v2. I just <em>want</em> to. I want to make PostXING a better program. We&#39;ll see how it goes.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[It's fixed.]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-08-its-fixed</link>
            <guid>https://chris.pelatari.com/posts/2005-09-08-its-fixed</guid>
            <pubDate>Thu, 08 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Yesterday I realized that I was having issues with anonymous users posting comments to <a href="http://chrisfrazier.net/blog">my CS site</a>. After going over the code a little bit, what I didn&#39;t realize is that the bug is a <strong>custom skin bug. </strong>(ie a skin that I wrote was missing one line containing a specific control.)</p><p>After a little searching I found someone with a similar problem, and <a href="http://callmealex.com/default.aspx">Alex Lowe </a>pointed them here: <a href="http://communityserver.org/forums/491886/ShowPost.aspx#491913">http://communityserver.org/forums/491886/ShowPost.aspx#491913</a></p><p>And it worked. Yay.</p><p class="media">[ Currently Playing : Seed - Korn - Follow the leader (5:54) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[This is getting fixed. Today.]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-08-this-is-getting-fixed-today</link>
            <guid>https://chris.pelatari.com/posts/2005-09-08-this-is-getting-fixed-today</guid>
            <pubDate>Thu, 08 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> I noticed that I haven&#39;t gotten any comments on my blog in a while. Granted, I haven&#39;t posted in a while, either, but come on! There&#39;s gotta be at least one post I&#39;ve made that&#39;s been worth comment since July, right? no? Well, I&#39;m going to track this down anyways.</p><blockquote style="margin-right:0;"><p><b>Message:</b> Object reference not set to an instance of an object. </p><p>System.NullReferenceException: Object reference not set to an instance of an object. at CommunityServer.Blogs.Components.Weblog.EnableNewComments(WeblogPost post, User user) at CommunityServer.Blogs.Controls.CommentForm.btnSubmit_Click(Object sender, EventArgs e) at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain() </p><p><b>User Agent / IP Address</b><br>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR / 70.120.179.36 </p><p><b>Path</b><br>/blog/blogs/comments.aspx?App=blog&amp;PostID=1320 as HTTP POST </p><p><b>Referrer:</b><br>/blog/comments/1320.aspx </p></blockquote><p>no wonder I haven&#39;t gotten any comments lately. That&#39;s gotta be annoying for both of you.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hazaa! 0 unread feeds in my subscriptions]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-07-hazaa-0-unread-feeds-in-my-subscriptions</link>
            <guid>https://chris.pelatari.com/posts/2005-09-07-hazaa-0-unread-feeds-in-my-subscriptions</guid>
            <pubDate>Wed, 07 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I took a week off from reading blogs last week (as is evidenced by my responding to week-old posts). I ended up having about 600-700 unread posts in RssBandit.</p><p>The UI took care of it pretty well, since I have my opml separated by category I could zip thru most posts and decide whether or not I wanted to keep it around in the aggregate view. It got me thinking about how this would scale for a web app, tho. I don&#39;t remember how Bloglines handles this (don&#39;t you just get what&#39;s available at the time if there are unread feeds available?) but it seems like an interesting problem: how do you keep a rich experience in a web app without sacrificing performance or content that I may want to read (mark all read is not always optimal for me (I always feel like I&#39;m missing something golden (I <em>did</em> subscribe to the feed, after all)))?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - RSS Bandit [Nightcrawler Edition] Alpha Progress Report]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-07-re-rss-bandit-nightcrawler-edition-alpha-progress-report</link>
            <guid>https://chris.pelatari.com/posts/2005-09-07-re-rss-bandit-nightcrawler-edition-alpha-progress-report</guid>
            <pubDate>Wed, 07 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote>By the way Torsten has started an <a title="Torsten Rendelmann" href="http://www.rendelmann.info/blog/PermaLink.aspx?guid=1515446d-c611-4f44-8ac2-1ce7018084bc">RSS Bandit new logo design contest</a> and we&#39;d appreciate your comments. It seems a lot of our users who use RSS Bandit from their place of work feel our current smily face icon and logo are unprofessional. I don&#39;t mind changing our application icon but would probably like to keep the smily bandit in the logo.</blockquote><i>[Via <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=c676193f-1a01-4230-a135-d05064389636">Dare Obasanjo aka Carnage4Life</a>]</i><p>I can&#39;t really offer anything <em>original</em> per se, but here&#39;s the icon I use in ObjectDock for RssBandit:</p><p>[photo lost 😦]</p><p>Okay, so I just slapped an eye patch on an existing image I found somewhere on the net...isn&#39;t that what the current icon is, too? 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - www.windowsforms.net is dead]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-07-re-www-windowsforms-net-is-dead</link>
            <guid>https://chris.pelatari.com/posts/2005-09-07-re-www-windowsforms-net-is-dead</guid>
            <pubDate>Wed, 07 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Anybody else find that MS has so much crap going on that it&#39;s hard keep tabs on a single, solid, resources to use to keep up to speed on things? (And don&#39;t even send me to msdn.microsoft.com - that thing is 1) schizophrenic (is it a developer resource, or a place to buy subscriptions and stuff?) and 2) complete sensory overload. )</p></blockquote><p><i>[Via <a href="http://angrypets.com/blog/posts/554.aspx">AngryPets.com :: Blog</a>]</i></p><p>It is pretty worthless unless you are looking for controls - even then, the contol gallery has broken images and dead links everywhere.</p><p>I&#39;ve found that unlike the asp.net community, it&#39;s pretty much yo-yo (you&#39;re on your own) when it comes to winforms development. (and I <a href="http://www.chrisfrazier.net/blog/archive/2003/09/24/184.aspx">complained loudly about it </a>when I embarked on my first winforms project)</p><p><a href="http://CodeProject.com">CodeProject </a>has a lot of interesting tidbits, but I&#39;ve yet to find a complete solution in any of the articles there. Bits and pieces, yes...</p><p>Another good resource is the dotnet-winforms list on <a href="http://discuss.develop.com">discuss.develop.com</a>. There are at least one or two winforms PMs that hang out there.</p><p>Lastly, get Chris Sells&#39;s book <a href="http://www.sellsbrothers.com/writing/wfbook/">&quot;Windows Forms Programming in C#&quot; </a>(or VB.NET, whatever.) That book has basic examples of almost everything you would want to achieve in a normal winforms project. Anything else is up to google skillz.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - Google maps .NET control]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-06-re-google-maps-net-control</link>
            <guid>https://chris.pelatari.com/posts/2005-09-06-re-google-maps-net-control</guid>
            <pubDate>Tue, 06 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Check out this code project article with code for a <a href="http://www.codeproject.com/useritems/LatLaysFlat-Part1.asp">Google Maps .NET control</a>. very cool and handy stuff. and there are some demos <a href="http://www.sctc.state.co.us/dev/GoogleMaps/">here</a>.</p></blockquote><p></p><p><i>[Via <a href="http://feeds.feedburner.com/lotas?m=2023">Tiernans Comms Closet</a>]</i></p><p>I read thru that, and it seems very useful to be able to manipulate things in codebehind like that. Once the lat/lon overlays are included, I may even check it out. </p><p>In other mapping news, I was contacted recently by the mappoint webservice team b/c I haven&#39;t made any requests to the webservice for a while. I told them that the current webservice doesn&#39;t buy me a whole lot in terms of functionality from the current solution that I use that simply has a mapserver control on my webserver and asked if virtual earth may be rolled into the webservice (since virtual earth currently only has licensing for non-commercial apps). They didn&#39;t tell me one way or the other, but my mappoint account was reinstated. Could this mean virtual earth goodness on the horizon? I hope so.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Darren and BlogML]]></title>
            <link>https://chris.pelatari.com/posts/2005-09-05-darren-and-blogml</link>
            <guid>https://chris.pelatari.com/posts/2005-09-05-darren-and-blogml</guid>
            <pubDate>Mon, 05 Sep 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>A few weeks ago I wanted to release an update to my own blogging engine and, because there was a minor data change I thought that it would be nice to export the data before running the update, change the files and then re-import it afterwards.  As I looked into this more I decided that I really should do it in a standards-compliant manner (if possible) and so then set out to: A) talk to people about it, B) rtfm some of the existing formats and C) write down my requirements.</p></blockquote><p><i>[Via <a href="http://MarkItUp.com/Posts/Post.aspx?postId=d4b59067-7c2f-4271-9023-99149d17166f">MarkItUp - Thinking Products</a>]</i></p><p>Very seldom does someone come along who has simple ideas that can work coupled with what it takes to make those ideas reality. Darren is one of those people.</p><p>BlogML may not be the best thing since sliced bread, but it&#39;s an idea that is brilliant in its simplicity. Why should a task - importing and exporting blog content - be shoehorned into a spec that was never meant to do this in the first place? Isn&#39;t that the reason that atom was designed itself? To rehash the failures and stick with the successes of past specifications dealing with blogging? So is BlogML IMHO to import/export of blog content.</p><p>Keep up the good work, Darren. Although we live on opposite sides of the globe, you are always welcome to ping me with these crazy ideas of yours, if for nothing else than to talk them out.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Dual booting Linux Redhat 9 and Windows XP using a CD]]></title>
            <link>https://chris.pelatari.com/posts/2005-08-26-dual-booting-linux-redhat-9-and-windows-xp-using-a-cd</link>
            <guid>https://chris.pelatari.com/posts/2005-08-26-dual-booting-linux-redhat-9-and-windows-xp-using-a-cd</guid>
            <pubDate>Fri, 26 Aug 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>We have a couple of legacy applications here, written in C++, that have always run on windows and *nix. In order to support the *nix versions, we always have to have a Linux install hanging around (we also have a solaris, but that&#39;s already set up).</p><p>So we got a Dell Precision 380 workstation with a SATA drive that had Windows XP installed on it. Since the Dell didn&#39;t come with a floppy drive, I couldn&#39;t very well just create a boot diskette. That would be useless. So based on the fact that there is a spec called &quot;El Torito&quot;, I looked up an <a href="http://url123.com/ucrup">article online about Linux Bootdisks</a>. It looked pretty good, but there was one glaring omission: the author mentions that you need to load any initial ramdisk via LILO, but doesn&#39;t explain how to setup LILO correctly for a floppy image. I decided to go back to it if necessary and went to redhat.com to see if there was any insight there.</p><p>I ended up finding a section of documentation that outlines <a href="http://url123.com/uc6sh">how to create an Installation Boot CD-ROM</a>, but I had already installed it! I later found that if at the bootloader screen of the install CD I typed the command:</p><pre>vmlinuz root=/dev/hdb2</pre><p>It would in fact load the installation off of the second (IDE) harddrive (thanks, btw, linux for making me use a modified kernel to support SATA drives. That&#39;s top-notch, guys.)</p><p>So I figured that the secret to the sauce was probably in the isolinux.cfg file that configures all the commands visible at the boot loader screen. First I tried something like this: </p><pre><span style="color:blue;">default</span> linux
label linux
	kernel vmlinuz
	append root=/dev/hdb2 initrd=initrd.img</pre><p>but that didn&#39;t work, it still brings up the install screen. So I figured why not try the simplest possible solution using the config file, and this is what I came up with:</p><pre><span style="color:blue;">default</span> vmlinuz root=/dev/hdb2</pre><p>Guess what? I now have a Redhat Linux 9 install that will boot from a CD and I didn&#39;t have to mess with a bootmanager or touch the MBR in any way. I don&#39;t have to wait those pesky 10 seconds for either grub or the windows NT bootloader to select which install to start - I just pop in a CD if I want linux, and open it if I want WinXP.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Insanely simple GradientPanel for WinForms]]></title>
            <link>https://chris.pelatari.com/posts/2005-08-10-insanely-simple-gradientpanel-for-winforms</link>
            <guid>https://chris.pelatari.com/posts/2005-08-10-insanely-simple-gradientpanel-for-winforms</guid>
            <pubDate>Wed, 10 Aug 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This has probably been done a hundred times already, but I couldn&#39;t find one in the first few pages of google results, so I wrote my own in ~40 lines of C#:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ComponentModel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Drawing</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Drawing</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Drawing2D</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Forms</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">namespace</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> PostXING</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Controls</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// GradientPanel is just like a regular panel except it optionally</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// shows a gradient.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// &lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ToolboxBitmap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">typeof</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Panel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">))]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GradientPanel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Panel</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	{</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		/// &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		/// Property GradientColor (Color)</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		/// &lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		private</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Color</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> _gradientColor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Color</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GradientColor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">._gradientColor;}</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			set</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">._gradientColor </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value;}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		/// &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		/// Property Rotation (float)</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">		/// &lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		private</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> float</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> _rotation</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> float</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Rotation</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">._rotation;}</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			set</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">._rotation </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> value;}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> override</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> OnPaint</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">PaintEventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">                        if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e.ClipRectangle.IsEmpty) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//why draw if non-visible?</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			using</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LinearGradientBrush</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> lgb</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">                           LinearGradientBrush(this.ClientRectangle,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		              this.BackColor,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		              this.GradientColor,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		              this.Rotation)){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">				e.Graphics.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">FillRectangle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(lgb, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.ClientRectangle);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">                        base</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">OnPaint</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e); </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//right, want anything handled to be drawn too.</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>There it is. Enjoy!</p><p><em>[ Currently Playing : New Way Home - Foo Fighters - The Colour And The Shape (5:42) ]</em></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A week already]]></title>
            <link>https://chris.pelatari.com/posts/2005-08-05-a-week-already</link>
            <guid>https://chris.pelatari.com/posts/2005-08-05-a-week-already</guid>
            <pubDate>Fri, 05 Aug 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, it&#39;s been a week now since I handed over my pip-squeak back to his mom.</p><p>I gotta say, I miss him a lot. Having him around every day and then all of a sudden not having him any more is a real shock to the system. I&#39;ve also gotta say that I feel really blessed to have been able to spend that time with Ethan, and do fun Father/Son stuff. By far the most fun that I had was when I took him to the beach for the first time <em>ever</em>.</p><p>I tought Ethan the basics of doing a jig after you throw down a football. Ethan taught me that you need a bucket of water to wash each hand when they get sandy at the beach: <a href="http://www.bluefenix.net/videos/Ethan072405.MPG">Ethan072405.MPG</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Thanks!]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-28-thanks-2</link>
            <guid>https://chris.pelatari.com/posts/2005-07-28-thanks-2</guid>
            <pubDate>Thu, 28 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Earlier I said:</p><blockquote style="margin-right:0;"><p>call them &quot;labels&quot; or &quot;tags&quot; but give me a way to categorize my thoughts. Please.</p></blockquote><p dir="ltr">Thanks, <a href="http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html#rfc.section.4.2.2">Atom 1.0</a> <img alt="" hspace="0" src="http://www.chrisfrazier.net/blog/emoticons/emotion-5.gif" align="baseline" border="0"></p><p class="media">[ Currently Playing : A Message - Coldplay - X&amp;Y (04:45) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - Blog APIs]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-27-re-blog-apis</link>
            <guid>https://chris.pelatari.com/posts/2005-07-27-re-blog-apis</guid>
            <pubDate>Wed, 27 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Darren&#39;s <a href="http://markitup.com/Posts/Post.aspx?postId=823c0159-e081-46a7-ba96-b212aed5df26">looking for ideas </a>on how to migrate data from one blog engine to the next. This has been discussed before a lot, I&#39;m sure, but it&#39;s not a bad conversation to have.</p><p>So what&#39;s the answer? Sorry, I don&#39;t have that. I know that it would have been nice when developing <a href="http://PostXING.url123.com/main">PostXING</a> to have an api that gives you more control or gives better querying ability, and I also know that none of the APIs that Darren talks about are it. For all of the metablog api&#39;s shortcomings, I find it at least decent enough to not have made a post using the web interface of my blogs since writing PostXING. I agree with Darren that the atom api does not seem complete. No categories? That&#39;s weird. If you&#39;re worried about being different from rss in some small way (and come on, that&#39;s what it&#39;s about in the first place, innit?) call them &quot;labels&quot; or &quot;tags&quot; but give me a way to categorize my thoughts. Please.</p><p>One person whose thoughts I&#39;d like to hear on the idea of a better blogging api is <a href="http://scottwater.com/blog">ScottW</a> who has written a few external apis for different evolutions of the popular aspnetweblog software that we all know and love and call <a href="http://communityserver.org">CS::Blogs</a> these days. <img alt="" hspace="0" src="http://www.chrisfrazier.net/blog/emoticons/emotion-1.gif" align="baseline" border="0"></p><blockquote><p><strong>A better blogging API</strong></p><p>I&#39;ll also do some searching over the next week or so to see what others have been discussing around this topic as it is obviously something which must have come up a lot.  Maybe we have to wait until industry heavyweights start to build blogging products into their core platforms before clear spec&#39;s start to emerge around what is needed from an API that would allow for the programmatic disovery and interaction with blogs.  </p><p>And then, who knows how long it will take for the current blog engines to implement that?</p></blockquote><i>[Via <a href="http://MarkItUp.com/Posts/Post.aspx?postId=823c0159-e081-46a7-ba96-b212aed5df26">MarkItUp - Thinking Products</a>]</i></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Applesauce tastes gooood.]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-23-applesauce-tastes-gooood</link>
            <guid>https://chris.pelatari.com/posts/2005-07-23-applesauce-tastes-gooood</guid>
            <pubDate>Sat, 23 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Indeed. </p><p><a href="/audio/Ethan072305.mp3">Applesause tastes goood</a>.</p><p class="media">[ Currently Playing : Audioslave / Number 1 Zero - Audioslave - Out Of Exile (05:01) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan's got some money...]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-23-ethans-got-some-money</link>
            <guid>https://chris.pelatari.com/posts/2005-07-23-ethans-got-some-money</guid>
            <pubDate>Sat, 23 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2005/07/07-23-05_1309.jpg"><img class="alignnone size-full wp-image-1193" alt="07-23-05_1309" src="http://chrispelatari.files.wordpress.com/2005/07/07-23-05_1309.jpg" width="593" height="444"></a></p><p>Ethan went to go play with his friend Emma today. Emma&#39;s older sister gave Ethan 11¢.</p><p>That&#39;s right, the <em>older</em> sister. That boy Ethan...😄</p><p class="media">[ Currently Playing : Audioslave / Yesterday To Tomorrow - Audioslave - Out Of Exile (04:36) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Clearly a windows user...]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-22-clearly-a-windows-user</link>
            <guid>https://chris.pelatari.com/posts/2005-07-22-clearly-a-windows-user</guid>
            <pubDate>Fri, 22 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><img alt="" hspace="0" src="http://www.resistcomfort.com/typing.gif" align="baseline" border="0"></p><p class="media">[ Currently Playing : Night Bird Flying - Jimi Hendrix - Experience Hendrix (3:50) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Richard...]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-22-richard</link>
            <guid>https://chris.pelatari.com/posts/2005-07-22-richard</guid>
            <pubDate>Fri, 22 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://jazzynupe.net/blog/archive/2005/07/21/2.aspx">You&#39;re Welcome</a>!  😄</p><p class="media">[ Currently Playing : Suite-Pee - System of a Down - System of a Down (2:32) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ethan and Mama re]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-19-ethan-and-mama-re</link>
            <guid>https://chris.pelatari.com/posts/2005-07-19-ethan-and-mama-re</guid>
            <pubDate>Tue, 19 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Welcome to the poor man&#39;s vblog...a link with text 😃 I took this video on my digital camera the other day. It&#39;s 2:41. I thought I&#39;d post it up here so I can search on it after Ethan becomes a teenager to remember &quot;the good ole days&quot;. It&#39;s a little dark, and Ethan is totally oblivious to what I&#39;m doing. He actually thinks I&#39;m getting ready to take a picture, I believe. Anyways, here it is: <a href="http://www.bluefenix.net/videos/Ethan071705.MPG">Ethan071705.MPG</a></p><p><a href="http://chrispelatari.files.wordpress.com/2005/07/dsc00170.jpg"><img class="alignnone size-full wp-image-1195" alt="DSC00170" src="http://chrispelatari.files.wordpress.com/2005/07/dsc00170.jpg" width="593" height="444"></a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Saving an embedded resource xml file at runtime in C#]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-18-saving-an-embedded-resource-xml-file-at-runtime-in-c</link>
            <guid>https://chris.pelatari.com/posts/2005-07-18-saving-an-embedded-resource-xml-file-at-runtime-in-c</guid>
            <pubDate>Mon, 18 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I couldn&#39;t find a cut &amp; dry solution to this (probably b/c it&#39;s too simple for anyone to think they would need an example) so here&#39;s how I got an xml file embedded as a resource in a vs2003 project written to the filesystem.</p><p>First, you just add an xml file with some default information you want for it to your project and change its build action to Embedded Resource. Then, you find the name of the resource (it can be tricky if you have a few folders) by opening up ildasm and double clicking the MANIFEST node. Using that resource name, you would do something like this:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IO</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Xml</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Reflection</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> path</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Combine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Environment.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetFolderPath</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Environment.SpecialFolder.ApplicationData),</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Application.CompanyName);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">path </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Combine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(path, Application.ProductName);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">path </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Combine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(path, subFolder);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">path </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Path.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Combine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(path, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;fileName.xml&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">File.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Exists</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(path)){</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">	Assembly</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> thisAssembly</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Assembly.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetExecutingAssembly</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">	Stream</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> rgbxml</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> thisAssembly.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">GetManifestResourceStream</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;YourNamespace.fileName.xml&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">	XmlDocument</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> doc</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> XmlDocument</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	doc.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Load</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(rgbxml);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	doc.PreserveWhitespace </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	doc.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Save</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(path);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>A couple of things to note about this: it&#39;s for a WinForms application, so I can use the Application class to get things in AssemblyInfo.cs (like ProductName, CompanyName). Also, you could probably do this anywhere but I chose to put a lot of my default configuration under the user&#39;s ApplicationData folder, where most users (can&#39;t say for sure about the guest account since that&#39;s been disabled here for a long time) have authority to write.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Set the passive port range for IIS ftp]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-14-set-the-passive-port-range-for-iis-ftp</link>
            <guid>https://chris.pelatari.com/posts/2005-07-14-set-the-passive-port-range-for-iis-ftp</guid>
            <pubDate>Thu, 14 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://support.microsoft.com/?id=555022">http://support.microsoft.com/?id=555022</a></p><p>I&#39;ve needed this a couple of times, what better way to find it? ;)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I feel like a commercial]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-13-i-feel-like-a-commercial</link>
            <guid>https://chris.pelatari.com/posts/2005-07-13-i-feel-like-a-commercial</guid>
            <pubDate>Wed, 13 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>but I did switch to geico and I&#39;m going to save a rediculous amount from my current insurance provider. To the tune of nearly $2,000 a year. Plus, they took a cue from my current insurance provider and got <a href="http://geico.com">geek friendly</a>. I did the whole quote process online and only called after I had a couple of questions.</p><p>I only decided to start shopping around when I learned that when I turn 25 (a key age for single males in America for car insurance) that I would only get about $300 off of my current rate <strong>a year.</strong> All I gotta say - &quot;That&#39;s so condescending!&quot;</p><p class="media">[ Currently Playing : Let You Down - Three Days Grace - Three Days Grace (3:45) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[My favorite Top 11 Country Songs]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-13-my-favorite-top-11-country-songs</link>
            <guid>https://chris.pelatari.com/posts/2005-07-13-my-favorite-top-11-country-songs</guid>
            <pubDate>Wed, 13 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>GET-R-DONE!<br> <br>My favorite Top 11 Country Songs</p><p>11. If The Phone Don&#39;t Ring, You&#39;ll Know It&#39;s Me.</p><p>10. How Can I Miss You If You Won&#39;t Go Away</p><p>9. I Liked You Better Before I Got to Know You So Well.</p><p>8. I&#39;m Still Missing You Baby, But My Aim&#39;s Gettin&#39; Better.</p><p>7. I&#39;ll Marry You Tomorrow But Let&#39;s Honeymoon Tonight.</p><p>6. I&#39;m So Miserable Without You, It&#39;s Like You&#39;re Still Here.</p><p>5. If I Had Shot You When I first Wanted To, I&#39;d Be Out Of Prison By Now.</p><p>4. My Wife Ran Off With My Best Friend And I Sure Do Miss Him.</p><p>3. She Got The Ring And I Got The Finger.</p><p>2. You&#39;re The Reason Our Kids Are So Ugly.</p><p>1. How Can I Kiss Those Lips at Night When They&#39;ve Been Chewin&#39; My Ass All<br>Day Long? </p><p class="media">[ Currently Playing : New Song - Sublime - 40 Oz. to Freedom (3:14) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Divelements SandDock 2.0]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-13-divelements-sanddock-2-0</link>
            <guid>https://chris.pelatari.com/posts/2005-07-13-divelements-sanddock-2-0</guid>
            <pubDate>Wed, 13 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://divil.co.uk/net/controls/sanddock/">Was just released</a>. In the newsletter, it said that you can use a DocumentContainer (tabs) outside of a SandDockManager - simple tabbing with the same interface that is all over <a href="http://PostXING.url123.com/main">PostXING</a>. Sounds promising!</p><p>Well, the &quot;document&quot; tabs only render at the top, and I need tabs at the bottom to keep the interface at least a little similar to what it always has been. Plus, with the interface that I have in PostXING, I just like the way the tabs look at the bottom better. So I have two choices: keep the interface that is already in place (using the older (free) version of Magic) or have tabs at the top, right? Nope.</p><p>I found a way to use the docking windows (that show their tabs at the bottom) to get the effect that I wanted.</p><p>First, I created a usercontrol and added four docking windows (with tabs). Then I expanded the dock control that holds the windows to be the same width as the usercontrol and anchored to top | left | right. After that, I basically disabled all docking, closing, and extra actions. At a pinch of graphics, and this is what I get:</p><p><a href="http://chrispelatari.files.wordpress.com/2005/07/testsanddocktabs.png"><img class="alignnone size-full wp-image-1200" alt="testsanddocktabs" src="http://chrispelatari.files.wordpress.com/2005/07/testsanddocktabs.png" width="593" height="467"></a></p><p>Nice, huh? Well, I thought it was anyways 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Object cannot be stored in an array of this type.]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-07-object-cannot-be-stored-in-an-array-of-this-type</link>
            <guid>https://chris.pelatari.com/posts/2005-07-07-object-cannot-be-stored-in-an-array-of-this-type</guid>
            <pubDate>Thu, 07 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This was the error that was biting me on PostXING v2 for almost a week (I usually only get insomnia hours to debug. That can be frustrating.)</p><p>The first thing that I noticed was that the wonderful interfaces that I was using would end up null after my first visit to a particular configuration page. It&#39;s something about the way that a &quot;Page&quot; is saved and loaded - it requires ViewState! Forreal! I&#39;d gotten so used to having state within my smart clients that I had almost forgot about reconstructing state.</p><p>Now that I had that taken care of, I was getting an exception returned from what seemed to be the service endpoint of the metablog api. But wait a second - I&#39;m using nearly the same code in v1. So I think, hey, I&#39;ll go ahead and use exactly the same code from v1 and put that in there - that&#39;ll surely work, right?</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CookComputing</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">XmlRpc</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">namespace</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> PostXING</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">MetaBlogProvider</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// BlogRequest wraps the blogger api getUsersBlog xml-rpc method.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">	/// &lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">summary</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BlogRequest</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">XmlRpcClientProtocol</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BlogRequest</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(){	}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">XmlRpcMethod</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;blogger.getUsersBlogs&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">			 Description</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Returns information on all the blogs a given user &quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			 +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;is a member.&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> bgBlogInfo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[] </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getUsersBlogs</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> appKey</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> username</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">string</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> password</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">			return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bgBlogInfo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[])</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Invoke</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;getUsersBlogs&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> object</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[]{appKey,username,password});</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Nope, same exception (the title of this post). After the dent in my head grew to about three inches, I decided to look at the version of <a href="http://xml-rpc.net" target="_blank" rel="noreferrer">xml-rpc.net</a> that I was using. Hmm, 0.8. What version was the endpoint using? Double hmm, 0.9. Could it be a simple version mismatch that was my problem giving me this cryptic error?</p><p>Yep.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Free at last...]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-05-free-at-last</link>
            <guid>https://chris.pelatari.com/posts/2005-07-05-free-at-last</guid>
            <pubDate>Tue, 05 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...free at last, thank God Almighty: I am free at last.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ReverseDOS Configuration for CS::Blogs revisited]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-02-reversedos-configuration-for-csblogs-revisited</link>
            <guid>https://chris.pelatari.com/posts/2005-07-02-reversedos-configuration-for-csblogs-revisited</guid>
            <pubDate>Sat, 02 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just set up CS::Blogs 1.1 on my server <a href="/blog">over here</a> and I wanted to keep ReverseDOS going for it. So I just copied over the settings from my web.config and thought I would be gold...not so, grasshopper.</p><p>The new section in the default web.config is now named <strong><u>memberrolesprototype</u></strong> so if you want to upgrade and not have to pull your hair out, keep this in mind.</p><p>:</p><pre>	<span style="color:blue;">&lt;</span><span style="color:maroon;">memberrolesprototype</span><span style="color:blue;">&gt;</span>
		<span style="color:blue;">&lt;</span><span style="color:maroon;">ReverseDOS</span><span style="color:blue;">&gt;</span>
			<span style="color:blue;">&lt;</span><span style="color:maroon;">settings</span> <span style="color:red;">enabled</span>=&quot;<span style="color:dodgerblue;">true</span>&quot; <span style="color:red;">debugEnabled</span>=&quot;<span style="color:dodgerblue;">false</span>&quot; <span style="color:red;">debugKey=&quot;oink</span>=225678&quot; <span style="color:red;">hideExceptions</span>=&quot;<span style="color:dodgerblue;">true</span>&quot; /<span style="color:blue;">&gt;</span></pre><p class="media">[ Currently Playing : The World Has Turned and Left - Weezer - Weezer (Blue Album) (4:18) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Dangerously close...]]></title>
            <link>https://chris.pelatari.com/posts/2005-07-01-dangerously-close</link>
            <guid>https://chris.pelatari.com/posts/2005-07-01-dangerously-close</guid>
            <pubDate>Fri, 01 Jul 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://chrispelatari.files.wordpress.com/2005/07/postxingv2_014.gif"><img class="alignnone size-full wp-image-1203" alt="PostXINGv2_014" src="http://chrispelatari.files.wordpress.com/2005/07/postxingv2_014.gif" width="593" height="415"></a></p><p>...to having something that actually works 😃 Do you think I&#39;m going a little nuts with the logo?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ReverseDOS attracting ire...]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-27-reversedos-attracting-ire</link>
            <guid>https://chris.pelatari.com/posts/2005-06-27-reversedos-attracting-ire</guid>
            <pubDate>Mon, 27 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m seeing a little trend - I delete comment spam as soon as it gets to any of my weblogs, so I don&#39;t have any hard numbers - posts that I have written about Mike&#39;s <a href="http://angrypets.com/tools/rdos">ReverseDOS</a> sure <em>seem</em> to be getting targeted by comment spammers. I don&#39;t see this in the <a href="http://www.chrisfrazier.net/blog">blog that has ReverseDOS installed</a>, but instead at <a href="http://weblogs.asp.net/cfrazier">the one hosted on weblogs.asp.net</a>.</p><p>What they don&#39;t know is that I have comment moderation turned on, so no comments make it thru without my say so. I wonder how many layers of defense will be required before I no longer have to worry about comment spam?</p><p class="media">[ Currently Playing : Square One - Coldplay - (4:47) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[What's this? PostXING can post to dasBlog?]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-25-whats-this-postxing-can-post-to-dasblog</link>
            <guid>https://chris.pelatari.com/posts/2005-06-25-whats-this-postxing-can-post-to-dasblog</guid>
            <pubDate>Sat, 25 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I saw that <a href="http://thequeue.net/blog/PermaLink,guid,652ae3fa-bad0-4e84-b6df-0a0257549e70.aspx">Jeff got things up and running </a>with PostXING (sorry again about the whole BlogInfo[0] thing) when I looked at the url. What&#39;s this? dasBlog? I never knew that dasBlog supported the Metablog API, although I did see the methods exposed from its blogger.aspx page. I thought they were just place holders, but I fired up my local copy of dasBlog and, sure enough, PostXING can post to it.</p><p>WordPress also supports the metablog API - hopefully subText will retain that feature of dotText so there will be at least a few blogging engines (I know of) that you can set up for a personal blog and post to with <a href="http://PostXING.url123.com/main">PostXING</a>.</p><p>: It seems it was a fluke on my end, but I have an older version of dasBlog. It sure looks from Jeff&#39;s post that it works with whatever version he&#39;s running...</p><p class="media">[ Currently Playing : White Shadows - Coldplay - (5:28) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ReverseDOS: 8 days later]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-23-reversedos-8-days-later</link>
            <guid>https://chris.pelatari.com/posts/2005-06-23-reversedos-8-days-later</guid>
            <pubDate>Thu, 23 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>If you are running your own asp.net blogging engine and you support comments/trackbacks/pingbacks, <a href="http://angrypets.com/tools/rdos/">go get ReverseDOS</a>. Right now. I&#39;ll wait.</p><p>Back already? Great! Seriously, ever since installing ReverseDOS, I have yet to see one auto-generated comment, when I used to get about 50 a day. Worse on weekends. Here are a couple of lines that I added to the ruleset:</p><p><pre><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">add</span> <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">post</span>&quot; <span style="c-o-l-o-r:red;">pattern</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">poker</span>&quot; <span style="c-o-l-o-r:red;">action</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">403</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">add</span> <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">post</span>&quot; <span style="c-o-l-o-r:red;">pattern</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">blackjack</span>&quot; <span style="c-o-l-o-r:red;">action</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">403</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span></pre></p><p>Simple, right? It&#39;s usually the dead simple ideas that are the most elegant solutions in the end. Thanks, <a href="http://angrypets.com/blog/">Mike</a>.</p><p class="media">[ Currently Playing : Star Spangled Banner - Jimi Hendrix - (3:47) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[CS::Blogs : beware the permission set]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-23-csblogs--beware-the-permission-set</link>
            <guid>https://chris.pelatari.com/posts/2005-06-23-csblogs--beware-the-permission-set</guid>
            <pubDate>Thu, 23 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I got some feedback about <a href="http://PostXING.url123.com/main">PostXING</a> saying that someone who had setup multiple blogs with <a href="http://communityserver.org">CS::Blogs</a> was getting the wrong blog back while trying to communicate with the Metaweblog API.</p><p>After a couple of questions, it turns out that all of the users were set up as sysadmins in the CS permission set, so anyone making a request to the metablog api would get a list of all the blogs available. Since PostXING ignorantly just uses BlogInfo[0] from the metablog_getUsersBlogs() method, everybody was trying to post to the first blog returned in the list.</p><p>So if you are running a multiple blog setup and wish to use the metablog api, make sure that your permissions are set so that when a user makes a request into his/her blog, theirs is the only blog they get back.</p><p>Thanks, <a href="http://cs.thycotic.net/blogs/jeff_schoolcraft/">Jeff.</a></p><p class="media">[ Currently Playing : Voodoo Child (Slight Return) - Jimi Hendrix - (5:12) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING and interfaces]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-20-postxing-and-interfaces</link>
            <guid>https://chris.pelatari.com/posts/2005-06-20-postxing-and-interfaces</guid>
            <pubDate>Mon, 20 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I feel like I&#39;m going nuts with interfaces in the next version of <a href="http://PostXING.url123.com/main" target="_blank" rel="noreferrer">PostXING</a>. Interfaces are a language feature that is really powerful - you don&#39;t really start to appreciate it until you are faced with situations that would otherwise be impossible to deal with.</p><p>PostXING already uses interfaces to load plugins like the <a href="http://PostXING.url123.com/nsv1.0.5005.1" target="_blank" rel="noreferrer">NetSpellPlugin</a>for spell checking. So I thought hey, go with what you know for this plugin/provider idea that I&#39;ve had stewing in my head for a while. I&#39;ve already included <a href="http://mikedub.net/" target="_blank" rel="noreferrer">MikeDub&#39;s</a>awesome <a href="http://url123.com/a2nq7" target="_blank" rel="noreferrer">IUI library</a> (modified with - you guessed it, <a href="http://www.chrisfrazier.net/blog/archive/2004/09/11/593.aspx" target="_blank" rel="noreferrer">interfaces</a>!) so I figured I might as well milk that for all it&#39;s worth. And trust me, I am 😃</p><p>The idea I have is to use IUI to set up a new/edit an existing &quot;blog&quot; (what PostXING sees as a blog) and let each plugin/provider take care of any special configuration they might need. But there&#39;s a problem - every provider should have common attributes defined within the interface, but there is also non-blog information that I would like to store (like ftp settings, whether or not you want media information to show up like below (I know, Alice in Chains again - I just write good code to that CD), and preview formatting).</p><p>So, how do I communicate that the custom IUI pages are done so that the rest of the configuration can continue? Well, I <em>could</em> use a vanilla EventHandler event, but how can I make sure that the main exe project will be able to handle the event without knowing which provider has been loaded? Furthermore, how can the provider send up an event for it to catch without having a reference to the main exe project (a circular dependency - nono!)?</p><p>Interfaces.</p><p>I create an interface that only the dialog that shows the configuration pages should implement. It could be a simple interface with only 1 to 3 methods defined for it (if I want to only expose moving forward to one page vs. moving to any available page thereafter)...see what I&#39;m getting at? Maybe some code will better explain what I&#39;m getting at:</p><div class="language-csharp vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">using</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> System</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Collections</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> IFoo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> HandleEvent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sender</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">EventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FooInstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> : </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IFoo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> HandleEvent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">object</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sender</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">EventArgs</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> e</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		System.Windows.Forms.MessageBox.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Show</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Handled! Booyakasha!&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> MyClass</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> static</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Main</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	{</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">		IFoo</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> thisfoo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FooInstance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">		MyClass</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> s</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> MyClass</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		s.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">WireUpEvent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(thisfoo);</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">		if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(s.throwevent </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">			s.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">throwevent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(s, EventArgs.Empty);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">		}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> event</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> EventHandler</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> throwevent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">	public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> WireUpEvent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IFoo</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> foo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">		this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.throwevent </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> EventHandler</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(foo.HandleEvent);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">	}</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>This was a little POC that I coded up in snippet compiler - and yes, it compiles and runs wonderfully. Booyakasha indeed. Here, IFoo is the interface that is implemented by the dialog. Passing the concrete FooInstance (the dialog) to the method WireUpEvent of what will be the provider class works thanks to wonderful, wonderful interfaces.</p><p><em>[ Currently Playing : Nutshell - Alice in Chains - Unplugged (4:57) ]</em></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Maybe I'm Amazed]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-19-maybe-im-amazed</link>
            <guid>https://chris.pelatari.com/posts/2005-06-19-maybe-im-amazed</guid>
            <pubDate>Sun, 19 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Tina asked me to learn this Paul McCartney song...<a href="http://cifraclub.terra.com.br/cifras/cifras.php?idcifra=13419">so I cheated</a> :)</p><p>That&#39;s it. This was purely so I didn&#39;t forget the url. Nothing technical to see here.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Blogging API commonalities]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-17-blogging-api-commonalities</link>
            <guid>https://chris.pelatari.com/posts/2005-06-17-blogging-api-commonalities</guid>
            <pubDate>Fri, 17 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Here is some of the common ground I can see between the metaweblog api and CS::Blogs BlogService asmx.</p><p>Blog/Authentication:</p><ul><li>UserName</li><li>Password</li><li>BlogID/BlogName</li></ul><p>Post/Entry:</p><ul><li>DateCreated/Date</li><li>Description/Body</li><li>Title</li><li>string[] Categories (nice!)</li><li>PostID</li></ul><p>Non-Conformities (for Posts):</p><ul><li>Metablog API</li><ul><li>Enclosure (although this is not used by CS::Blogs or .Text)</li><li>link</li><li>permalink</li><li>Source (name and url, was supported by .Text, not so sure about CS::Blogs)</li><li>userid</li></ul><li>BlogService.asmx</li><ul><li>Excerpt</li><li>Name (I guess this is for url rewriting)</li><li>Enable Comments</li><li>Enable Trackbacks</li><li>Moderate Comments</li><li>Enable Ratings</li><li>Syndicate</li><li>Syndicate Excerpt (I guess you have to define an excerpt for this to work?)</li><li>Syndicate Root (for communities?)</li><li>DisplayOnHome (again, communities?)</li><li>IsArticle (I really dig this one. I&#39;ve wanted to be able to edit articles from the desktop for a long time.)</li></ul></ul><p>I&#39;ve also been looking at ATOM a little bit - there doesn&#39;t seem to be any mention of categories in atom, which kinda sucks considering categories are a nice way to filter content.</p><p>All of the apis, including atom, have one other thing in common: getting general blog information is usually a two-step process. As an end user, I must supply a username, a password, and a url (although the atom api lets you enter a homepage url with a &lt;link/&gt; element that points to the service url (v1.0 of CS::Blogs asks for a blogname, too. Maybe this says that you should only work with one blog at a time?)). Then I get a list of blogs that I can edit with the credentials supplied. Then I can create, update, or delete a post. I can also get a list of recent entries (and articles in the case of the BlogService.asmx). </p><p>With atom, on blogger at least, you are required to use https:// as the uri scheme. Not a big deal, this just means that the common denominator for a blog has to have a couple of booleans: UseSSL and SupportsCategories, because those two are what separates atom and the apis of CS::Blogs from a coding standpoint. Since I&#39;m going to be using libraries to handle the xml transfers (xml-rpc, soap, or rest) I could care less what the xml looks like.</p><p>Speaking of libraries, the code that I have for handling the metaweblog api also includes support for the old blogger xml-rpc api (thanks, dasBlog!), so I&#39;ll probably include support for posting to that api as well in the new version of <a href="http://PostXING.url123.com/main">PostXING</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ReverseDOS in Community Server]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-16-reversedos-in-community-server</link>
            <guid>https://chris.pelatari.com/posts/2005-06-16-reversedos-in-community-server</guid>
            <pubDate>Thu, 16 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>After another slew of referrer/comment spam that showed up in my blog this morning, I went ahead and downloaded Mike&#39;s <a href="http://angrypets.com/tools/rdos/">ReverseDOS</a>.</p><p>I followed the steps outlined for setup, but it didn&#39;t quite work the way it was outlined at first - I got the dreaded &quot;yellow screen of death&quot;. This was due to the entries that I had made in the web.config. So I looked at the entries that were already in there, and I noticed that some <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section/</span><span style="c-o-l-o-r:blue;">&gt;</span> nodes were added to the <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">system.web/</span><span style="c-o-l-o-r:blue;">&gt;</span> node. Moving the default configuration from looking like this:</p><p><pre><span style="c-o-l-o-r:blue;">&lt;</span>!-- copy and paste the following code --<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">configSections</span><span style="c-o-l-o-r:blue;">&gt;</span>
   <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">sectionGroup</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">AngryPets</span>&quot; <span style="c-o-l-o-r:blue;">&gt;</span>
      <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">ReverseDOS</span>&quot; <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">AngryPets.Web.Frameworks.ReverseDOS.FilterConfigHandler, AngryPets.Web.Frameworks.ReverseDOS</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
   <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">sectionGroup</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">configSections</span><span style="c-o-l-o-r:blue;">&gt;</span></pre></p><p class="media">Instead, mine now looks like this:</p><pre><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">sectionGroup</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">system.web</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">membership</span>&quot; <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Microsoft.ScalableHosting.Configuration.MembershipConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562</span>&quot;/<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">roleManager</span>&quot; <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Microsoft.ScalableHosting.Configuration.RolesConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562</span>&quot;/<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">profile</span>&quot; <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Microsoft.ScalableHosting.Configuration.ProfileConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562</span>&quot;/<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">anonymousIdentification</span>&quot; <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Microsoft.ScalableHosting.Configuration.AnonymousIdConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562</span>&quot;/<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">section</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">ReverseDOS</span>&quot; <span style="c-o-l-o-r:red;">type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">AngryPets.Web.Frameworks.ReverseDOS.FilterConfigHandler, AngryPets.Web.Frameworks.ReverseDOS</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">sectionGroup</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p class="media">And I of course moved the ReverseDOS node to be under system.web. We&#39;ll see how this pans out, but I thought I would put it out there just in case someone else was having issues with it.</p><p class="media">[ Currently Playing : Stinkfist - Tool - Aenima (5:10) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: This is just a test]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-15-re-this-is-just-a-test</link>
            <guid>https://chris.pelatari.com/posts/2005-06-15-re-this-is-just-a-test</guid>
            <pubDate>Wed, 15 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Nice! Lookin good, Don! I personally have had firewall issues with FTP (what a beast!) and have yet to find an opensource SFTP (ftp as a subset of ssh) solution, which does work on my server. One of these days I&#39;m going to beef up my firewalling skills and let the stinkin ftp traffic thru. </p><p>Anyways, glad to see you &quot;back in the game&quot; :)</p><blockquote><p>In an attempt to get back on top of my blogging, I&#39;ve just installed the latest release of <a href="http://www.chrisfrazier.net/blog/">Christopher&#39;s</a> <a href="http://projectdistributor.net/Projects/Project.aspx?projectId=12">PostXING</a>, all of its plugins, and configured the FTP support. If this post is successful, I (and you) will know I&#39;m good to go.</p><p><img alt="This is one of my MSN Instant Messenger avatars. It&#39;s supposed to look like me ;-)" hspace="0" src="http://dev4net.members.winisp.net/images/character.jpg" align="baseline" border="0"></p><p class="media">[Currently Playing :: Louder Than Words - Greenwheel]</p></blockquote><p><i>[Via <a href="http://dev4net.com/blog/archive/2005/06/15/2320.aspx">Don Smith (dev4net)</a>]</i></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING Answers for Yex]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-15-postxing-answers-for-yex</link>
            <guid>https://chris.pelatari.com/posts/2005-06-15-postxing-answers-for-yex</guid>
            <pubDate>Wed, 15 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Yex sez: </p><blockquote><p> Nice. So where&#39;s the Categories, Post, Post and Publish and Crosspost buttons at? Where&#39;s the post editing toolbar? When can we get our grubby little hands on it? <br><br>Since it appears you&#39;ve decided to go with the whole sidebar idea, why not use that to list the cateogories checkboxes? Seems logical to me anyway. </p><p class="posteds"><a id="_ctl0__ctl0__ctl0__ctl0__ctl0__ctl0_Comments__ctl0_Comments__ctl0_NameLink" title="Anonymous" href="http://www.chrisfrazier.net/blog/utility/Redirect.aspx?U=http://yexley.net/bob/" target="_blank" rel="nofollow">Yex</a></p></blockquote><p>Good questions! I&#39;ve actually created a sidebar for the categories, and am currently studying a couple of the API&#39;s I want to support right away - it looks like I will be able to handle categories the same way that I do currently. I&#39;m going to try and find a way to push categories into the file that is saved (er..File -&gt; Save) for a better offline story too.</p><p>I&#39;m also looking to remove the History dialog and replace it with a &quot;view&quot; on the main form - no reason other than trying to get rid of unnecessary dialogs. And it&#39;ll look cool :)</p><p>As far as all of the other buttons, my current plan is to have all of that plus some configuration details pushed off to a kind of &quot;provider&quot; - each api plugin should know what buttons it wants to add, what operations those buttons support, what kind of identifying information the api needs, etc.</p><p>I&#39;m hoping that I&#39;ll be able to break things down to a common denominator and have something that will be able to tailor the UI to the current blog that is being edited.</p><p>And as far as the grubby hands, sorry - it&#39;s probably going to be a little while before this is ready for prime time. I&#39;m not even ready to dogfood v2 yet. :( </p><p>[ Currently Playing : Would? - Alice in Chains - Unplugged (3:42) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Greasmonkey goodies; embrace and extend]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-15-greasmonkey-goodies-embrace-and-extend</link>
            <guid>https://chris.pelatari.com/posts/2005-06-15-greasmonkey-goodies-embrace-and-extend</guid>
            <pubDate>Wed, 15 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Thanks to <a href="http://blog.dreamprojections.com/archive/2005/06/02/905.aspx">Alex</a>, I checked out a great application of <a href="http://greasemonkey.mozdev.org/index.html">Greasemonkey</a> - the <a href="http://www.arantius.com/article/arantius/gmail+delete+button/">Gmail Delete Button</a>.</p><p>Of course, I had to look at the script since it&#39;s just javascript and play with it to see if I could extend it a little bit.</p><p>As with most of my &quot;embrace and extend&quot; forays, it was just a simple change - I use a <em>lot</em> of labels in gmail, so when I&#39;m reading via the web interface, I have some organization to the 50+ email lists I&#39;m a member of. Every screen that has conversations listed on it has a delete button, including the search view, except for labels (until you hit the search mail button, but then the number of visible conversations goes from 50 to 20).</p><p>So, I popped open the &quot;view frame info&quot; context menu item from gmail and saw that the view querystring parameter for a label was tl. With that in mind:</p><p><pre><span style="c-o-l-o-r:blue;">if</span> (document.location.search) {
	<span style="c-o-l-o-r:blue;">if</span> (document.location.search.match(/search=inbox/)
		||
		document.location.search.match(/search=query/)
		||
		<strong>document.location.search.match(/view=tl/) &amp;&amp;
		!document.location.search.match(/search=trash/)</strong>
		||
		document.location.search.match(/view=cv/) &amp;&amp; 
		!document.location.search.match(/search=trash/)
	) {
		setInterval(<span style="c-o-l-o-r:maroon;">&#39;try{window._gd_place_delete_buttons();}catch(e){}&#39;</span>, <span style="c-o-l-o-r:maroon;">25</span>);
	}
}</pre></p><p>I&#39;m not sure if the  &amp;&amp; !document.location... part that I added is necessary, but it doesn&#39;t hurt anything. Now I can delete posts in all of the views that I would want to in gmail.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING development]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-10-postxing-development</link>
            <guid>https://chris.pelatari.com/posts/2005-06-10-postxing-development</guid>
            <pubDate>Fri, 10 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been working a little on my plugin/provider idea on <a href="http://PostXING.url123.com/main">PostXING</a>. Currently, I have it building, but I&#39;ve had to disable some of the post-build commands because although it builds, it doesn&#39;t do anything currently and I don&#39;t want it to overwrite the working copy that I have on my computer.</p><p>Interesting aside: I didn&#39;t actually <em>remove</em> the commands, but since they are all written to a .bat file, you can use normal batch commands - like rem - to effectively disable the commands. An example that is currently disabled in the branch .csproj file but not in the main trunk:</p><p><pre><span style="c-o-l-o-r:green;">rem COPY /Y $(ProjectDir)ReadMe.txt $(TargetDir)ReadMe.txt</span></pre></p><p>This way, when I&#39;m ready to actually dogfood my new creation, I just need to remove the rem&#39;s and I&#39;m good to go.</p><p>I&#39;ve only made progress on the UI so far, but if you want to see the progress, the code is always available on <a href="http://vaultpub.sourcegear.com">vaultpub</a>. You can view everything on the web <a href="http://vaultpub.sourcegear.com/VaultService/VaultWeb/ShowFolder.aspx?repid=5&amp;path=$/branches/PostXINGv2">over here</a>: the login is guest/guest. </p><p>As if you cared...</p><p>I&#39;m still trying to work out how cross-posting should be implemented. I&#39;ve decided to go with an interface-driven plugin model because I don&#39;t have an app.config with this app (no reason for that - just haven&#39;t needed it yet) and I&#39;ve already got 2 types of interfaces loading as plugins. I have 3(1/2) different types of plugin/providers that I want to implement, all of which I have access to so I can at least test it a little bit. They will include providers using xml-rpc, webservices, and the Atomizer. On the UI side, I&#39;m going to do away with as many dialogs as possible. I&#39;m trying to have this app have only one or two dialogs where it makes sense. I think everything else should just be a &quot;view&quot; on the main form. </p><p>I&#39;ve also imported a couple of controls to the project along with an <a href="http://url123.com/a2nq7">IUI </a>library so different &quot;views&quot; shouldn&#39;t be too hard to implement I think. Anyways, back to coding...</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A new face for PostXING]]></title>
            <link>https://chris.pelatari.com/posts/2005-06-10-a-new-face-for-postxing</link>
            <guid>https://chris.pelatari.com/posts/2005-06-10-a-new-face-for-postxing</guid>
            <pubDate>Fri, 10 Jun 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I didn&#39;t go too too far, I think. It&#39;s definitely a step in the right direction, tho:</p><p><img alt="" hspace="0" src="https://chris.pelatari.com/assets/ScreenHunter_008.XvFrgHnW.gif" align="baseline" border="0"></p><p>I don&#39;t know why I&#39;ve opted to start at the top and go down...probably because I&#39;m just procrastinating on getting to the meat &amp; potatoes (!) problems. I also had to go into a different program to upload the file above...I&#39;ll be checking that as well.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[If I only knew then...]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-27-if-i-only-knew-then</link>
            <guid>https://chris.pelatari.com/posts/2005-05-27-if-i-only-knew-then</guid>
            <pubDate>Fri, 27 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Not what I <strong>know</strong> now, but what I&#39;m <strong>learning</strong> now. I recently picked up a copy of the src to <a href="http://www.flexwiki.com/default.aspx/FlexWiki/FlexWikiPad.htm">FlexWikiPad</a>. I just wanted to see how things were wired together in there: I only have a very old installation of FlexWiki sitting around that still looks like crap in FireFox.</p><p>To his credit, <a href="http://pluralsight.com/blogs/craig">Craig </a>has done an awesome job of making FlexWikiPad very testable - something I didn&#39;t think was all that easy to do in winforms. Apparently, his dialogs are very humble. He&#39;s using a pretty strict <a href="http://www.martinfowler.com/eaaDev/ModelViewPresenter.html">Model View Presenter </a>(or controller, whatever) pattern throughout the application. I thought this was a lot of extra coding at first (it kinda is), but in the process Craig has made FlexWikiPad easier to maintain and update thru the use of mocks/stubs and tests with this pattern.</p><p>Currently, I&#39;ve got this itch that I want to scratch with regards to <a href="http://PostXING.url123.com/main">PostXING</a> that would have been so nice to be able to test my way thru. I&#39;m just hacking thru it now, and I&#39;ve done a pretty good job of messing everything up so far :) In my defense, I&#39;m still learning unit testing and when it comes to winform applications I feel that there is a balance that I like to hit right on the line of usability and architectural beauty. Anyone who has looked at PostXING&#39;s source will soon see that my architectin&#39; ain&#39;t so purty - it&#39;s still just a lot of different pieces from different places glued together. I don&#39;t validate everything that I should. I left fields that I <em>intended </em>to add functionality for disabled but visible. Even up to 1.1 versions. <strong>BUT</strong>...</p><p>...and this is a big but...</p><p>...it works. That was priority #2 for me with PostXING. Priority #1 was to make something useful that I could use to learn winforms. </p><p>Anyways, I&#39;m hoping that I can glean some insight off of people like Craig that are way more knowledgable than me on this front. If I feel like the task for PostXING to be testable is too great, I may just try to apply this knowledge to future projects. So, thanks Craig for making FlexWikiPad follow a concise pattern that I did know about but have never seen implemented with tests in C# before.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Converting a Base64 String to an image]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-27-converting-a-base64-string-to-an-image</link>
            <guid>https://chris.pelatari.com/posts/2005-05-27-converting-a-base64-string-to-an-image</guid>
            <pubDate>Fri, 27 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Do you ever get an email that has some base64 gobbledegook in it? A lot of times, based on MIME information directly preceding this junk, it&#39;s actually an image that got converted to text but never converted back to an image (duh, right? Tell me something I don&#39;t know? Okay...)</p><p>I got one of these earlier and decided to write a little utility to convert that string back into an image using the .net framework. It was pretty simple once I got the namespaces right:</p><pre><span style="c-o-l-o-r:blue;">using</span> System;
<span style="c-o-l-o-r:blue;">using</span> System.Drawing;
<span style="c-o-l-o-r:blue;">using</span> System.IO;
<span style="c-o-l-o-r:blue;">using</span> System.Collections;

<span style="c-o-l-o-r:blue;">public</span> <span style="c-o-l-o-r:blue;">class</span> MyClass
{
	<span style="c-o-l-o-r:blue;">public</span> <span style="c-o-l-o-r:blue;">static</span> <span style="c-o-l-o-r:blue;">void</span> Main()
	{
		<span style="c-o-l-o-r:blue;">string</span> base64 = <span style="c-o-l-o-r:maroon;">@&quot;R0lGODlhSwDRAPYAAG9qb6mlqJwdJMzHy5qYm722vbS2zldTWKzK9smjabKPZfLVnL26vo
		V7gsS2vkc5QoeEiG1LS5Rydv/+/zYyOMS8wkoyNEhDSLSus5GVrbSytbJycQwIEGNdZCciKbSJjOrl6nUwNXqIrY
		xPTGhAOHd1flxWXq2usK+prs9uZyIaIzErM5aq0zo1QVNMU4xNL/z3/a1RTysmMKOdoykMEPTu9K9oW7Kjk4yMkJ
		SNk04FC5JuUExLT5i36dGugbW1uZiDiHkDCNTU3DUkKpqjsdKJf6m841hCSRkUHPbz9ruyuI8zN62ztOHd4rFdY+
		zr805SVnNgYx0iKk4YIOS6iT0/TLmxq/f1+zEdGjcvKoeaw00oIeeWh8bl+p6fns3n2VtjfP/J2XQZH7W7ukpPS4
		9fXy0vN1JSUNCcm3IpIpOSlZ+XhvvqurwyN+/r7cDExqm2qvb17uDAe/v0+RseHXx8fsO6sen7+ycuKl5fYIqPi/
		b8//v886yGSkA8Peq6oSwAAAAASwDRAAAH/4ADYz8MFQwOFUoOSkoYSgUVDg4FlJMFjgwMlBWGmWOZnBUFioiSkY
		oVbxU/hAyDn5mxhZqxFbAMjJGnjJWSvpSPnLQMb8W1kaO+ygWIhgWxY5+dss6xb7WVj5abzMuUhc7PstjdysrT0L
		Pjs+LEPxg/nJO8md/alsGhmu3jot3J5r5Bk8agVa1hmjRgcPQIkkCFGHpRYiZsIrhQGCfOKydJoCeCBkEhdDRqoZ
		JdCU9ooGip2b5nwvSBm0iznMV1qtZVy4RqEaZL8AqwqsnLn0VOFmm+ZNfRo0hQ6NhhY5RJA4oKCllp0PDjESOTSt
		kJvCkUUkxL6zIREkYNYamJP/9OMNCgcu6JHzAZYNCgaUABFCu/RUTaaOEzVrFqaroFtRO/dg2/FeCKuODdskJnBd
		BQYQDWAgM8l4T0ZmUqBnUVq9UZdViisD8oV71ryBDXyYU0BFDiOcBEURhUWq0QfMA11WnBFWstqt4zocIJvfsBWF
		Nd4koCB0AhBAMKFAEI5JhRtXIAo/x0XjN28JBDVrGZnJDPl4GVyXjf8c0/CnSADi20sIIMSCBBARRqDOAFBkJoYN
		xN47QSTCbXHMMJZcHNJ9wJJ9iBCySxsWLICQVsVwEBFxSIBAccFMjii9wRQIhvTqWzT2sXEacQhxoyQdcJjFihBI
		eAFfDGAAwIQYD/Zysg4UeLK0LJohQecJCHKFfVKEtOLrlCDSd7xcUjh1upZEWRs5wAGAYEKGmGi1GyuGKcK3DQQR
		Mz+JMWXpw8QowhjMVCFwp7jWkoh0wwwYoVAyjBQABvVOHiiy2+GKcUSHjAmyOl2TaAL7K0w9Y4g6pE5laobiUfh2
		fagQKjB1Aq64o0rKhCpRysoAgGxKnCGSlNHZVKbaF8h4KhCy00JnxW2SHkGy3eGiUWdKhAw7WUSiEFHRwQgMIPb6
		DwxihI1QRhWsamS2iGPB67FwYB2EHiD9LSSgMH1147hAVYYKEii3ngB2kl6IXl3FCUqGtssslyyLBv+3FwKw1YcI
		AF/w1ZbLEFCSPsUEYUFtxboAwDqCSuJrz885tMSa2r8HeGasCIEijoFReUWFigMccd21CGzx5vYTESMlSE13MSJf
		WNYwkvtPDLCgfwAxEnDMCBBxRHEMEONmywQRFcpLBBCiOUQcK9NFBgXCE0HmfuKDOrTMl239GtsMPJWoXaCQa0IL
		EFEZQxgg1FpAA2F4XbEMMLW1yrwgDfhYtkBSi87RAvLUlCd7IvJ0uzdzSz8obfWGzMNeFgF1F4CjY4QcIUFCMhBO
		XEEaKKKH2edBIy9/gCtboMe7cQZRlAwOIWEbxQhupcNB+2DUuk8cII96qQCCFLV15SKc1gtIjv4AUg/v/v31mlt0
		K64YsFx14XsQEXf3CRhvQjTEGCBUhAMYDM582Fle68SgRGQhGsGdBNTd/xTtSEVzm6PApfNEieDiY4gvi9IA1d48
		IGymABDpRAFQPAQAi5UhA/JWJ3otBGuQrgBfERiXzHMt9eUDCDGVBMY1uw3wtCsAOv7WAE80PDBixAggZYYQYRKd
		kbpBYuXuWiXEUxivgC4IUZtDAABhzfutRkFZqdCQVKiAANNBYBG8xvcEV4AfRisAEzlgEIEQgNBnKAAwDUoQ6p2I
		omEKGIdpjLC14gAiAJAMgqZjGBJ9gOBr6IAjs4YAb9ChwJ1GgDNcbABikwHOtGsIEd7OD/CAK6QBX84AcAQIAvnH
		nNY/pDCUJScZCFrOEUA5BIqVnBCgE4EwEcALItDM4JKYjBEi6pRsRxwQkhsIEEjjCEMwhoBQGSgRm8wICr0A4YCH
		uJLMVXQ0NaUZYoIAIBAsCANTSShgFwQAQsMAVK2qCSmHzBJRFHtjKU4QEUqIIMWnCBFazgAhRoAW362L3ExIIANU
		zoN61YyO14gQlYtIIdgGCFcBUAZECMgeqE+YJMxoB17xzB/VRQBTMEtApVWIEZWkABNbxhLYwIlkcIQMiEFvKmgK
		QaARK5Bjtw8wcBaMDGpje2FwzTfWkIgRM6agMSbCGgJhVQgDxAARnk4Q0n/8hdU9ZBSIR6gaZgxakXTpCBhKLgBh
		hgQJ5mcAQdVnJxL3jBBkdAyRfowAJDkEEVPBAgFTxApXi4wFC8AqqKtBKsiKUpTmeA0O+s4Tx0HECsrsWxuF5wg2
		X4wAbSsAGNjmAIodznA6jaAjP44QLigtciFEMTNST2tYoNJGNfpYYjAuBNEssh10KgRjSEIQxoEJwCNkACLPyVAs
		j95wMMtE8eQMo7r9mHcyiRAzVY97rXTawX1LAZNTTACxqAQgukcDUVXIwEXBuBer02giVEoAgS+IADoNkCvcqAAh
		dQQVXNcADt8aUZDgDHS3JA4ALj4MDVxS5CxUMABgAAmmYwg/8KVjCEi22sCOplo9e8JoEoPLIEYAhQFVowhAeY2A
		8U6ABqNDEYZJjrunTEQXUhUN0D48C6M1DDjWdwXwqotKoquADGLGBPTsbgoz6TAAAMUAIjaAEJIw4QPh/QAhUAQK
		3Z7NMzHJUJGRc4weK5sY4PrAYIBCAHfkCCCwIqAxX4wc0ceEAWLCCBEXw0kxssQQlYwAIjGEEEZkBpVQPqhxaYgB
		VCsAKLT0ILuClBxtYl8IEhMGlKuxYHKCjBBS7AA5Pqk68t8AASHtABCxzhZ5hkXRlcoAUj9IAFPehBCVC6Ahe4AJ
		r5pOUqHEkopKiDAQSONASGTWwc0BQCJdCxCVj/2ukArQC5FxiCP03QAAsADnUbkEAHjIAAFiAAAUZgAUpR2gI/lN
		QEBrDKAKxwQl+/xMaVHnYdKI2DYR/YBC4Yb4QFRAGqUgCfMhjCDEpwhAuQIApli0IOwq2FbvcAASJoAQ/ue4EAmc
		A48VJ0M4JBk3oTGwINqEMJhl0CU4LcBRX3AEpJuwIsSPu0FBiCCYggAhyAoQNRyHkBhABrPoPbCFAwAxQu4IdAtw
		AHpcm4QwbTDo834Ol3bAAERA4BNeSBaPsccRV87IchZAELWaAADx5whAdkoNVGEMK6G4ABA/TZ2wjogRa0YAYe5L
		MFJdUfA+xgh/6sNhwFgPrThy11/z0PGwAVB2igV1pVGVB4CEi4wAOs/QAweLsLXfiCEG6AAhwYwM8Pj7sRqiAFra
		9AvEJAgYLa3RyMgPzpUK+DHUfegHxXdcR4MCkFLOCBB8iADs829RYsAIa49yDzX3isGurw7ebHGgyRb8EDXCAFM2
		TgB0KiSUOMEvs76hkAJWhAyR1fX7yTEsWgfbbjh7AvEkTABWDAvBa+8IYFjKECIM6A87tNbnySO4SRcRTfEHJ35H
		3fJ3I8MGH1JQO5RwF+YGIPQFIeUC378gEDAH8s0AV38AVwsAZAsAYzMAAl0AXNx20icGt/NWKy0whjAQoTAXV6Fo
		PgZ0fIRX4eQCV0QP9VFkABJJWDKrAvaIAGDXABBqAFRNAFb+AHN/AHOVAAfuZ8RkAE+SZ5pWUGHXIfNTIRIPd9Mg
		gAXqgCAuIBK+ABJmVSDwBQeFd6HtAvZSABaHAEYPAELEAEcOAHa7ADfyAuPxd6RmACAJVvgYYDtxSAL/EMIldyXp
		iI4GcCKiCGotYidJCDK2BiJVV61jIFbjhEUZABLJABarAGf5AAC2ALnxdrcYcAJSB9ojRiOOAqlgMK36eIiVgCJu
		ABKuB4NUgljneGpSVNMlA6JPABZRACUTADBtAFECAEEqAACnADA8AE3BZrD5cBgeZ/R3dN5gIKioiIXtgB3ugBBC
		ID4Lj/LXgQUFQIBSX1AEMQQR/wASEwBAtnBBBgB32gAAvgA3XwBk/4bT1gACl1AStVBR3Ad4BXiAUgi4rojR0Ahl
		g3IFIgTRTmY50WczoTAR9QBOsEBBlgBCVgBWzQB30gB3owBvvYA0bQBVAgA4BYdwVgBaulNJSAkB0AADNJk0igAr
		coA+KoLR7Qk0hQX2YgechDAuxFAg+AABkABXqwAHKwAAtgB29Qig/3aiKgUgHCA1KQAwUjGZQQizSpkF5oAitiiz
		0pTVH1V23WAi4wea/zAWggAVuABWAgAmqzAAkgB3KwAzdQhLD2cFogAjo5YhNXAo2AMinUCfiHkDSZB95I/wG5gn
		VmSSX/tAKSsnskEAIhIAHwdXAyQJcDsAMhuQBssAZEoAWxZppakAG5EmUCaSLkMhmIKYveSJMmMJMuYCC3eINmsC
		23+Gw8MGo6IzictUxH4AI4cABrwAaimAAJAAQo4HbGN3cSEyB4xwPfcZiXYBQJqZAdwJgA4AIcoJMqoC1mgAdSQF
		98FXNthZlpgAZAEJcHAAA5xwb2aI83UAHQyY8mIDE8gHe1RjPAgJ0xmYgKyZi1iW8So5Paoi04KQNU5k8cQAKvkw
		Yk8JYWYAJHYAIRkJyiaJc+wG7fxmcsQF4eYHfIFTAkgTQWUZNf2Z212QEHcABkOZ4L+pA6qf9SHdBWWxACSxACZa
		A1JuYCR8CMzJkAVNBTAxBurwZ9N7lPK+AHeTAX8DAMcRMF3WgCJpAHWpoH+NYBEoOTOClqYDggVVCbR8BOIZAGIy
		ABZXAEWVB2D7AGPuADdkkFPpADSRpuLAAG5NUiW4divFE5/sArE+GFUVCgWnqgYkkgKjAyeVVfVQAGBlBqFhACUz
		ACRYAGxkUBBRcBWFCkzHkDFdVncycpBUJSDugBOPAZrLQNh8qdeXAAXOqNB6CTSMCgOul4MsABBgABF9BWaRADmB
		kB7jd9c7YDd8mUcnADN3ACrqYFLCBeBCIFpdVPURALXVEIkeGNWOqNscqYBwD/oyvQiEiABzoJjgOSAUSAAy5gbV
		uQVCPwAUDgcmXnflSQAH1gpHqJAk72l1DwkAVSWqTkAp3hHCE0EdzprTHaAS6ApXUyrdVXhTJAVg1QYhM6AlvAQW
		/aTBGwBcyZr3ZpBwNgACIgd/86rhwQUHhAZcUQD7igSgWQsC4argdQm35Do3QQYbdYBQZwAmqAoRJ6mT9aYUfgBx
		XpA3IQki/wB2h1diygBaQnjj95ASu7AlJqCCexDTLbAViqqBN3q7spA+QlAzzAZETQARdArIETAUPgAhXzq1mAXs
		x5jwnwAQTAZ6Uqnj1JSn9VTYGRDAjLtd1qAuHqAlxbs7cZnlKQ/5MRVgIGQAQZ0HtHIAFAIHP4NAR+8KYWYJcJ8A
		J5eQMAkAElIAJ7CrB1EpQDUk2soDs0oZBdO7hYWrMX0GYF0pPjCWVRKIV2kgMEh08UEIlZMGc+AJrLyXl82QMpWQ
		Uc0AIG4gf3hRgu6wi+4Lqvi28virY32YiN2oiYIgKQawB6lQEROIV4gARZkLl2iZcKULdr8Hl/KQIcoE8qQAd4gA
		fjuhAIE4Dc+bqHi3IH4AK22KiTQlIcAAacyIl1kG88gAdZUL/BmwVn4AP5yow+EE4iMJd095OYQgf4RQGXQQvmoK
		Xc2rUMi6UNm4BIgAVgWiDUigQrBQWzxrz6xAN+QP8GT/KAJHCX69ucGikCfwkGJVAgjokEdOB75KStGiEJiVq91q
		uQCRiebTa/ZMgBuxm/HAAF4ZmAmXtaMkADpJSvL7ADVNCMZ9cDPgwGyhuJkTi7EFAWgJEyBcDE3UqrLlCzB+B71Y
		IHkSiOEkYgPMABpVduREcBWaCOGZMASIuvCkCasGZ5pCcpkegBm9YBWlE5ASjHXcqtPGC4iBdh5dmTTeJ7VOUBfj
		CGLCVnpvYAHLA1+ZoA66sH7mt5BmAleAAlYNgCBbEQAjQRNcvE3mhrXMsDB8ADYJAHZsAB5eiD2VsgHNxPckZ2Jr
		aOfWCnRrrIRLCnpFsCfmqedCADF+D/AQXRaxjgAMmSpYdLwufMtWcwzDwwgXRwk5mCk6dKVb4LgSS2jlGgAH2wAx
		K8Bkxwwd62ItJ0q1ScIgOwHZfgEJSQpVzay4Mbo4R7BnlgazO6vbZ4qo6HYgElfRTgAlnAAVsgwUUKBG+QASTbqC
		9SntzSJAk0FzPDCL0M0bEbuy5wBjY90QAsz2AqavBMVUS3aWd4AWC3PsiqyDewBmawqyxyKxzALWPrAUiUVpSQVp
		kQ0w7dtbZm0+u8yWJ6k7bYJDcpMU/6b1R2hh59MdP8sTuwvAKNLxyQBRs8MoXBC5ER00z8vzV9AOtcs1EcphMWpl
		cz1v92WtGWuTQAmi+A/68+AHZf6nVIQAY2/CLWsyYy0w5d69AxXccxascdMK4C3KArrF9E94BBfQEuMEZi/LEK0C
		/Q9INLrcc4eS/VQQkhoaiXLdObjbgyGs9eHcAWfX6CfFrBiwXI6gNpsL78QpYXgwUAZSBRUgKGRRwLMcKXLcyJeg
		BQULM8gMLi2IiN19d0sGl8O9p+cARbkNg+4MoKUFzIZTEsQrU5iwSQdwF+sRW1jc6Ey9CxCgUN6wI0zNNePSA9Gc
		AcfFqkJHkWkLlZwM8vIMFywC+OZyD38iZiS8huNkJ3UR8MILivCwUeHqP8Ha787Qddja7+NCDyXI6bxmlnuC8WwM
		936cpbEP+8PjYEt8jCUvBmHHAB2bEVtrEVHP662O3htqbbVSbPZel4Y6gidDAEK76WQpoxEQDG+EoCZ9BvWTCub4
		IpSDCGHqBijSAXcwHk1ZuoH77Z1ltlPG3ibLbCWMC3ZXcEZzpJ96rI/IJiYWeLdLCg5psFALBuEMEVn1C92I3dZ5
		Ddr8sDJsCD0pKrz1ZfYVotu0d2zOQHxSXGW0AFO6AAO3C+eEDKWaAiZiBq/tIBIWQIhBILmO3h2Q0Fe43XDcvoCQ
		qOuBjFmYIFZF1wHZAFxNrgzHmvJEAHwUtK0tYiEraOWYBHu1EAdwEfQu7qUBCrNm1rm0y4tp6rPoZrUjsEHlD/Yi
		bGTHO2NXf5Avp8Pw/8dculvV7nArd0JlagAWOAKi8a0Vqt1bbWsPgWwF1+owNSg6I2rsYFgb9KRMy4vvrML2D3wH
		WCk18n5wMQgtWRKr2c13mwzmdABq9em7+5vV7e7yQearxtAfjEA2QAwVnQBxJcjwqwMVkwBMjV3mv4dRFwBJCDHX
		uhAYnSyzYdozYN2Wfg33VsAhvfpNJEAfbrvCXlgypQyBZQcaSUBfaY3n1wNnF5vkbfb+qDBR3mAOn0CPvBCrdd7/
		a+yf+bIvLseCbFgKW8dQEMdiYGkI+NLyTgAwrgAxLKL2FXWr85algAMrs0zpPxLc4u02Ifo0WO/29ppiITtgIOXH
		RFx6gud4aqnOMWswUKgAar3S9YECAUEJQukgUuAACrxQjmoyowKqsmcPFardf3HqPM6yIqYAb+hFwoFoZevS8PgG
		Im8M4sQgMfIAHDHVDJFXM3OQRRcArkzBWCHg2nj6UXj/EWf+91/Hsqsk+y38A+1vnlWy05k/tn2Ga5MgQcYAHBy1
		fPJnkyEOoeYAKgAwlhokeZILh2rPr2DuvvLMDP1u9ieF8RFonmNWeA8GCyIuPhwaGy4mco8/CwQvEwRKHCgaKEUl
		Ch8fOjccLU+WNCemB6RkZ2dsbj4spzxoGkgoRkJkNIsZIFSWEmRasylPVAkVUIqf+Ci0TRTCHjl3WRxTFTsfnDEJ
		D9wzSmAW7SQbq6mnpwdnFgcnAh60Erg+tH1+xx0WJmhsQxhCRNjwKeLHgoSMGDh1kLP8b8WMhCpwmGH28wcGLAYE
		w3UQdc5ICQJ88qAHrqXMhDIEeJlQBaqFABoAQhDzz8rLzw7CUHQ1nyWLHi5QISPPSkUGBoLItSOlEYnDih0ROTqV
		SnjpuQhBU6CBMmtErSdUKNJjA4cIABY6GfISpgTAAgg9JOJCXcxOHDxy4fOnjo0LngB1I0pUi8PB3DhIGnp6B+jB
		nDoOYcryJ5QACxh4eJCTCSNOn6RBZaCnSyuPAAogkEP7UMdXA7wYr/HbtuJlwYaObZwizR8Nz49OZEJ8WfpnIE0H
		WVOhwTrpw5MLkEaxmyVnw+6seRWBNZnknhcOWKBnqss2AdwNuDLl2Q8Jzx8gPqCU6iqk414aKJmzMm8lxQM8AEB/
		AwQRNeUFALP0hw5gFDQ6zgBgwQKPWSEHs0IcUKft1DQQ0wGKNCdi1AIkMWdYCiwTbggEOVY491cABnEJRAAARjcJ
		bHATXMAcEzHFxAyxVJHLXCEA9MMId0WXiAxB57SFHFCh7QUUhbIJSARRYtPNBClyu0gMMb2QTAADgW0dfNVDx0MA
		EIXdUmllcEupFEDV0FsFNXjfgRGAw1TEiPB1c80QId//tQMksAMAyAxQUybNkCBVVQECZxnoCTjWJMMNZRgWHtMU
		FtLphQg51XdHWCLEhC84AfMnBWApELTiCFDFIYkogHGFzxwz1d6tLlf2MEMN+KF1mqARMduGAnBVCYUIUaYrmg4w
		Q90sEPlWDxgAROF8g4YjOcNaAIISsg0uYBhlDQIC645PAJCp88hUKxn4BzgjhJwABFFVAcAIGdNXWWgyHYIiEDCG
		m1cIELLTQxBwEUtODCCgCglUtcK0DwGR2uttAgJCuYoQYG2mhQ7wkpz7siKXbmAQUUZKgxBwwwFpjDAdQhYUh45R
		bjVgMtIKwIZ3PUwUFcGLRJQIORuoqdH/8EcCIvvvbe+8kBHVzRRB6pkIHDHHN0BAMIpTY3QZ6clQpCC21y5tYKtN
		TsFlpuiKeMUXGpN/F/n2BwglNXPzXvBa9N4G8qXI3twhxgNfdEE8z4CcMTYqnwmcJtMoQLALV5OMcFTMpQDyFeUn
		CAF06hzLKxwoVDLQ8HxAzFmiuIc0HuF5xLogqiR3o7EhQ3UwgSch8yiwy1qODLyL7gc1QeJseLAgbWW7/ipQdE4U
		cHMl9QOzs8tLCK7Ej4YdZRDSIVl+jJ7O7B0LUgwgy7K0j5ZW4M5XFv1YCjAMD5/ABw+YqCC05ChpixwwWyY0c6Zq
		ECD+DiS79awQG+9CUP3C//V4h4CTOkJAPmjYgh+gDANlQWH0wtJmVPMUEU2uG1mJWPB7BghQs8KEFd8GliPFjB7t
		gVF5esAGEKchUHiBepKpjBDy3AQwm2UTVineBMU5zXCbQ2IJjVbhUMrGEraEE09jjjfthpE5AIUYs6gYADkWpQbZ
		5Rgua4wU5u2EZwAFg9DFTPWOIwAX9iVkNXuKAcQkneBOOiCxngxA8D+AwAiEcLN9WgApXwBWco0IHLwOYzE3jDDK
		aoRz0C8EwaIIUf/5VALnYRFkJ5yRA0eD+QyYAHFMBJZ7Ait0ogQUhI8sBpKFAbHtABOULgAXOa4KYyaQB7osQjCs
		YhvgOowoar/6QhGJc3QfW0IC44cEsTknCA5SHBTm+YQxNCdoUaXKAKzEmCH35Apq6AoEzYW+YorWdKE2imhmcQJA
		15cIQEKUgZkAASQzrTALFUgDqyqA2bYGCCuFySAg3YFxQGQKY32CkA9ryeRzHAjv7wIIas8CINWxnBBCVNg/K4wG
		RmiZWkmSVUK6nBkFoAFoZBACwAYAAK4CkW4tTrf9abYkhnNyAy/JOG5eCWB2cxP1kwbwBuAZmdOmAWDjiuAx4IVQ
		7cBgPAxDEJOBjACSowg674jzFsPQE0WYEKmSk1kKyA4EuYxDNlzBQGtYHBqebADw50BQDdwoofOLOQEthJAzMIwP
		823PKGFbWVMR3Igx95IDO58kAVXWylISRIC7xeAAOac4sbzEZYJMBgDh1QZAWSMIPO4KMOfnpDAISggQEkgVdWY4
		wVLZuj8n0NFksdWgTlIaW7ajCZtCBEV2ogi8kQFheTQdLu4giCABBADZ8ZixTbasWjPoeGMjNpD3nGUjJqsEF1mp
		g8mDfHWYitA4lEAQhq5ocLxLErkwGBm1Q22bbmCD/lWwUUVOmKITICucwzRKhgcD94KKM5TbMTANQDCbfMYUQAYF
		tY3PADwwSYrW8l7oEPjODjKQO5X6KACQBgEpCJjh8BeDESOlACHvDNcABoQGAOkAMANKEJ8XGs4Eb//JRxBBeu5f
		2nKyjR3PtBQoKIDAyCEMQBHOwkaRF01EIoQMsvq0cbM8DoMr/LVhZ2AADiwywsDlwT8Q1ReRqUpZTvkYhHEREHgd
		3bjnFSy0iJrgIB+Ok2fiCvAsxgBihz7Da8wOZ0VFYdByDfBQCQuwOgL350hkdLW/CjBoFWBQ0wC15r4sPd5Y6J2/
		QDA0z2FDIRYNEYILRj96gBNmtgAmo4g3/cMABNXwAtLkCBPONGgVCd0VErwK5Y3ICIIzKJLFiBqA8xOZYmKBocDK
		hbNur0phoAEAAd6EATauAHU9wNi447QAWaIASxJEFuHsKJD5FQAIX5KVS2qUWM3FBd/yHUYAArcMGsYKAEYsnLbB
		MA4By4xldx17gD36IMAcTi680M4AIVmEAJONCLV0G4Sx5AgVuKdwGTuwFkbQIAD1TQAja5IQc+7EoSKMJoNyUhCQ
		BEywzKVGglRKHcHRcJCE7VABMEyHAYcEMDMBxCD01MSmLhwU5UcEAmeWAGc5jBM5ASRzfgBGIFwoB2PdXwGdipeo
		uungvGsdMffOubTThsDUzxmSakiAH3w0rIWvBG5XEAAAYfGmfCKeVHuEmRnFEYmTq+axj0HAZCQGYTFg0AU5igMx
		0AAW3F7hmXB2BfboKwB1ZbS2hMJlcqKDedPyO83DTMD7WBRKh+MIEKEP/Apj9wyzb4DRYQqKEA5c78ZJjDgzpMgF
		QBuMAZKgCDRwaGeUKa2FHchMOWsIsOWKFDC4zCJz+AYN5+mEMcvAAWY9fgBJyZT4ECUAF6BaDcWuPKbvuzc6+cgZ
		FXmgW7VDsBXcIQbfJxCNIABic6XAECf0EklzEBxmB+XlAbbzABHNUVM7B7E3AC2rWBGFBu4sAmXOMHeXAFbmETo/
		UWj3IuHnBazbBNyVZHHGAT8QZhZnAFQvAEApFyi+cBWRAHGugFoXIFPxUqFlEnGFAADIBRAcBmbNYBbtAEOPBruL
		V/JlAA+dcVtAB8H6JftfE4bvAEc2YGXVE3bkJxjsJXFqH/MCCAAjngISgQAG3iFjvHWJk3DvkxAfmVOgLiB6sQIJ
		QzAXHhFvcVgEfRAlSVBE8QAF93EBxwcZwhBDL2DJyhXT6naBcoLWLhIW6AAgSwZn3EJ6RwATpWGQfgQS7BDDzzJe
		cDWgnSAnXQASCkQWZQKHRAS0G0O0pTAWpwCQGwaASQhLPGdgUwa4Q3DgfgcurgfCIhTSaAIC/xDLgAMoowjbrgfx
		DAVfJQCLhgAkyEDwyDC+wCQEpQAADkAHAIQMDYWOcYAB5IblrjfFqxf7KjGSAXQlICD/ezjZRwjz8CARf0DPHzDI
		FGi1MHDS1QjgA0A9VTaIWGR42FR+QWUn5U/1LlAFcRpHXwYAiLEI74ww9nAIvhaCg65IJdMiKK8AAVwJBm10zO5I
		t41EfrMCAlxVQ0tAj+xzPos033IDwhggSlkQdSSAcqYAYa5ILNYAZkdD8NkyKO1pAO6ZQLCUAgWAqwwEBKlQ5nYA
		g14F+QOAEhUks74imPBAAQMAjrEResVkHW1z2NFkpw6JBw6ViLNgNrBk0z2VTtYAJDSYbf1BznUgE1ECFg4QZ8AA
		MlUAclwAzQ0D4T0wJVMClfRgEAsIGftJBzCZWZyYQS2WatoBUXsJfC4wHnVgLbSABgwQC4kGWhciUFqIK15JjWFy
		m5cSIB4AUo4AWO5gW5uZu56f+UAMCZ+MFABeZ82CIPXdEBx8UZdRBBGsIBeBAqegABHwQsDOElkTIiZpAFELCBxO
		KUvtmb4QlpEjkO41Vg+0dlKmBhLzED+8JgP+kBQhAHqnFEt+CYAvgrINMMEKBd4rmbjuWfu1lu0MRA1IIKsHAA/x
		c/aNEBt6IwasBSPMMPyPEWfPEL+QkphGAG9dACEOAFBGCbtnkC4UkAARoSpXAER8BAmdVPD/ASheBXAMAXzWECXX
		IQ2DJ4bVIHCIEQE2MBXHKSyOUqaqCbAWqk5EagryBXSvUAWCCN0fGTFIgC2viTZiGBE5AHfMGjFPCjXYJcukMHvm
		mbRtqbJbqbADD/dKakpJulVH6gAn5hBgojo1lwBhPwBDLgAkNQGljAAfc1ACqAB/qAB7jQpbmxlLmDBL7Im0ZKAG
		a6mzMQBWk6OzHzCl1UBX6BEIP1D1lgNjAwBDTApxzgAGIjATSgn1kwDBbQRFKgFoKWqI5aprHam44WqZVFO1DgCi
		rqAmRwqc9JB27gBgCABXjQKAVyWlYgcJEzAx8gDCqgFM8qEIHqBzywSHTQif5ppo1aoo1lppEKADCTCrgaAUcQAb
		taBTcqWG+BBX6wrnjQXTUQB0mwB0wYBWzxCKg6DNLKEC02ImNKpr05Ax/aqFGAph2ACqlALeRqrlpKB+VWDMNKB+
		dq/wYE4BQlAAU9NgghMgQbOwQ8ukT7WEu2GbDiSZe7qa3aGqlRQJGo0E8pqqLnWh2EgAsbKxQJ8R0/mQdoOgi/gA
		fDoBQ8Sgc+FCkycAAl26gmW6aNqgZqoK1oGqkRMK6pcAbkegQPIEw0YAGH0AIbiwUWgLWFQANhiwVREAEjcAQdax
		RFcj+DigxD6wEAsGgkerLaSpdNS7YjQAIRQAKpQK0pSgIksAVYgAV3tQJTYLhbMAVhuwU6QAM6MAIj4AQ64KTNwA
		tZcAssFkvNdrImO7d0+4szkLNlGwIhELVkkKIRMLohkAaSqwKgOgVpIAZLsASwqwM6sAQCIABtILsh0P+xu3A/lz
		tBGQMBKLC0TLtdxcu0xTu3wFkGSzC6JHAESpWiITC7sqsDicsBhpsGt4u7SxAEQZC7uJu7U/AQG7u2mEtGMoAD2m
		W8x6u8apADOJADyIumzSu70Cu9JCC74ru6ibsFYoC73yu+OhAEbYC7bRAEOlC+5osQdzYPfoADOIC8yHuyahDByB
		upIyC7S/C3NHQE1Cu+uMu4NGC4t/u93ysGCbwEBozAUzAEMrCxqNrAEWYuxmTBESzBFLy0OIzDORAFZaDBApAG49
		oKR7C/ISwGIwzACPy9tVu72ysAzjsF6sGxHnAQMJwxSGACODADOKwHOawGeiDGX4wDYoz/w2iqwc4bAroKwrkLvi
		JMA4i7xFFcu3E8AgC8BDqwBSvQs0MwuHxhvupRlCUgv8X7xTkQv148wUsbqTFwu0tgtkdgAqMbwgdcu4Zru3icx9
		dbvQJguMhQxX1MEIEqAwQABPMLAWKMyEuLyKtcvDhwygAAxBvMwUdAAm1cyQJwvZj8xkuQxLF7u0k8BTIwqIaABX
		6BBT1IGgyTEhEsxmqwBogMAa3szKqMyLLsyFGsxtRrwCFswJucwCccBLGrA9u7vWLwyXiAKypQK1K2D1XQATkABB
		BAz3ogz0CAAxDAw2UcwfoMAT8cxNp8xOJ7wgEcBMF8wuRMvecsubZiKy+a/xvsIhAt0GPzTM/03AD63M/73MMZzL
		1CPNDWW7vVS8AIHcWrm7ohgM5TfCvA4AH6cLkrMCkZ3QDzTNMN0ABlLAJmjMMajQP1O7vmHMJqXMdiwNDdG9TX+7
		eja7jJLGHCMHVFMgSPCQRAIAESgNM4jdV1wNX0LL+tfNEl4NFL8AJpkLpqbAGtC6qIu7q1a9QrnbdLfb2gSgtYsL
		EWYAFSvbEdUNVXbdUSYNUNgJhcndFVXdVn7LRArLe3nLoHNJS0wBZYYLhToAMrPQV+e8tzPQWCe7iTHbYWMAU1vQ
		ESsAEfcNUfsAFAcNNW/ddZnZglQG4RYAJQm7fj+rK3ojyP4v9Kk03ZUzCupCvHNBACrvvWwjzZG4DcG+AENoDaZY
		DagG3apO3Xrr0SsI2mlmUCLnsE+AAMlcCqUnArkj0FqYu6o7sEmKzHqisG1Ou8zpsGJDACabC97o3c620DG1AGGx
		AC8B3dFp3V1k2gKcpAILOxSCAFv0AHHjAEhhu75t3ev2y7Kg3A4ivFTpDNArDeU+AEGyC7MWADKSC7aWDaqp3REE
		DiwAkAYKCmB+QCD4AEG0sL4F0rkl3ZtCy7YpDC46y6JS0A4IvjOuDIKxwDMZACyu3IYtAGKRAD643fEtBjWV3Vgm
		3dYGAKB9QwLk7XP9nOQ4C4mZzL3+vLm2zAKGz/1haeu0QeA06g5gdswGIQA2VQBlEABNXdAIicz4KdpitKrS7xEj
		J7Cwre5R/dzT3+xgT8xgFsu0OeuymQAmpeBk7A5gKQ5jaA1RCQmA0gAWYMAXh+ACKhCkxaCEZxCyCkAuL90eLLxC
		IMu93cBus95IMuACEAuZA+6Eq+AQ3w2iuR0f286dft6X5ABo5inMgwQQs+BaeOwJVc2Yce67LuBCzcvSGw4QV8wL
		YOnHpA55uO04kJnCGRCuDjpllFC9sUQVgQx7c76NRe6FPwxj4eAhug6G3QBkO+4ZAevpK+3BJQBzBG5/8NnFFgWW
		dAcSCTVQrCD2A0BJQcwm885pU9/+EYXs5qHgMIrORqruZL3M0eTrDY3u/bvu/AOSDOSAtZZRaBlSAPgLofnQYCLM
		KMa7uELgYW382M7gSN7gTongKtvgQfUAZbre3bvhJ1gOslkCOnIQtHX/IKYhYXUN5CDLs9jrtiELaNy714LPFDvQ
		RpfrtDHgOxvvNYndVgX91c/fFsdrNIb/BZ5QdRwNgp7bghgL2N28YqrfVhfuRE/ro1b+EjMAXTbdhk39X7Dtt58H
		1IX/KHzwF/QbZ6GwJbsAVwT9k0QPKGXs4jgNwW7sgv8OYbPgJlYAM2sOFwLuclbuKAXweWDmMAwBoqlfhRBd7POV
		IHkKIWcLpeG7Y/Sf8HYevEJCwBEXDVpA3n+O3cQAAAfw3YQHD6X50DZI+YqF9uVXD0tYL0lcDOUgAFeTCgZOsCKd
		q60ZZVJDz1Q2ACkBoFO7ADvw/YOJ3KUZ7K+Syd9DzYQW/dPGAGsmAL+0DytkBe14/iQ0cGFwQINDQchBxIHIJIKh
		wydSUAdXUSDRJAQDg4enoQl5k4EBCYOJGOAKZ5PC1ShoaHhEiKKy0XPDwuBwcdeQC7Jio0SC4lVWYcKkhSyUhVUH
		kljpaWOZiboZhqaqKjjwAmPBcXVVUyLWaqLRQUs7cHJgAl8I/cefQdUREmHTz6YFD9YMygQCFzpoMpCSUagAIFJI
		fDhw//G8AD0OHALR4HLnjLA8WgqYSh1EDIoYZAjlAQNOmpQ6BBg3wmSnQwERAKDzAmoOQrEeWgS0wjHTbMMTSHo3
		gfn8WDUGehNRwlZwSYQdVLgAAaTsCBMyYHiqtqqBIgQpYAgRlqcsww+fUqChQYlMR1QJduBbpK4umVqLDEQoXX9G
		Az6+Xs2rVn9XhZfDXA4hMzUGC7GjnA27eWLWPYrKTAXbsVQjtQCKFBHZcuQTWYBhRqycWMA2ymPEOJVgInHOueet
		VKAN8YMmNgQpzJmAJ231RgwCA0gzdvGCR0ebp0aZClcTgcvJiw4cgolFw9QfwE+QBMMFixomT9GysOlFQoM1CAwZ
		j7Y5g/hx4auv8xprkEEmoEquZUStpkAxRrrYGSjRoNYQMbbFXphtllbc1gFWyBAAA7&quot;</span>;

		Bitmap map;
		
		<span style="c-o-l-o-r:blue;">using</span>(MemoryStream stream = <span style="c-o-l-o-r:blue;">new</span> MemoryStream(Convert.FromBase64String(base64)))
		<span style="c-o-l-o-r:blue;">using</span>(FileStream fs = File.Create(<span style="c-o-l-o-r:maroon;">@&quot;C:\tmp\img.gif&quot;</span>)){
		
			map = (Bitmap)Image.FromStream(stream);
				
			map.Save(fs, System.Drawing.Imaging.ImageFormat.Gif);
		}
		
		WL(<span style="c-o-l-o-r:maroon;">&quot;Converted Image Successfully!&quot;</span>);
	}
	
	<span style="c-o-l-o-r:blue;">private</span> <span style="c-o-l-o-r:blue;">static</span> <span style="c-o-l-o-r:blue;">void</span> WL(<span style="c-o-l-o-r:blue;">string</span> text, <span style="c-o-l-o-r:blue;">params</span> <span style="c-o-l-o-r:blue;">object</span>[] args)
	{
		Console.WriteLine(text, args);	
	}
	
	<span style="c-o-l-o-r:blue;">private</span> <span style="c-o-l-o-r:blue;">static</span> <span style="c-o-l-o-r:blue;">void</span> RL()
	{
		Console.ReadLine();	
	}
	
	<span style="c-o-l-o-r:blue;">private</span> <span style="c-o-l-o-r:blue;">static</span> <span style="c-o-l-o-r:blue;">void</span> Break() 
	{
		System.Diagnostics.Debugger.Break();
	}
}</pre><p>Slap that little snippet into Snippet Compiler and look at what is generated. I actually changed the image to something a little bit friendlier than the image I recieved in the email. Enjoy!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[We're back online!]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-25-Were-back-online</link>
            <guid>https://chris.pelatari.com/posts/2005-05-25-Were-back-online</guid>
            <pubDate>Wed, 25 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It seems that there was a major power failure yesterday: at least a few city blocks. For those that don&#39;t know, a city block in Houston is a pretty big area.</p><p>Looks like it&#39;s fixed for now, so the two of you can go about getting that there rss feed :)</p><p class="media">[ Currently Playing : Karma Police - Radiohead - OK Computer (4:21) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[To those that care...]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-24-to-those-that-care</link>
            <guid>https://chris.pelatari.com/posts/2005-05-24-to-those-that-care</guid>
            <pubDate>Tue, 24 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I.e. Both of you...I&#39;ve changed the repository structure of <a href="http://PostXING.url123.com/main">PostXING </a>on <a href="http://vaultpub.sourcegear.com">vaultpub </a>to better facilitate branching.</p><p>These crazy new ideas I&#39;ve been having are so different from the current architecture of PostXING that I have to branch it just in case someone comes to me with a nasty bug they found that I just overlooked (this has happened a few times already, although not for a while). I don&#39;t like having broken software with my name on it out in the wild.</p><p>Anyways, I thought I would keep tabs on my progress for this on my blog. I feel like there is something that I&#39;m missing in the ideas that I&#39;m having, so I&#39;m taking this slowly, step by step. To be honest, I&#39;ve always had this idea in my head for PostXING. It&#39;s why it&#39;s built the way it is - I&#39;ve left extensibility points open at the expense of writing a bit more code on the onset. When I&#39;m done, a developer that has a good handle on the API they want to post to will be able to author a plugin/provider, drop it into a subdirectory off of the application root, and be able to use PostXING as kind of a shell to post to their custom API.</p><p class="media">[ Currently Playing : Sad Statue - System of a Down - Mezmerize (3:25) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ever looked back in time?]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-23-ever-looked-back-in-time</link>
            <guid>https://chris.pelatari.com/posts/2005-05-23-ever-looked-back-in-time</guid>
            <pubDate>Mon, 23 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been doing just that on my blogs - way back to when <a href="http://weblogs.asp.net/cfrazier">this one </a>was hosted on dotnetweblogs.com.</p><p>Geez, I was such a dork...okay, maybe I&#39;m still a dork. But that&#39;s a <strong>maybe.</strong> I admit nothing.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A couple of PostXING ideas]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-23-a-couple-of-postxing-ideas</link>
            <guid>https://chris.pelatari.com/posts/2005-05-23-a-couple-of-postxing-ideas</guid>
            <pubDate>Mon, 23 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Thanks to <a href="http://weblogs.asp.net/wallym">Sir Wally</a> for the first one...it&#39;s simple really, Wally just asked if I would cache a list of the categories for each configured blog to aid with offline posting. I pretty much always use <a href="http://PostXING.url123.com/main">PostXING </a>while online, so this particular feature didn&#39;t even cross my mind. As a side effect, this will let me add categories to posts off of my CS blog which gives a nice little error when I try to get the comments list currently. Good one, Wally.</p><p>The other thing is that I want to expand the abilities of <em>where</em> PostXING can post - not just using the Metablog API, but being able to use different services. I don&#39;t want to use the &quot;provider model&quot; because I don&#39;t think that particular pattern fits what I have in my head to make this work. Close, as a matter of fact, very close, but not exactly what I&#39;m looking for.</p><p>The basic idea that I have now is based on the fact that a lot of the functionality that PostXING uses now already sits in separate dll&#39;s in the application root. I think that I can factor out the API specific functionality into kind of a plugin - thereby expanding the end applications that can be posted to from PostXING. I haven&#39;t hashed out all of the details yet. This is still a brainstorm at this point. However it works out, it&#39;s going to be a major version change. </p><p>If this can work out the way I think it can, this could be a very cool addition to PostXING. Very cool indeed.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PSKit: Replacing that pesky Lorem Ipsum text with dynamic content]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-18-pskit-replacing-that-pesky-lorem-ipsum-text-with-dynamic-content</link>
            <guid>https://chris.pelatari.com/posts/2005-05-18-pskit-replacing-that-pesky-lorem-ipsum-text-with-dynamic-content</guid>
            <pubDate>Wed, 18 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>The Personal Website Starter Kit is a great resource for getting up and running with asp.net 2.0 beta. I&#39;ve been using it to check out some features while waiting for other projects to get to a point where I feel like I can contribute more than just criticism (sorry y&#39;all 😃 That said, the default.aspx page comes with a FormsView that rotates pictures from your PSKit albums, but everything else is static content! That is, you&#39;re greeted on the front page with something like:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><h3>Welcome to my Website!</h3><p>On this site you will find lorem ipsum dolor sit amet...</p></blockquote><p>Earlier, I had tried using one of the new data controls in asp.net - namely the FormView. I ran into a few issues with this control, mostly having to do with having to know what ID I was using in the database to set or edit the FormView&#39;s contents - I&#39;m sure I could have worked out a way to set the ID to use in some clever way, but then I looked at the actual content that comes stock with the PSKit and it hit me...</p><p>A DataList.</p><p>It&#39;s already separated by a horizontal rule - all I really need is to bind a good old DataList to a couple of database entries and I&#39;ve got something that I can update, oh, say twice a year or whatever. heh.</p><p>I used a similar table structure to the one from before:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p dir="ltr"><u>Content<br></u>ContentID<br>Heading<br>Content<br>IsVisible</p></blockquote><p>I had to actually write code (gasp!) to get it working the way I wanted it to, but it was pretty stock stuff thankfully. I just set up a SqlDataSource pointing to this table&#39;s CRUD procedures:</p><pre>                
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:SqlDataSource</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">SqlDataSource1</span>&quot; <br>                  <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                  <span style="c-o-l-o-r:red;">ConnectionString</span>=&quot;<!----><span style="c-o-l-o-r:dodgerblue;"><!---->$ ConnectionStrings:Personal <!----></span>&quot; <br>                  <span style="c-o-l-o-r:red;">ProviderName</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">System.Data.SqlClient</span>&quot;
                  <span style="c-o-l-o-r:red;">SelectCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">GetContents</span>&quot; <br>                  <span style="c-o-l-o-r:red;">SelectCommandType</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">StoredProcedure</span>&quot; <br>                  <span style="c-o-l-o-r:red;">DeleteCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">RemoveContent</span>&quot; <br>                  <span style="c-o-l-o-r:red;">DeleteCommandType</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">StoredProcedure</span>&quot;<br>                  <span style="c-o-l-o-r:red;">InsertCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">AddContent</span>&quot; <br>                  <span style="c-o-l-o-r:red;">InsertCommandType</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">StoredProcedure</span>&quot;<br>                  <span style="c-o-l-o-r:red;">UpdateCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">EditContent</span>&quot;   <br>                  <span style="c-o-l-o-r:red;">UpdateCommandType</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">StoredProcedure</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
		  <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">DeleteParameters</span><span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Content_ID</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Int32</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		  <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">DeleteParameters</span><span style="c-o-l-o-r:blue;">&gt;</span>
		  <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">UpdateParameters</span><span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Content_ID</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Int32</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Heading</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">String</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Content</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">String</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">IsVisible</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Boolean</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		  <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">UpdateParameters</span><span style="c-o-l-o-r:blue;">&gt;</span>
		  <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">InsertParameters</span><span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Direction</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">InputOutput</span>&quot; <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Content_ID</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Int32</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Heading</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">String</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Content</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">String</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		    <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Parameter</span> <span style="c-o-l-o-r:red;">Name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">IsVisible</span>&quot; <span style="c-o-l-o-r:red;">Type</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Boolean</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		  <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">InsertParameters</span><span style="c-o-l-o-r:blue;">&gt;</span>
                <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:SqlDataSource</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p>Then the DataList itself:</p><pre>			<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:DataList</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">DataList1</span>&quot; <br><span style="c-o-l-o-r:red;">                          runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                          <span style="c-o-l-o-r:red;">DataSourceID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">SqlDataSource1</span>&quot; <br>                          <span style="c-o-l-o-r:red;">Width</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">100%</span>&quot; <br>                          <span style="c-o-l-o-r:red;">OnCancelCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">DataList1_CancelCommand</span>&quot; <br>                          <span style="c-o-l-o-r:red;">OnEditCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">DataList1_EditCommand</span>&quot; <br>                          <span style="c-o-l-o-r:red;">OnUpdateCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">DataList1_UpdateCommand</span>&quot; <br>                          <span style="c-o-l-o-r:red;">OnDeleteCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">DataList1_DeleteCommand</span>&quot;<br>                          <span style="c-o-l-o-r:red;">OnItemCommand</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">DataList1_ItemCommand</span>&quot;<br>                          <span style="c-o-l-o-r:red;">RepeatLayout</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Flow</span>&quot;  <span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">ItemTemplate</span><span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Panel</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">contentPanel</span>&quot; <br>                                  <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                  <span style="c-o-l-o-r:red;">Visible</span>=&#39;<!----># Eval(&quot;<span style="c-o-l-o-r:dodgerblue;">IsVisible</span>&quot;) <!---->&#39;<span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">h3</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Label</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">HeadingLabel</span>&quot; <br>                                              <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                              <span style="c-o-l-o-r:red;">Text</span>=&#39;<!----># Eval(&quot;<span style="c-o-l-o-r:dodgerblue;">Heading</span>&quot;) <!---->&#39;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:Label</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">h3</span><span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Label</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">ContentLabel</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Text</span>=&#39;<!----># Eval(&quot;<span style="c-o-l-o-r:dodgerblue;">Content</span>&quot;) <!---->&#39;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:Label</span><span style="c-o-l-o-r:blue;">&gt;<br>                                        </span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:HiddenField </span><span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">hdnContentID</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Value</span>=&#39;<!----># Eval(&quot;<span style="c-o-l-o-r:dodgerblue;">Content_ID</span>&quot;) <!---->&#39; /<span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:Panel</span><span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Panel</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">Panel1</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Visible</span>=&#39;<!----># User.IsInRole(&quot;<span style="c-o-l-o-r:dodgerblue;">Administrators</span>&quot;<span style="c-o-l-o-r:dodgerblue;">) <!----> <br>                                          <!----><!----></span>&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <span style="c-o-l-o-r:red;">Height</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">50px</span>&quot; <span style="c-o-l-o-r:red;">Width</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">125px</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
					  <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:LinkButton</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">LinkButton3</span>&quot; <br>                                            <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                            <span style="c-o-l-o-r:red;">CommandName</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">edit</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>Edit<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:LinkButton</span><span style="c-o-l-o-r:blue;">&gt;</span><!----><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:LinkButton</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">LinkButton4</span>&quot; <br>                                            <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                            <span style="c-o-l-o-r:red;">CommandName</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">delete</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>Delete<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:LinkButton</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:Panel</span><span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">ItemTemplate</span><span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">SeparatorTemplate</span><span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">hr</span> /<span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">SeparatorTemplate</span><span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">EditItemTemplate</span><span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:TextBox</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">txtHeading</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Text</span>=&#39;<!----># Bind(&quot;<span style="c-o-l-o-r:dodgerblue;">Heading</span>&quot;) <!---->&#39;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:TextBox</span><span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:CheckBox</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">chkVisible</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Checked</span>=&#39;<!----># Bind(&quot;<span style="c-o-l-o-r:dodgerblue;">IsVisible</span>&quot;<span style="c-o-l-o-r:dodgerblue;">) <!---->&#39; <br>                                          <!----><!----></span>&quot;<span style="c-o-l-o-r:dodgerblue;">Visible</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;<br></span>
					ContentID:<br>                                        <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:Label</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">lblContentID</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Text</span>=&#39;<!----># Eval(&quot;<span style="c-o-l-o-r:dodgerblue;">Content_ID</span>&quot;) <!---->&#39;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:Label</span><span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:TextBox</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">txtContent</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Columns</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">40</span>&quot; <span style="c-o-l-o-r:red;">Rows</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">20</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">Text</span>=&#39;<!----># Bind(&quot;<span style="c-o-l-o-r:dodgerblue;">Content</span>&quot;<span style="c-o-l-o-r:dodgerblue;">) <!---->&#39;
					  <!----><!----></span>&quot;<span style="c-o-l-o-r:dodgerblue;">MultiLine</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:TextBox</span><span style="c-o-l-o-r:blue;">&gt;<br>                                        </span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">br</span> /<span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">br</span> /<span style="c-o-l-o-r:blue;">&gt;</span>
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:LinkButton</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">LinkButton1</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">CommandName</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">update</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>Update<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:LinkButton</span><span style="c-o-l-o-r:blue;">&gt;</span><!---->
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:LinkButton</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">LinkButton2</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">CausesValidation</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">False</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">CommandName</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">cancel</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>Cancel<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:LinkButton</span><span style="c-o-l-o-r:blue;">&gt;</span><!---->
					<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">asp:LinkButton</span> <span style="c-o-l-o-r:red;">ID</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">LinkButton5</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">runat</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">server</span>&quot; <br>                                          <span style="c-o-l-o-r:red;">CommandName</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">add</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>Create as New<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:LinkButton</span><span style="c-o-l-o-r:blue;">&gt;</span>
				<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">EditItemTemplate</span><span style="c-o-l-o-r:blue;">&gt;</span>
			<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">asp:DataList</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p>Several points of interest in the DataList declaration:</p><ul><li><div>No more pesky DataBinder.Eval(Container.DataItem, &quot;field&quot;) syntax - much leaner and meaner Eval() syntax for one-way binding.</div></li><li><div>Two-way binding happens via the Bind() syntax - notice that Bind() only happens in the EditItemTemplate, since the ItemTemplate is readonly.</div></li><li><div>I&#39;m only showing the edit/delete buttons based on what role the current user is in. I wasn&#39;t sure if this (# User.IsInRole(&quot;Administrators&quot;)) would work at first because it&#39;s deceptively simple. But yeah, it does work. Works great!</div></li><li><div>I did most of this visually - there is no longer a reason to fear the designer in asp.net (thanks Venus team!)</div></li><li><div>I had to disable Page input validation because I want the Content to contain html, and by default, it don&#39;t like that.</div></li></ul><p>As for the codebehind, I guess I could have refactored it a little bit, but since this is not a mission-critical application (it is just a personal site, after all!) I just went the easy route and duplicated a lot of code. Probably the best thing to do would be to handle just the ItemCommand because there is no default handler for add and use a clever mix of a switch statement and defaulting the value of EditItemIndex to -1. But this isn&#39;t about best practices, it&#39;s about getting the stuff to work, ya know? Anyway, here&#39;s the code:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> 	<span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">void</span> DataList1_CancelCommand(<span style="c-o-l-o-r:blue;">object</span> source, DataListCommandEventArgs e)
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> 	{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 		<span style="c-o-l-o-r:blue;">this</span>.DataList1.EditItemIndex = -<span style="c-o-l-o-r:maroon;">1</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 		<span style="c-o-l-o-r:blue;">this</span>.DataList1.DataBind();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 	}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 	<span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">void</span> DataList1_UpdateCommand(<span style="c-o-l-o-r:blue;">object</span> source, DataListCommandEventArgs e)
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 	{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 		<span style="c-o-l-o-r:blue;">string</span> heading = ((TextBox)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;txtHeading&quot;</span>)).Text;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 		<span style="c-o-l-o-r:blue;">string</span> content = ((TextBox)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;txtContent&quot;</span>)).Text;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 		<span style="c-o-l-o-r:blue;">string</span> isvisible = ((CheckBox)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;chkVisible&quot;</span>)).Checked.ToString();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 		<span style="c-o-l-o-r:blue;">string</span> id = ((Label)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;lblContentID&quot;</span>)).Text;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 13</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.UpdateParameters[<span style="c-o-l-o-r:maroon;">&quot;Content_ID&quot;</span>].DefaultValue = id;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 14</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.UpdateParameters[<span style="c-o-l-o-r:maroon;">&quot;Heading&quot;</span>].DefaultValue = heading;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 15</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.UpdateParameters[<span style="c-o-l-o-r:maroon;">&quot;Content&quot;</span>].DefaultValue = content;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 16</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.UpdateParameters[<span style="c-o-l-o-r:maroon;">&quot;IsVisible&quot;</span>].DefaultValue = isvisible;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 17</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 18</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.Update();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 19</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 20</span> 		<span style="c-o-l-o-r:blue;">this</span>.DataList1.EditItemIndex = -<span style="c-o-l-o-r:maroon;">1</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 21</span> 		<span style="c-o-l-o-r:blue;">this</span>.DataList1.DataBind();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 22</span> 	}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 23</span> 	<span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">void</span> DataList1_DeleteCommand(<span style="c-o-l-o-r:blue;">object</span> source, DataListCommandEventArgs e)
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 24</span> 	{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 25</span> 		<span style="c-o-l-o-r:blue;">string</span> id = ((HiddenField)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;hdnContentID&quot;</span>)).Value;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 26</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.DeleteParameters[<span style="c-o-l-o-r:maroon;">&quot;Content_ID&quot;</span>].DefaultValue = id;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 27</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 28</span> 		<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.Delete();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 29</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 30</span> 		<span style="c-o-l-o-r:blue;">this</span>.DataList1.EditItemIndex = -<span style="c-o-l-o-r:maroon;">1</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 31</span> 		<span style="c-o-l-o-r:blue;">this</span>.DataList1.DataBind();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 32</span> 	}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 33</span> 	<span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">void</span> DataList1_ItemCommand(<span style="c-o-l-o-r:blue;">object</span> source, DataListCommandEventArgs e)
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 34</span> 	{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 35</span> 		<span style="c-o-l-o-r:blue;">switch</span> (e.CommandName)
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 36</span> 		{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 37</span> 			<span style="c-o-l-o-r:blue;">case</span> <span style="c-o-l-o-r:maroon;">&quot;add&quot;</span>:
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 38</span> 				<span style="c-o-l-o-r:blue;">string</span> heading = ((TextBox)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;txtHeading&quot;</span>)).Text;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 39</span> 				<span style="c-o-l-o-r:blue;">string</span> content = ((TextBox)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;txtContent&quot;</span>)).Text;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 40</span> 				<span style="c-o-l-o-r:blue;">string</span> isvisible = ((CheckBox)e.Item.FindControl(<span style="c-o-l-o-r:maroon;">&quot;chkVisible&quot;</span>)).Checked.ToString();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 41</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 42</span> 				<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.InsertParameters[<span style="c-o-l-o-r:maroon;">&quot;Heading&quot;</span>].DefaultValue = heading;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 43</span> 				<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.InsertParameters[<span style="c-o-l-o-r:maroon;">&quot;Content&quot;</span>].DefaultValue = content;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 44</span> 				<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.InsertParameters[<span style="c-o-l-o-r:maroon;">&quot;IsVisible&quot;</span>].DefaultValue = isvisible;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 45</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 46</span> 				<span style="c-o-l-o-r:blue;">this</span>.SqlDataSource1.Insert();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 47</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 48</span> 				<span style="c-o-l-o-r:blue;">this</span>.DataList1.EditItemIndex = -<span style="c-o-l-o-r:maroon;">1</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 49</span> 				<span style="c-o-l-o-r:blue;">this</span>.DataList1.DataBind();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 50</span> 				<span style="c-o-l-o-r:blue;">break</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 51</span> 		}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 52</span> 	}</pre><p>This is the quickest way I could figure out to make things work, and yeah, it does work. So, there you have it - even though there are only two items currently in the table, it&#39;s very easy to add content via in-place editing and change what is currently there as well. You can view it live over at <a href="http://www.bluefenix.net">www.bluefenix.net</a>.</p><p class="media">[ Currently Playing : Voices - Godsmack - Other Side (3:44) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[On Community Support   give and you shall recieve]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-12-on-community-support---give-and-you-shall-recieve</link>
            <guid>https://chris.pelatari.com/posts/2005-05-12-on-community-support---give-and-you-shall-recieve</guid>
            <pubDate>Thu, 12 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I use Azureus as my bittorrent client. It has this nifty feature that is similar to the Updater Application Block that will automatically check for and download updates on startup of the application. The only downside for me is that since I was running JRE 1.4, and after a little battle with my wireless router, I could contact trackers okay, but not peers. </p><p>Balls.</p><p>So I look around the program to see what I can see. Oh look! There&#39;s an irc client that is loaded as a plugin! I haven&#39;t been on an irc channel since like &#39;98 or &#39;99, but it can&#39;t have changed that much, right? /join, /msg, yeah, I think I&#39;m good to go. </p><p>So I hop on the channel, fully expecting some random bs to be flying around like it used to be. How wrong I was. Myself along with about 4 or 5 others having issues with azureus got coached thru getting azureus running like a champ. In particular, two people helped me not only get az up and running correctly again, but also coached me on getting it set to its optimal settings for my cable internet link at home.</p><p>I&#39;d like to thank martouf5 (no link given) and <a href="http://www.20six.co.uk/PhilKC">PhilKC</a> for being such a big help with my n00b azureus hurdles. A couple of things that I learned thru this:</p><ul><li>The channel has a very helpful, friendly tone - this was even true when I returned later to ask permission to use these guys&#39; nicks on my blog, so it wasn&#39;t a fluke afaict. </li><li>You can test your connection speed on <a href="http://www.dslreports.com">www.dslreports.com</a> or <a href="http://www.testmy.net">www.testmy.net</a> You gotta dig a little bit for the one on dslreports, but they both give you pretty much the same information. </li><li>Installing the JRE v1.5 does not uninstall previous versions. It&#39;s been a while since I&#39;ve done any kind of Java development, but I wonder if this is because they have a SxS story like there is with the .NETfx? If so, there must be a way to tell a program which runtime to use... </li><li>There is a bot (AzBot) on the channel (irc.freenode.net, #azureus-users) that will tell you the optimal settings to use with azureus by typing a command like /msg AzBot upspeed 5008. I find that simply incredible. And incredibly useful.</li></ul><p>I was told by martouf5 that the motto of bittorrent is &quot;give and you shall receive&quot; - he said that was pretty much the attitude of this particular channel, and they all volunteer and help out people as they can. Judging from the conversations that I saw briefly, they get pretty much the same questions over and over, so I guess that helps in its way. He also humbly claimed that he was not one of the channel&#39;s &quot;heavyweights&quot; - that there were others there that helped a lot more than he does - but he helped <strong>me</strong> darnit, so he gets the credit he deserves here. PhilKC is actually what martouf5 would call a &quot;heavyweight&quot; and they both helped me when I needed it...so thanks, y&#39;all.</p><p class="media">[ Currently Playing : Right Here, Right Now - Fatboy Slim - You&#39;ve Come a Long Way, Baby (6:27) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: Announcing Subtext, A Fork Of .TEXT For Your Blogging Pleasure]]></title>
            <link>https://chris.pelatari.com/posts/2005-05-05-re-announcing-subtext-a-fork-of-text-for-your-blogging-pleasure</link>
            <guid>https://chris.pelatari.com/posts/2005-05-05-re-announcing-subtext-a-fork-of-text-for-your-blogging-pleasure</guid>
            <pubDate>Thu, 05 May 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://haacked.com/archive/2005/05/04/2953.aspx" target="_blank" rel="noreferrer">Awesome.</a> I had a feeling I was going to see something like this sooner or later.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PSKit - FormView initial thoughts]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-29-PSKit-FormView-initial-thoughts</link>
            <guid>https://chris.pelatari.com/posts/2005-04-29-PSKit-FormView-initial-thoughts</guid>
            <pubDate>Fri, 29 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://bluefenix.net/">I&#39;ve been playing with the Personal Website Starter Kit a little bit lately</a>. One thing that I didn&#39;t like about it from the start was that the content in the default.aspx was largely static, so I set out to make it a little more dynamic. After a little digging in the <a href="http://beta.asp.net/QUICKSTARTV20/aspnet/doc/ctrlref/data/formview.aspx">whidbey quickstarts</a> I decided that a FormView  looked like the way to go.</p><p>I&#39;m trying to keep any modifications simple, so I created a really simple table that would cover the very basic needs of the sections that are shown on the default.aspx:</p><p><u>Content<br></u>ContentID<br>Heading<br>Content<br>IsVisible</p><p>I then created the basic CRUD procedures that would go with this table, dropped a FormView onto the default.aspx, and created a SqlDataSource to supply it with data. Now, let me say that it is very...what&#39;s the word? liberating? to be able to do most of the work in the designer without worrying about the designer nuking stuff. It&#39;s almost there. One thing that I thought was missing was the ability to specify one of the connectionStrings from the web.config file as the connection string source - you&#39;ve got to switch to source view to do that (afaict). Also, the friggin thing doesn&#39;t want to work unless I supply a DefaultValue for each &lt;asp:ControlParameter/&gt; in the markup - so what happens when my ID changes?</p><p>One other thing that I&#39;d like to see (I know, give an inch, take a mile:) would be the ability to use the same SqlDataSource for many FormViews. As the default.aspx is laid out now, there are 3, maybe 4 areas that would be good candidates for being populated from the <u>Content</u> table outlined above. So if I had FormView2, FormView3, and FormView4, I would like to associate them all with the same SqlDataSource and vary the output based on a different ContentID for each. Right now, it seems like there is a 1:1 mapping between each SqlDataSource and FormView (as the ControlParameter has a ControlID associated with it.) Maybe I should try using a different type of parameter? </p><p>More to come...I&#39;ll get this eventually :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ObjectDataSource goodness.]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-25-ObjectDataSource-goodness</link>
            <guid>https://chris.pelatari.com/posts/2005-04-25-ObjectDataSource-goodness</guid>
            <pubDate>Mon, 25 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Since there are probably going to be a lot of posts about all things Whidbey soon, as people get more and more chance to play with things, I&#39;ve decided to throw in my two cents about a really cool piece of functionality that I recently used.</p><p>ObjectDataSource - too cool, I&#39;ve been waiting for something like this for a while. This is more my style than using stinkin&#39; DataSets. You can see what I did at <a href="http://bluefenix.net/projects.aspx">bluefenix.net</a> . I built it based off of the Personal Site Starter Kit that comes with vwd on up, so there&#39;s still a lot of Lorem Ipsum text in there. Well, pretty much the whole site is Lorem Ipsum text right now, except for the Projects.aspx page.</p><p>The page consists of two DataLists, an ObjectDataSource and a SqlDataSource. For the ObjectDataSource, all I did was add a web reference to the website and point the SELECT part of the datasource to the method that had the info that I wanted to display. That worked off my local machine perfectly, but I needed to go thru a proxy at the host to make the webservice work correctly. Getting this working was a simple matter of creating a wrapper to the webmethod that included adding proxy info to the webservice stub class before calling the webmethod. Changing the ObjectDataSource&#39;s SELECT section to use the new class that was dropped into App_Code got everything working, locally and in production!</p><p>Very cool, indeed.</p><p class="media">[ Currently Playing : Imagine - A Perfect Circle - eMOTIVe (4:48) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: Digital Pontification - Podcast Show Notes (4/21)]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-21-RE-Digital-Pontification-Podcast-Show-Notes</link>
            <guid>https://chris.pelatari.com/posts/2005-04-21-RE-Digital-Pontification-Podcast-Show-Notes</guid>
            <pubDate>Thu, 21 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I want to second Jason&#39;s nomination (below in bold). This morning I was trying to figure out how to port Sql Express data to Sql Server 2000, and Wally was a big help in getting me there. I got it done, btw. 😃</p><p>So, thank you <a href="http://weblogs.asp.net/wallym/" target="_blank" rel="noreferrer">Sir Wally</a>!</p><blockquote><a href="http://66.33.214.167/podcasts/dp04212005.mp3"><img src="http://www.kuam.com/archives/podcasts/images/podcast-kuam.gif" border="0"></a><br><br><br>Topics discussed:<br><ul><li>So today&#39;s that &quot;420&quot; thing in the mainland, huh? </li><li>Real-time argument with my co-worker if today is Bob Marley&#39;s birthday </li><li>I&#39;m back on the King Car Iced Tea </li><li>You want to hear me open a drink?  What the hell is wrong with you people? </li><li>Thanks to new friends for setting me straight on World Curling Championships </li><li>Do Microsoft jockeys not know what podcasting really is? </li><li><strong>My good buddy Wally McClure deserves to be knighted</strong></li><li>I love Benny Hill, but I never really got Monty Python </li><li>Public school kids just showed up and excpected a tour of KUAM&#39;s station </li><li>The downside to podcasting: show contents can&#39;t be indexed by search engines&amp; yet </li><li>I want to know how you&#39;re accessing my podcasts (RSS aggregators, OS, PC/Mac, do you get it off my blog, etc.) </li><li>I get &gt; 10x more traffic from RSS aggregators than over the web for my blog </li><li>Have you ever copied something on one PC and tried pasting it on another PC?  I did.  Duh.<br></li></ul><ul></ul><ul></ul><img height="1" src="http://weblogs.asp.net/jasonsalas/aggbug/403623.aspx" width="1"></blockquote><p><i>[Via <a href="http://weblogs.asp.net/jasonsalas/archive/2005/04/21/403623.aspx">Jason Salas&#39; WebLog</a>]</i></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[CS::Blogs: allowing anonymous comments]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-19-CSBlogs-allowing-anonymous-comments</link>
            <guid>https://chris.pelatari.com/posts/2005-04-19-CSBlogs-allowing-anonymous-comments</guid>
            <pubDate>Tue, 19 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I don&#39;t know if this will post with the source, but I&#39;ve got this link that may save someone the trouble of searching CS forums for an answer: <a href="http://communityserver.org/forums/479025/ShowPost.aspx">http://communityserver.org/forums/479025/ShowPost.aspx</a></p><p>I was wondering why I hadn&#39;t been getting any comments lately. Mostly because nobody really reads this blog, but even for those other couple of you that are subscribed - you couldn&#39;t leave a comment without registering!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: ObjectDock]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-15-RE-ObjectDock</link>
            <guid>https://chris.pelatari.com/posts/2005-04-15-RE-ObjectDock</guid>
            <pubDate>Fri, 15 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Who else out there likes a dock better than the standard windows taskbar? I have been using <a href="http://www.stardock.com/">StarDock</a>&#39;s <a href="http://www.stardock.com/products/objectdock/">ObjectDock</a> for a few weeks now and I think I&#39;m sold. I have hidden my taskbar and I only run a single visible dock at the bottom center of my screen. </p><p><img alt="objectdock image" src="http://puzzleware.net/images/objectdock.png"></p><p>&lt;snip/&gt;</p><img height="1" src="http://weblogs.asp.net/whaggard/aggbug/400456.aspx" width="1"></blockquote><p><i>[Via <a href="http://weblogs.asp.net/whaggard/archive/2005/04/14/400456.aspx">Wes&#39; Puzzling Blog</a>]</i></p><p>Big smile on my face from this one - I recognize the plainer looking icon in the picture above. I knew that Wes was running PostXING (heck, his <a href="http://puzzleware.net/codehtmler/">CodeHTMLer </a>is a big part of it) but it&#39;s really cool to see it really there, as one of the few programs he needs &quot;docked&quot;. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Goodbye, Lynn]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-09-Goodbye-Lynn</link>
            <guid>https://chris.pelatari.com/posts/2005-04-09-Goodbye-Lynn</guid>
            <pubDate>Sat, 09 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>One of my coworkers, Lynn Coyle, was found dead in his house this morning. </p><p>Lynn had diabetes. He was kind of an odd character, but he was a good person. I often joked around with him in the office - he had a strange sense of humor, but we got along pretty well.</p><p>I knew him for a little over 3 years, and in that time I learned a few things about him: he was a good geophysicist, with a specialty in borehole research. He served in the army when he was younger. He doesn&#39;t have much family left. He took care of his neighbors. For me, personally, he was there to talk about the things that he knew and he taught me lots about the oil &amp; gas industry.</p><p>Rest in peace, Lynn, you will be missed.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New PostXING release]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-08-New-PostXING-release</link>
            <guid>https://chris.pelatari.com/posts/2005-04-08-New-PostXING-release</guid>
            <pubDate>Fri, 08 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve added a small usability feature based on some <a href="http://blog.lotas-smartman.net/archive/2005/03/15/11201.aspx">recent feedback</a>.</p><p>Now, from the Tools -&gt; Options dialog, you can optionally set whether you would like to automatically create a new post when you hit Post or Post &amp; Publish. I also made some minor UI consistency changes, and removed a superfluous message that showed up in the options dialog in the last release (oops :)</p><p>So, go grab the new <a href="http://PostXING.url123.com/main">PostXING</a>. Enjoy.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Little Tony]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-06-Little-Tony</link>
            <guid>https://chris.pelatari.com/posts/2005-04-06-Little-Tony</guid>
            <pubDate>Wed, 06 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I went to go visit with my little (2 1/2 mos) nephew Tony tonight. Here&#39;s a couple of pics I snapped on my phone:</p><p><img src="https://chris.pelatari.com/assets/04-05-05_2246.DQ0n6_x6.jpg"></p><p><img src="https://chris.pelatari.com/assets/04-05-05_2242.Dza5C_AB.jpg"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: We're back!]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-02-RE-Were-back</link>
            <guid>https://chris.pelatari.com/posts/2005-04-02-RE-Were-back</guid>
            <pubDate>Sat, 02 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Well, I woke up this morning and found myself back in Roswell, GA. It seems that the <a href="googlecms" target="_self">Google trip</a> must have been a dream. </p><p>Don&#39;t you just love April Fools Day <a href="http://weblogs.asp.net/wallym/" target="_self">Wally</a>?</p><p>But thanks for the congratulations from a few friends and <a href="http://evitt.net/blog/archive/2005/04/01/357.aspx" target="_self">bloggers</a> (thanks <a href="http://evitt.net/blog/" target="_self">Josh</a>). I appreciate your thought that it might have been possible!</p></blockquote><p><i>[Via <a href="http://www.CoverYourASP.NET/AprilFools2005">The CoverYourASP.NET Blog </a>]</i></p><p>I got got. Good one, James. And yes, I thought it was possible, too - Dozing Dogs is a pretty good CMS.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Re: Here we go!]]></title>
            <link>https://chris.pelatari.com/posts/2005-04-01-Re-Here-we-go</link>
            <guid>https://chris.pelatari.com/posts/2005-04-01-Re-Here-we-go</guid>
            <pubDate>Fri, 01 Apr 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Congrats, James! Always good to see someone you know catch a deal like this. Too bad there are no comments for me to tell him in his blog :P</p><p>See for yourself: &quot;<a href="http://www.CoverYourASP.NET/GoogleCMS">Here we go!</a>&quot; on <a href="http://www.CoverYourASP.NET/blogs">The CoverYourASP.NET Blog </a>. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Running WebMatrix with a Whidbey Beta installed]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-26-Running-WebMatrix-with-a-Whidbey-Beta-installed</link>
            <guid>https://chris.pelatari.com/posts/2005-03-26-Running-WebMatrix-with-a-Whidbey-Beta-installed</guid>
            <pubDate>Sat, 26 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I took a chance and installed a CTP of Whidbey on my laptop. Thing is, I still use WebMatrix from time to time for POC stuff for v1.x of asp.net.</p><p>Problem is, when you run the Cassini webserver from webmatrix, it picks up the latest version of the .netfx and will give you different errors based on which version is installed. To get around this and ensure that the WebServer.exe runs on version 1.1 of the .netfx, simply add a WebServer.exe.config file with the following contents:</p><pre><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">configuration</span><span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">startup</span><span style="c-o-l-o-r:blue;">&gt;</span>
		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">requiredRuntime</span> <span style="c-o-l-o-r:red;">version</span>=&quot;<span style="c-o-l-o-r:blue;">v1.1.4322</span>&quot;/<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">startup</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">configuration</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p>If you want to ensure WebMatrix runs on version 1.1 of the .netfx, you can add the above startup element to WebMatrix.exe.config.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Enabling styles in CS]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-24-Enabling-styles-in-CS</link>
            <guid>https://chris.pelatari.com/posts/2005-03-24-Enabling-styles-in-CS</guid>
            <pubDate>Thu, 24 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.communityserver.org/forums/465132/ShowPost.aspx" target="_blank" rel="noreferrer">Straight from ScottW</a>, I added</p><pre><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">MarkUp</span><span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">globalAttributes</span><span style="c-o-l-o-r:blue;">&gt;</span>
		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">class</span> <span style="c-o-l-o-r:red;">enable </span>= &quot;<span style="c-o-l-o-r:blue;">true</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">align</span> <span style="c-o-l-o-r:red;">enable </span>= &quot;<span style="c-o-l-o-r:blue;">true</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
		<strong><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">style</span> <span style="c-o-l-o-r:red;">enable </span>= &quot;<span style="c-o-l-o-r:blue;">true</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span></strong>
		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">id</span> <span style="c-o-l-o-r:red;">enable </span>= &quot;<span style="c-o-l-o-r:blue;">true</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
	<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">globalAttributes</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p>notice the style element? That cleared up the little non-formatted code issue that I had in my previous post.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A little CS hack for the metablog API]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-24-A-little-CS-hack-for-the-metablog-API</link>
            <guid>https://chris.pelatari.com/posts/2005-03-24-A-little-CS-hack-for-the-metablog-API</guid>
            <pubDate>Thu, 24 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://sol3.net/blogs/starpilot/" target="_blank" rel="noreferrer">Keith</a> told me that CSBlogs was returning relative urls for its Metablog API implementation. After I installed it, I noticed the same thing - so I decided to hack it a little bit and find out what was going wrong. It turns out that the software is just doing what the guys at telligent are telling it to - thankfully I&#39;ve got the code and I can poke around when I find little issues like this 😃</p><p>First, I added a call to the Globals class to return a formatted url with the application path intact. This was in Components.SiteUrlsData.cs:</p><pre><span style="c-o-l-o-r:blue;">public</span> <span style="c-o-l-o-r:blue;">virtual</span> <span style="c-o-l-o-r:blue;">string</span> FormatUrl(<span style="c-o-l-o-r:blue;">string</span> name, <span style="c-o-l-o-r:blue;">params</span> <span style="c-o-l-o-r:blue;">object</span>[] parameters)
{      	

    <span style="c-o-l-o-r:blue;">if</span>(parameters == <span style="c-o-l-o-r:blue;">null</span>)
        <span style="c-o-l-o-r:blue;">return</span> Globals.FullPath(<span style="c-o-l-o-r:blue;">this</span>.Paths[name]);

    <span style="c-o-l-o-r:blue;">else</span>
        <span style="c-o-l-o-r:blue;">return</span> Globals.FullPath(<span style="c-o-l-o-r:blue;">string</span>.Format(Paths[name],parameters));
}</pre><p>But wait! This causes the rss feed to show up with something silly like http: / /localhost/cshttp://localhost/cs/blog... for the links in the RSS and Atom feeds produced by CSBlogs. So, I tried it without the &quot;HostPath&quot; to see if I could get the same results. This was in Blogs.Components.BaseWeblogSyndicationHandler:</p><pre><span style="c-o-l-o-r:gray;">/// <summary>
</summary></span><span style="c-o-l-o-r:gray;">/// Appends http://Host:Port to all blog urls
</span><span style="c-o-l-o-r:gray;">/// 
</span><span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">override</span> <span style="c-o-l-o-r:blue;">string</span> BaseUrl
{
    <span style="c-o-l-o-r:blue;">get</span>
    {
        <span style="c-o-l-o-r:blue;">return</span> <span style="c-o-l-o-r:maroon;">&quot;&quot;</span>; <span style="c-o-l-o-r:green;">//return Globals.HostPath(Context.Request.Url);
</span>    }
}</pre><p>That&#39;s it right? Nope, not if you have galleries enabled. One of the methods (that I know of 😃 uses the modified FormatUrl above to try and get a MapPath to a directory. You&#39;ll find out really quickly that MapPath doesn&#39;t like fully-qualified urls passed to it...I know I did. So, I modified one more line to make sure that I&#39;ve got a relative path passed into the photo gallery. This was in Galleries.Components.Picture:</p><pre><span style="c-o-l-o-r:gray;">/// <summary>
</summary></span><span style="c-o-l-o-r:gray;">/// This static method gets the location of the picture cache directory, mapped on the local filesystem.
</span><span style="c-o-l-o-r:gray;">/// 
</span><span style="c-o-l-o-r:gray;">/// <!---->
</span><span style="c-o-l-o-r:blue;">public</span> <span style="c-o-l-o-r:blue;">static</span> <span style="c-o-l-o-r:blue;">string</span> CacheDirectory()
{
	Uri uri = <span style="c-o-l-o-r:blue;">new</span> Uri(GalleryUrls.Instance().PictureCache);
	<span style="c-o-l-o-r:blue;">return</span> CSContext.Current.Context.Server.MapPath(uri.AbsolutePath);
}</pre><p>After that, everything seems to be running as normal. I don&#39;t know if I&#39;d recommend doing something like this on your install, especially if things are working well enough for you. I just use this particular feature of the Metablog API quite often, so it bit me a lot.</p><p>: It looks like the trackback feature uses fully qualified urls as well as the rss/atom feeds. I&#39;ll post a fix tomorrow when I find out where the BaseUrl is set for the trackbacks.</p><p>: Found it :) I would&#39;ve got it done last night, but I don&#39;t have the broadband yet. Any ways, like I thought it was just a removal of a baseUrl parameter (case notwithstanding). I found this in Blogs.Controls.TrackbackMarkup:</p><pre><span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">override</span> <span style="c-o-l-o-r:blue;">void</span> Render(HtmlTextWriter writer)
{
            
    <span style="c-o-l-o-r:blue;">if</span>(IsValid)
    {
        <span style="c-o-l-o-r:blue;">string</span> baseUrl = Globals.HostPath(Context.Request.Url);
	writer.WriteLine(tag,<span style="c-o-l-o-r:green;">/*baseUrl+*/</span>PermaLink,Title,<span style="c-o-l-o-r:green;">/*baseUrl+*/</span>PingUrl);
    }
}</pre><p class="media">[ Currently Playing : Rooster - Alice in Chains - Unplugged (6:40) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Customer Service Message]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-22-Customer-Service-Message</link>
            <guid>https://chris.pelatari.com/posts/2005-03-22-Customer-Service-Message</guid>
            <pubDate>Tue, 22 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is a message that my boss recently sent to a customer that had an issue with one of our software packages (I don&#39;t own it :)</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p>Brian, in the finest tradition of Microsoft, VDB&#39;s engineers have returned an error message  that has absolutely nothing to do with the problem at hand.   Time Steps should be in the range of 1 to 10.  Instead, of limiting the input (1 to 10). VDB&#39;s fine engineers, it seems, prefer to give a worthless message, then plow on with  a 10 millisecond TD-Chart.  I conclude, the only reason for this is that they are trying to kill me.   I will have the problem fixed.   Maybe we will replace all messages with one that says &quot;Call Tom, we are trying to kill him, sorry for any inconvenience.&quot;</p><p>Anyway, I have attached a new release 2.8.4, it has some new features like ZOOM, Undo, and a way to graph Well markers (horizons). It will also launch the help guide from the help button, now there is a novel ideal.  Though not fully tested, I&#39;m sure it has an entire new array of useless error messages designed to kill me.</p><p><br>Sorry for the problem</p><p><br>Tom</p></blockquote><p class="media">[ Currently Playing : I Just Wanna Love U (Give It 2 Me) - Jay-Z - The Dynasty Roc la Familia (3:47) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A little down time...]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-17-A-little-down-time</link>
            <guid>https://chris.pelatari.com/posts/2005-03-17-A-little-down-time</guid>
            <pubDate>Thu, 17 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m going to be installing community server here today. There&#39;s going to be a little downtime because of that. As if you cared.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING's vaultpub works.]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-16-PostXINGs-vaultpub-works</link>
            <guid>https://chris.pelatari.com/posts/2005-03-16-PostXINGs-vaultpub-works</guid>
            <pubDate>Wed, 16 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This shouldn&#39;t have gotten this out of whack, but it did, sorry. I&#39;ve made sure that all of the folders are inherited now, and tested the get latest version on a different directory on my machine. </p><p>: The only thing to watch out for is that I like to copy my assemblies to my C:\bin folder so I can dogfood the output immediately. If you don&#39;t like that, go to the main PostXING project and clear out the build events. Also, the code that is now in the repository is more recent than the release on <a href="http://projectdistributor.net">Project Distributor</a>. It supports proxies for the web connection and has a couple of other bug fixes in it like handling FTP files with spaces. One more thing - not all of the projects in the trunk are either deployed to the world or active - the Client Template plugin project allows you to define a custom template on the client side (since dotText doesn&#39;t implement this particular metablog api feature) and the offline plugin was going to be the save/load posts feature but that got put into the main project instead. It&#39;s still there because someday I may decide to make it handle online/offline capabilities differently.</p><p class="media">[ Currently Playing : Bombtrack - Rage Against the Machine - (4:04) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[My comments are broken...]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-16-My-comments-are-broken</link>
            <guid>https://chris.pelatari.com/posts/2005-03-16-My-comments-are-broken</guid>
            <pubDate>Wed, 16 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...at a time when people are actually leaving comments. Balls. Josh - I&#39;m checking the vaultpub repository on a clean directory right now, I probably forgot to add all of the files to the repository. Genius, Chris.</p><p>: I&#39;m such a jerk. I have this repository set up all bass ackwards. I&#39;ll fix it up lickety split.</p><p class="media">[ Currently Playing : Born of a Broken Man - Rage Against the Machine - The Battle of Los Angeles (4:40) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING feature requests]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-15-PostXING-feature-requests</link>
            <guid>https://chris.pelatari.com/posts/2005-03-15-PostXING-feature-requests</guid>
            <pubDate>Tue, 15 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://blog.lotas-smartman.net/archive/2005/03/15/11201.aspx">Teirnan asked for a few features for PostXING</a>. I started to write a comment, but it got too long-winded for a comment. You get a post Sir:</p><p>Can I help you? I think maybe so :) In order:</p><ul><li>I did this in a very early build of PostXING, but got some feedback that asked to be able to immediately edit the post that was just, erm, posted - in case of typos or whatever. I guess I could make it configurable, that shouldn&#39;t be too hard. Since you are literally the first person to ask for this feature, I think I&#39;ll make the current behavior the default. </li><li>I don&#39;t know how to tackle this one - PostXING is basically just a wrapper for <strong>SOME</strong> functionality of the Metaweblog API. Generally, the blog engine will handle the entry IDs. Sometimes it gives you an int, sometimes it gives you a string. </li><li>I actually tried to do this at one point, but I&#39;m not sure how stable it would be. Think about it this way: in order for this to work, images would have to be parsed out (not a problem) and each one uploaded one at a time using the FTP component. The resulting url would have to be pumped back into the post and then and only then could you finally post/publish the entry. If you have a lot of images, this could take a really long time and thus give the perception that PostXING performs poorly. I guess I could make this a config option too with the caveat that it could possibly take a really long time to make a post. </li><li>This one is easy :) If you want it to be zippy, download the latest version of Vault from <a href="http://vaultpub.sourcegear.com">http://vaultpub.sourcegear.com</a> . Login as the guest account (I think it&#39;s guest/guest) and go to the PostXING repository. Set a working folder and click Get Latest Version. The latest code release should be there, although it may be a little out of sync with the most current version that I&#39;m dogfooding on my local machine. You can also find any plugins code that is associated with PostXING. If you don&#39;t want to install vault for whatever reason, I&#39;m pretty sure you can download from their web interface using the same uid/pwd, but I&#39;m sure it would be about 100 times more painful.</li></ul><p>Thanks for the feedback, Tiernan. </p><p class="media">[ Currently Playing : I&#39;m done - Korn - Take a look in the mirror (3:23) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Using OpenSSH tunneling for RealVNC on Windows]]></title>
            <link>https://chris.pelatari.com/posts/2005-03-01-Using-OpenSSH-tunneling-for-RealVNC-on-Windows</link>
            <guid>https://chris.pelatari.com/posts/2005-03-01-Using-OpenSSH-tunneling-for-RealVNC-on-Windows</guid>
            <pubDate>Tue, 01 Mar 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I totally geeked out tonight.</p><p>I was searching for something else and happened upon <a href="http://www.trekweb.com/~jasonb/articles/vnc_ssh.shtml">a tutorial</a> for tunneling VNC on windows, which led me to <a href="http://tech.erdelynet.com/ssh-vnc.html">another article</a> that was inspiration for the first article I found. Here was the problem with both: the webserver that I wanted to get to is behind an OpenBSD firewall.</p><p>So, first things first: I added a rule to pf.conf that allowed ssh to be redirected to the private address of my webserver using rdr syntax:</p><pre>rdr pass on $ext_if from any to $public_address port ssh \
-&gt; $private_address</pre><p>This rule passes ssh calls bound for the external address to be sent to the internal network address (192.168.1.blah).</p><h4>But what about ssh running on Windows?</h4><p>Well, if you don&#39;t already have cygwin installed on the server, I ended up using <a href="http://sshwindows.sourceforge.net/">sshwindows </a>(linked from the <a href="http://openssh.org">OpenSSH </a>site under <a href="http://openssh.org/windows.html">Windows</a>) Just follow the instructions in readme.txt or quickstart.txt and you should be good to go there - it comes with an installer, so it was pretty easy to get up and running.</p><h4>But what about the client on Windows?</h4> For this, I use <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>. I&#39;ve used it for a while to ssh into my OpenBSD machines from windows. What I didn&#39;t know of is the Tunnel feature that sits near the end of the config setup tree...this is how the magic happens. <p>See, before, when I needed to get into a firewalled computer, I would just add rules to the firewall to punch temporary holes while I did what I had to do remotely. I know, bad Chris. Using OpenSSH to tunnel the traffic that would normally be sent unencrypted over the wire makes me feel a lot safer, even tho the server in question doesn&#39;t have a whole lot of goodies to look at. It&#39;s still important to <strong>me.</strong></p><h4>So how does the magic happen?</h4><p>Using the tunnel feature of PuTTY, I added a link to port 5901 and mapped it to localhost:5900. Here&#39;s the rub: localhost in this case refers to the ssh server, not the computer the client is running from. The 5901 refers to the machine that the client is running from. This wasn&#39;t clear to me in either tutorial that I read thru. So you add the tunnel link to the SSH/tunels node of PuTTY and when you fire up VNC, have it sent to <strong>localhost:1</strong>. This was also not very clear from either article (but that just probably means I&#39;m dense).</p><h4>Is that it?</h4> For VNC, yeah, it is. However, I also run a couple of applications on my network that contain sensitive data: namely SourceGear <a href="http://sourcegear.com/vault/index.html">Vault </a>and <a href="http://sourcegear.com/dragnet/index.html">Dragnet</a>. I want to get to these too! Can I do it in a similar way to the VNC deal? You betcha! <p>This time, for the tunnel link I specified an arbitrary (but often used) high port in PuTTY: 8000. I also wanted to point to the internal server (say, 192.168.1.2) so instead of specifying localhost:80 (which is already exposed -duh!) I pointed it to 192.168.1.2:80.</p><p>Fire up PuTTY, login as some user that&#39;s configured for OpenSSH, and point my browser of choice to <a href="http://localhost:8000/dragnet"><a href="http://localhost:8000/dragnet" target="_blank" rel="noreferrer">http://localhost:8000/dragnet</a></a>. Nice!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Channel 9 guy...]]></title>
            <link>https://chris.pelatari.com/posts/2005-02-17-Channel-9-guy</link>
            <guid>https://chris.pelatari.com/posts/2005-02-17-Channel-9-guy</guid>
            <pubDate>Thu, 17 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><strong>|}34|2 M|2. <a href="http://radio.weblogs.com/0001011/">Scoble</a>,</strong></p><p><strong>1 H4v3 K1|}n4pp3|} y0U|2 p|23C10U5 &quot;CH4nn3L 9 6Uy&quot;. 1f j00 3v4|2 w4n7 70 533 H1M 4L1v3 4641n, My |}3M4n|}5 MU57 83 M37 1n fULL. My |}3M4n|}5 4|23 45 f0LL0w5:</strong></p><p><strong>1) 0n3 M1LL10n |}0LL4|25.</strong></p><p><strong>2) M1C|2050f7 MU57 0p3n-50U|2C3 w1n|}0w5 50 17 C4n 83 53CU|23 L1K3 L1nUx. j00 H4v3 48 H0U|25 70 C0MpLy. Y0U w1LL f1n|} 7H47 1 4M v3|2y 53|210U5 1n 7H15 M4773|2.</strong></p><img alt="" hspace="0" src="https://chris.pelatari.com/assets/02-16-05_2128.YFnmwjrx.jpg" align="baseline" border="0"><p><strong>516n3|},</strong></p><p><strong>31337 |-|4&gt;&lt;0|2z</strong></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[BradA at the Houston .NET UG]]></title>
            <link>https://chris.pelatari.com/posts/2005-02-17-BradA-at-the-Houston-NET-UG</link>
            <guid>https://chris.pelatari.com/posts/2005-02-17-BradA-at-the-Houston-NET-UG</guid>
            <pubDate>Thu, 17 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Although he only talked about high-level stuff (Exception Handling and Memory Management), I think Brad did a pretty good job. I stopped going to the Microsoft office out here because of all the <a href="http://support.microsoft.com/?scid=http://support.microsoft.com%2Fservicedesks%2Fwebcasts%2Flevels.asp">100 level</a> classes, I couldn&#39;t justify taking time out of the trenches for learning stuff I already knew. But hearing the lead PM on the CLR team speak? It was time to attend my first <a href="http://hdnug.org/hdnug/home.aspx">Houston .NET UG</a> meeting. To be fair, there was also the <a href="http://www.hal-pc.org/~odiswooten/csharp/">Hal-PC C# sig</a> there, but I&#39;ve never seen that room so packed. Overflow rooms had to be set up. Way to go, Brad!</p><p>So as is usually the case with these events, I came away with a couple of golden nuggets of information, some of which is even relevant in v1.x of the framework! (Imagine that!) Here are a couple of the notes I took:</p><ul><li>Finalizers keep objects alive an order of magnitude (about 10) longer than objects w/o finalizers</li><li>It&#39;s a <strong><em>really</em></strong> bad idea to throw an Exception from a finalizer.</li><li><a href="http://blogs.msdn.com/cbrumme/archive/2004/02/20/77460.aspx">Check out Critical Finalizers in v2.0</a></li><li>Finalizers are most appropriate for owned unmanaged resources (filestream, sqlconnection, etc classes are a case in point)</li><li>It&#39;s kind of an &quot;unwritten rule&quot; that any object that has a Close method should implement the IDisposable pattern and they should do the exact same thing. i.e. Close <u>should</u> just call Dispose.</li></ul><p>I brought my digital camera, but being the jerk that I am, didn&#39;t check to see if the batteries were working first (doh!). Thankfully, I&#39;ve got a camera phone and was able to take a picture with Brad anyways (I&#39;m the short one):</p><img src="https://chris.pelatari.com/assets/02-16-05_1936.DCjCwWre.jpg"><p>This is also where I got my <a href="/posts/2005-02-17-Channel-9-guy">Channel 9 guy</a> along with a nice smattering of other cool swag. Sorry, <a href="http://radio.weblogs.com/0001011/">Scoble</a>, it was just a joke tho - I thought it would be more appropriate to write the ransom note in 1337 than have both of my subscribers download a bunch of newspaper-clipped letter images. I still want my million, tho 😃</p><p class="media">[ Currently Playing : Napoleon Solo - At the Drive-In - In Casino Out (4:47) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Updated my engine.]]></title>
            <link>https://chris.pelatari.com/posts/2005-02-15-Updated-my-engine</link>
            <guid>https://chris.pelatari.com/posts/2005-02-15-Updated-my-engine</guid>
            <pubDate>Tue, 15 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, thanks to <a href="http://stevenharman.net/blog/">Steven&#39;s </a>post <a href="http://stevenharman.net/blog/archive/2005/01/10/167.aspx">.Text&#39;s MetaWeblog API - Edit Post Error...</a> I am now just a couple of revisions behind the latest incarnation of .Text <a href="http://www.chrisfrazier.net/blog">over here</a>.</p><p>This has been a serious pain to get migrated from v0.94 (all because I need to edit my posts w/ the metablog api - go figure!) but a lot of it has been due to errors on my part. When you try to add content, you&#39;ve gotta keep those Identity fields intact or you end up with &quot;Server returned a fault exception&quot; when adding a new post. Yuck.</p><p> Continuing my battle with this engine: It looks like the entry.FeedBackCount doesn&#39;t like to be DBNull or whatever (Imagine that!). I think I just might be g2g w/ the v0.95 .Text installation. Geebus.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Asian "Just Lose It"]]></title>
            <link>https://chris.pelatari.com/posts/2005-02-09-Asian-Just-Lose-It</link>
            <guid>https://chris.pelatari.com/posts/2005-02-09-Asian-Just-Lose-It</guid>
            <pubDate>Wed, 09 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.xanga.com/item.aspx?user=euiyun&amp;tab=weblogs&amp;uid=201515136">euiyun&#39;s Xanga Site - 2/8/2005 9:41:55 PM</a></p><p>Always good to see a bunch of Asians &quot;go crazy&quot;. (ahahahahah!) Bonus: It looks like it was filmed in good ol&#39; H-Town - part of it at the Williams Trace (once Transco) Tower! w00t! And Wal-Mart. Gotta love Wal-Mart.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[They're pretty useless but...]]></title>
            <link>https://chris.pelatari.com/posts/2005-02-07-Theyre-pretty-useless-but</link>
            <guid>https://chris.pelatari.com/posts/2005-02-07-Theyre-pretty-useless-but</guid>
            <pubDate>Mon, 07 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>They&#39;re fun anyways.</p><p><a href="http://www.bbspot.com/News/2004/10/extension_quiz.php"><img height="90" alt="You are .html You are versatile and improving, but you do have your limits.  When you work with amateurs it can get quite ugly." src="http://www.bbspot.com/Images/News_Features/2004/10/file_extensions/html.jpg" width="300" border="0"> Which File Extension are You?</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <link>https://chris.pelatari.com/posts/2005-02-02-Added-Tabbing</link>
            <guid>https://chris.pelatari.com/posts/2005-02-02-Added-Tabbing</guid>
            <pubDate>Wed, 02 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I recently added Tabbing functionality for indenting/outdenting (hey, it&#39;s a trident term 😃 in my dogfood version of PostXING.</p><blockquote><p>Quoting has just become 100 times easier for me.</p></blockquote><p>I prefer to use the keyboard when posting/changing text attributes when possible, and this whole no tabbing business finally got me a little fed up. Wanna know the funny part? It ended up being about 8 lines of code, give or take for whitespace:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> <span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">override</span> <span style="c-o-l-o-r:blue;">bool</span> ProcessCmdKey(<span style="c-o-l-o-r:blue;">ref</span> Message msg, Keys keyData) {
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> 	<span style="c-o-l-o-r:blue;">if</span>(keyData == Keys.Tab){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 		<span style="c-o-l-o-r:blue;">this</span>._designEditor.TextFormatting.Indent();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 	}<span style="c-o-l-o-r:blue;">else</span> <span style="c-o-l-o-r:blue;">if</span>(keyData == (Keys.Tab | Keys.Shift)){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 		<span style="c-o-l-o-r:blue;">this</span>._designEditor.TextFormatting.Unindent();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 	}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 			
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 	<span style="c-o-l-o-r:blue;">return</span> <span style="c-o-l-o-r:blue;">base</span>.ProcessCmdKey (<span style="c-o-l-o-r:blue;">ref</span> msg, keyData);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> }</pre><p>What other unsupported keyboard shortcuts would you like to see in PostXING (get em while I&#39;ve got it fresh on my mind 😃</p><p class="media">[ Currently Playing : Dazed And Confused - Led Zeppelin - BBC Sessions CD 2 (18:36) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: /aiCAPTCHA article FAQ]]></title>
            <link>https://chris.pelatari.com/posts/2005-02-01-RE-aiCAPTCHA-article-FAQ</link>
            <guid>https://chris.pelatari.com/posts/2005-02-01-RE-aiCAPTCHA-article-FAQ</guid>
            <pubDate>Tue, 01 Feb 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip&gt;Q: You mean you didnt kill 200K people or change the tilt of the Earth&#39;s axis? a: not yet &lt;/snip&gt; <em>[Via <a href="http://www.mperfect.net/blog/browse.aspx?bid=632428362792968750.aspx">rains-N-brawn.com </a>]</em></p></blockquote><p>Classic. I rather enjoyed the article, and think that a lot of people are missing the point. Not that my opinion matters anyways, but I thought it was kind of a neat POC.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[This is gonna piss some people off...]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-29-This-is-gonna-piss-some-people-off</link>
            <guid>https://chris.pelatari.com/posts/2005-01-29-This-is-gonna-piss-some-people-off</guid>
            <pubDate>Sat, 29 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Going to download the spankin new <a href="http://www.microsoft.com/downloads/details.aspx?familyid=0325b97a-9534-4349-8038-d56b38ec394c&amp;displaylang=en">Enterprise Library</a>, and before you can download you&#39;re presented with this:</p><h1 class="pageMainTitle">Enterprise Library</h1> Your registration information enables us to better provide you with the latest resources relevant to your needs, including pointers to service packs, security notices, training, trial versions of new products, conferences, new books, and more. Note that at any time you can manage all your Microsoft.com communication preferences from our <a href="http://go.microsoft.com/?linkid=415499">Profile Center</a>. Thank you for your interest in this download. <h3>Registration required for this download</h3><div id="divContainer" style="d-i-s-p-l-a-y:block;"><table><tbody><tr valign="center"><td width="4"></td><td style="c-u-r-s-o-r:hand;" onclick="ToggleRadioButton(0)"><input id="radioButtonYes" onclick="ToggleRadioButton(0)" type="radio" name="radioButtonYes"><span class="choice">Yes, please take me to the registration page and then start the download.</span></td></tr><tr valign="center"><td width="4"></td><td style="c-u-r-s-o-r:hand;" onclick="ToggleRadioButton(1)"><input id="radioButtonNo" onclick="ToggleRadioButton(1)" type="radio" name="radioButtonNo"><span class="choice">No, I do not wish to register--which is required for this download--so please return me to the previous page.</span></td></tr></tbody></table></div><div style="d-i-s-p-l-a-y:block;"> </div><div style="d-i-s-p-l-a-y:block;">I&#39;ll probably still download it on Monday, but it&#39;ll be fun to see what people say about this. </div><p class="media">[ Currently Playing : Get What You Need - Jet - Get Born (4:07) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: This is gonna piss some people off...]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-29-RE-This-is-gonna-piss-some-people-off</link>
            <guid>https://chris.pelatari.com/posts/2005-01-29-RE-This-is-gonna-piss-some-people-off</guid>
            <pubDate>Sat, 29 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So earlier I said &quot;<a href="http://weblogs.asp.net/cfrazier/archive/2005/01/28/362869.aspx">This is gonna piss some people off...</a>&quot; about the EntLib, right? Well, straight from the developer&#39;s mouth:</p><blockquote><div class="comment_author"><a id="Comments.ascx_CommentList__ctl1_NameLink" href="http://weblogs.asp.net/scottdensmore" target="_blank">Scott Densmore</a></div><div class="comment_content">The registration process is to help us better connect with you. I hope it doesn&#39;t detract you from downloading. I think you will love it.</div></blockquote><div class="comment_content" dir="ltr">Well, I hope I didn&#39;t come across as &quot;I&#39;m not going to download it&quot;, cuz I most definitely am. Matter of fact, I&#39;m downloading now. I just thought it would be interesting to see who would say such classics as &quot;The mothership is tracking you!&quot; or some other garbage like that. Why would I not want to register with Microsoft? They&#39;re already tracking my behaviors on Windows XP (HAHA! just kidding (or am I?)) :)</div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New PostXING coming soon]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-29-New-PostXING-coming-soon</link>
            <guid>https://chris.pelatari.com/posts/2005-01-29-New-PostXING-coming-soon</guid>
            <pubDate>Sat, 29 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>With the help of <a href="http://weblogs.asp.net/lkempe">Laurent Kempé</a>, I&#39;ve traced down a bug in the PostXING FTP library (or rather my handling of it) and ended up changing the underlying FTP library code to the open source <a href="http://www.enterprisedt.com/products/edtftpnet/overview.html">edtFTPnet </a>library. This is a more complete library than the sample socket code that I was using before, and since it&#39;s LGPL licensed, I can link it into my code without affecting the license that PostXING is released under (which is zlib/libpng).</p><p>I also plan to add proxy support soon - the only hold up right now is that I like to at least dry run what I&#39;m releasing before I put it out there, and I have no idea how to test if proxy code is going to work. Is there a such thing as a free proxy server that I can test against? I&#39;m pretty resolved to, er, &#39;borrowing&#39; the functionality for proxy support from <a href="http://rssbandit.org">RssBandit </a>simply because the code works and has been a good reference for me before. So, I&#39;m not worried about how to implement it, just on how to test it. Any ideas?</p><p class="media">[ Currently Playing : Move On - Jet - Get Born (4:20) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Sun's Open letter to IBM.]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-24-Suns-Open-letter-to-IBM</link>
            <guid>https://chris.pelatari.com/posts/2005-01-24-Suns-Open-letter-to-IBM</guid>
            <pubDate>Mon, 24 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I am not an expert in this area. Not even close. Wouldn&#39;t even call myself an amateur. But I had to stop reading <a href="http://blogs.sun.com/roller/page/jonathan/20050121">the letter</a> when he says &quot;<span class="body">It&#39;s the most secure OS the world has ever seen...&quot;</span></p><p><span class="body">A quick hop over to the <a href="http://www.sun.com/software/solaris/">link provided</a> for solaris shows how proud they are...of thier new logo. Call me crazy, but if you were to make the claim that you are releasing the &quot;most secure OS the world has ever seen&quot;, wouldn&#39;t <em>that</em> be what was <a href="http://openbsd.org/">highlighted on the front page of the site you are pointing to</a>? </span></p><p><span class="body">Right, different audiences, different priorities, different reasons for installing an OS, but if you are claiming that you have the &quot;most secure OS the world has ever seen&quot; (still can&#39;t get over that) - <a href="http://openbsd.org/">say it loud, proud, and in bright red letters on the first page of your site</a>. Heh.</span></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Score for CS Blogs]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-21-Score-for-CS-Blogs</link>
            <guid>https://chris.pelatari.com/posts/2005-01-21-Score-for-CS-Blogs</guid>
            <pubDate>Fri, 21 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I feel like a kid in one of those <a href="http://www.retrojunk.com/media/171/">old milk commercials </a>- you may try to com...ment $p4|\/| me, on....line pok...er, but my blog is running <a href="http://communityserver.org/blogs/">CS::Blogs</a>, so your stupid comment doesn&#39;t get past my inbox. Comment moderation: it does a blog good.</p><p>This blog is not running the version of CS::Blogs that has moderation. As a matter of fact, this blog is running .Text version 0.94 because of a bug in the Metablog API implementation of v0.95. Sorry to get your hopes up, I was talking about <a href="http://weblogs.asp.net/CFrazier">my other blog on weblogs.asp.net</a>.</p><p class="media">[ Currently Playing : Floyd The Barber - Nirvana - Bleach (2:18) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Halo (both of 'em)]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-21-Halo-both-of-em</link>
            <guid>https://chris.pelatari.com/posts/2005-01-21-Halo-both-of-em</guid>
            <pubDate>Fri, 21 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been playing Halo 2 recently, and I got to a part that reminded me why I lost interest in the first one.</p><p>Once you get to a certain part of the game (either one), it gets so difficult to advance that it&#39;s not fun anymore. Now, granted, I&#39;ve never been close to being <a href="http://imdb.com/title/tt0098663/">the Wizard</a>, but gimme a break already. I guess it&#39;s back to <a href="http://www.princeofpersiagame.com/us/home2.php">Prince of Persia </a>(again, either one) for me. <a href="http://www.ubi.com">UbiSoft</a> gets it. Make a game that I&#39;ll want to play over and over.</p><p>&lt;/rant type=&quot;As If You Cared&quot;&gt;</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New PostXING release]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-17-New-PostXING-release</link>
            <guid>https://chris.pelatari.com/posts/2005-01-17-New-PostXING-release</guid>
            <pubDate>Mon, 17 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve gone ahead and uploaded a <a href="http://PostXING.url123.com/v1.1.5017.1">new build of PostXING</a>. I extended the plugin architecture a little bit to allow for posting to non-.Text blog engines using IBlogExtension plugins, of which there are a few out there already. Everything else is pretty much the same, but I had to give out some credit for the plugin architecture - I didn&#39;t come up with that stuff on my own and I&#39;m all about giving credit where credit is due.</p><p>To test this IBlogExtension plugin architecture (really all you have to do is drop the IBlogExtension dll/exe into PostXING&#39;s plugins subdirectory) I created a <a href="http://bluefenix.blogspot.com/">blogger account</a> that I could use the <a href="http://www.newsgator.com/plugins/default.aspx">NewsGator blogger plugin </a>to test against. Guess what? <a href="http://bluefenix.blogspot.com/2005/01/new-postxing-release.html">It works</a>.</p><p class="media">[ Currently Playing : No Excuses - Alice in Chains - Unplugged (4:56) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[IBlogExtension, from the other side]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-13-IBlogExtension-from-the-other-side</link>
            <guid>https://chris.pelatari.com/posts/2005-01-13-IBlogExtension-from-the-other-side</guid>
            <pubDate>Thu, 13 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I can now use the great <a href="http://www.newsgator.com/plugins">IBlogExtension plugins for NewsGator</a> to post with <a href="http://PostXING.url123.com/main">PostXING</a>. (with my built about 10 minutes ago dogfood version, that is :) Thanks for that idea, <a href="http://rosscode.com">Joel</a>.</p><p>The only problem with this method is that it&#39;s &quot;push only&quot; - I can only publish with these plugins. No history management, and strictly speaking, not manageable on the same level as using the Metablog API. So, I can&#39;t set an account for IBlogExtension blogs - no navigating to the site without manually opening a browser, basically no integration with the current UI. Categories seem to be up to the plugin as well. <a href="http://bluefenix.blogspot.com/2005/01/iblogextension-from-other-side.html">But I can post</a>. That&#39;s one step in the right direction, right?</p><p class="media">[ Currently Playing : Still Frame - Trapt - Trapt (4:30) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: New PostXING release.]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-12-RE-New-PostXING-release</link>
            <guid>https://chris.pelatari.com/posts/2005-01-12-RE-New-PostXING-release</guid>
            <pubDate>Wed, 12 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote xmlns:xhtml="http://www.w3.org/1999/xhtml"><p xmlns="http://www.w3.org/1999/xhtml">I&#39;ve uploaded a new release of PostXING to <a href="http://projectdistributor.net">ProjectDistributor</a>. This release adds the ability to Load or Save a post as a .htm file, as well as managing your blog (Categories, Post, Post &amp; Publish, Cross-Post, Delete, and plugins) from the Preview page.</p><p xmlns="http://www.w3.org/1999/xhtml">How ya like that, <a href="http://yexley.net/blogs/bob/">Bob</a>? :)</p></blockquote><p class="media" xmlns="http://www.w3.org/1999/xhtml">I went ahead and included a couple of bugfixes that slipped into this release, so the <a href="http://PostXING.url123.com/v1.1.5012.2">latest version of PostXING </a>is now uploaded and reflected on ProjectDistributor. Sorry I let a couple of bugs slip in there. Thanks for the feedback, Bob!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New PostXING release.]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-12-New-PostXING-release</link>
            <guid>https://chris.pelatari.com/posts/2005-01-12-New-PostXING-release</guid>
            <pubDate>Wed, 12 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve uploaded a <a href="http://PostXING.url123.com/v1.1.5012.1">new release of PostXING </a>to <a href="http://projectdistributor.net">ProjectDistributor</a>. This release adds the ability to Load or Save a post as a .htm file, as well as managing your blog (Categories, Post, Post &amp; Publish, Cross-Post, Delete, and plugins) from the Preview page.</p><p>How ya like that, <a href="http://yexley.net/blogs/bob/">Bob</a>? :)</p><p class="media">[ Currently Playing : God (Interlude) - Andre 3000 - Speakerboxxx/The Love Below (2:19) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A new feature...]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-11-A-new-feature</link>
            <guid>https://chris.pelatari.com/posts/2005-01-11-A-new-feature</guid>
            <pubDate>Tue, 11 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...for <a href="http://PostXING.url123.com/main">PostXING </a>that I should have added a long time ago. It only took roughly 40 lines of code (including gratuitous whitespace). I&#39;ll give you a hint on what it is:</p><p><img alt="" hspace="0" src="data:image/gif;base64,R0lGODlhbAAsAPcAANTU1NHR0dns/uazouXl5XSCkJmcpSgolv7nioiGv/79m5u6x6rMq/PZerHb/pOTl1ZdZv/9vb7f/njUVv//yO3s7WZvkc7m/hyUEP/uqWNly6O+03Nz25ystSOwEy56L7Pi/Uy1Ivn9/tPq/3iFuGrJRIaGyxBuDPH6/nB5uzSlGoyTxePi45iyvrng/5KY1P/rknZ2qmeVZXa0bqmqq2xt0cbi/ouoiuP+/oTfV/rNPv//+LK0zUevJeLw/rC21W5wt8vk/vnytIidxaSuwHzZUKytvf/1lvn7/a7a/rq71sbHymlvubq6w+r3//f39////VleudTy/Nja2GbFNZCTxO75/52g1pCVwP7+/0JCpjSWKsHh/uz1/ieEJpGbxJ2dzqGn1o2Uv///tvj4+NbW15WczPb5/vX18fHx8efz/bq+ycjj/4/mYOL0/tf+/v73mLq6vKmvzF6JyyVDlISw3zJivU5Pq8LAxJidybyQHMDBuc6jN+C2Umdn1N3UiOHv/ujz/f//4///pfj48r7X3l5gv7SuxXbUSHKLo6WnrvnJUf//0OLEUKng2aGhz4mRlejo516JXqR9HM7O0PD69JOXyczOzLXg5YeZ09ra0UKWPkOhHVxewWG5PHt9yv/icP//8oek0dHo/5itnEBIobTg8aDRvLbn/b3u/V2hYX2RwLvJvtHS15Kv0sPn/e3x5a6wtezOxMnJ5cDF/9Hc/4C6ek+rNkqyOefKQyyXFvfQXSelEnDF///WYT6p+oWzg/LpvZG1j/Dw7GFhxqfR9KTU/ajV86zY/tLw9LS9xtnYzWugh3u2in+9n6KoxOG7Lm9v0vD9/vX+/8Pi+cXh8+Hx+TKyJvz89v//6Orr8DySNomQw4qLzuTv5cXFw0aXQVSeUcTg5bGxsbO0vP39/P3//8rw/f79/aSepn6AsXh9vaSkpbPZ6pdzDpvC4opwJqKmsGpp0JDBiGho1W9v1avZ1EmkRnBw0m3SP//jlsTF3gAAAP///+7s8Ovp7SH5BAAAAAAALAAAAABsACwAAAj/AO3UmUPnn8GDCBMqXMiwocOHECNGFEgwIZ6LEjNq3MhRI8WCHUOKHCnyI8mTKFMqNKmypcuOLF/KnNkwJs2bN23i3Okypr+fQIMKHUq0qNGjSJMqPcpyqdOnUKNKBdp0qtWrWJ1Wzcq1K9etF/F4Nfqh7IexSp9USJN069E8cOPCzSQKalkMHvKePXrnzp6/gAFfubO0QoAyASgtCcB0IEigYYnm6Ue5cr9Vxr5M/VDiBNI766CwGM2CgGlsYOgRRlqGFQNhN0itiTOORVG3RieXMwcF3RlzJHr9GiL1QxFOn0ObNh2JQCTUflYbLQNskwpdJ7ww28CORiSiYC9K/+6XpR+SM1amfamS4EVSPXrg/SwbAtGEskZBQwEQAIB/AGUQAkZ0R00hAwa8hMMALJWc0sICBtDAllC4FTWZOUgggUIXgThRCy1XINVHBkLo484kH1wzQRs55LAXUaD1E0B//wEgIIFG3YDXFt6IgMMbC0BQTAsPlDFUeGINNZkI6HWhhg8CCDBCGEfpAcoYClDACAVjfBBCG228COM6OzxBBhlPpPnEDgNKR5QXKvRgizQ4JBPkO+dg8kAcRzpmkFKToWAFh4BEecGUVfoyyCAKNJBLI4twJuaY/ewAxQ6YYgrFIzgWhUEIIczzIyQQFOAKNQM8QE6fFf0DmXhKmv8z6JNRBnHBKGZUuQsMffShQwOCZJPBB3/owVcUCZig7LImdAMEB24Gpco2KlBRwi3gNFOABYkkUs0ABjTB6mNJ5SGCE4EUKsAFF7BhQ65G6aFDH38IwUgE+CIQirF8RSNPDSmkoIEhnTBBTCfQFsXAFlQg0uI9jphyDAjIuCFFuOP++VNkSqJAqwC22iABG5ZUOa8gCqScMgJH8JtfNDXEsM8Pl+yhiRIHaJGwwj0UUQQu9qCCCsWvoKCMHK1k7Gq5KKjLrshcSMBNlX00EMERcGStAAwuv1yDOkCUYsA3aMyS885FzVCCJ86kQrEDI6AgDhGHgOfn0v5wLFQeTtT/egHUDrgwdbx9BIMAAjAgwMfiSt0BcwyfGLIGGf3grHO0Q80gSQftJDOALNYU8owcU9jdKqBurNuuBFw4kITgVUIjxB+L8/HUHfjUY8E6lmgDBRo8nI35UDQ8YEAH6cTTwQ/PLHHb3a8mubcbo4wwChtsSODC9isgVftUfcWwzDBkVBAJD1r05RQNihhhBA+xNHZ6UlVgYb/9YmAhhhhfqIPW/1FBEgAHSMAKEfCAaDEgAheYFZ8w8IFfuRtPJqgSnVDwgiGxIAY3mBENcvCDDvEgCEeYEBGS8IQmPOEIU6jCD7KwhRt8IU74QcMa2vCGOMyhDnfIQ37I8Cb8sIwQFYdIxCIa8YhD/CFNgojEJjrxiZYJCAA7" align="baseline" border="0"></p><p>There are a couple of other things that I would like to implement before uploading a new release, tho. For example - I don&#39;t see a good reason why you shouldn&#39;t be able to post/publish/cross post from the preview pane. Also, <a href="http://rosscode.com/Blog/index.php">Joel Ross</a> gave me the spectacular idea of using <a href="http://newsgator.com/plugins/">existing IBlogExtension plugins</a> to make posting to blogs other than .Text or some other Metablog API enabled blog engine not only possible, but extremely easy.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: Couple of feature requests]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-07-RE-Couple-of-feature-requests</link>
            <guid>https://chris.pelatari.com/posts/2005-01-07-RE-Couple-of-feature-requests</guid>
            <pubDate>Fri, 07 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p> <strong>Couple of feature requests </strong><br><small>posted by Bob Yexley on 1/7/2005 12:02:04 PM :</small> <br>Hey nice work on the latest version. Spell checking works very nicely. There are a couple of things that I&#39;ve noticed about the application that I thought would make it nicer that I wanted to mention. Fairly simple I&#39;m pretty sure.<br><br>First off, especially with all of the different version releases you&#39;ve had lately, I&#39;ve wanted to check the &quot;About&quot; box to make sure that the correct new version was running after the new version, and I noticed that the current version isn&#39;t displayed on it. It would be great to have the current version displayed on the About box just for reference if nothing else.<br><br>I&#39;ve also noticed that when I switch to the &quot;Preview&quot; tab, that the toolbar with the &quot;Post &amp; Publish&quot; button disappears. Normally when I compose a new entry, I write it up in the editor tab, and then I check spelling (well, I will from now on anyway), and then I switch over to the preview tab to make sure everything looks OK with my stylesheets applied and all. Well, if everything looks good, I&#39;d like to be able to just click &quot;Post &amp; Publish&quot; right then and there, but since that toolbar is gone, I have to switch back to &quot;Design&quot; view to get that toolbar back to publish the entry. It seems to me like that&#39;s a fairly common toolbar, and maybe it (or it&#39;s buttons) should just be added to the standard toolbar that has the &quot;Setting&quot; button on it. At very least, it would be nice to have that one button displayed when using the &quot;Preview&quot; tab.<br><br>Thanks for the great free application though. I love it. </p></blockquote><p dir="ltr">Now, that is some great feedback. I&#39;ve got seperate use cases than what I always do and clear concise suggestions on how to implement them. These are the types of things that you as a developer don&#39;t tend to think of all the time because you are used to a certain useage scenario. I would have never thought of any of these (except maybe the about box thing. whoops :) There are of course some other things that I know the application needs - like for example validation maybe? Heh.</p><p dir="ltr">Honestly, tho, I&#39;m just glad that a few people are finding my humble little app useful. But to anybody else who is using <a href="http://PostXING.url123.com/main">PostXING</a>, I am always happy to at least consider making changes suggested on ProjectDistributor or my <a href="http://www.chrisfrazier.net/blog">blog</a>. It just makes it so much easier (and therefore likely to get implemented) with great feedback like <a href="http://yexley.net/blogs/bob/">Bob </a>gave.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Using the NetSpell plugin for PostXING.]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-06-Using-the-NetSpell-plugin-for-PostXING</link>
            <guid>https://chris.pelatari.com/posts/2005-01-06-Using-the-NetSpell-plugin-for-PostXING</guid>
            <pubDate>Thu, 06 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>With the <a href="http://PostXING.url123.com/v1.1.5005.1">latest release</a> of <a href="http://PostXING.url123.com/main">PostXING</a>, a plugin architecture has been added to allow for external extensions such as the new <a href="http://PostXING.url123.com/nsv1.0.5005.1">NetSpellPlugin</a> that adds spell checking to PostXING.</p><p>All that is required to install the plugin is to add the .dll file to the plugins subdirectory of PostXING&#39;s install directory, for me that&#39;s C:\bin\PostXING\plugins. When you start PostXING, you should see a new button in the toolbar:</p><p><img src="data:image/gif;base64,R0lGODlh9AA7ANUAABgAbW9val0ATVRUTNHu6JNEQZHR6EsAAFWKpMnb8LrU/O7usamqp5yq1aGx2vP5/tXm+crKRqjkrsXg/mxDAD1BZOr0+7vF0enpleDt/NhJM219kMXM1YqZq2yz6F6o3aWusTJnjoy+41Ndf+7RjkNDjgAAAO7uzABsrgA9ubPu6O6zaQBDjNGRQJFDAGJhUePjcLNsAEOQxcK/yAAA/5RviW2Vx1gzNDyL39GHhVdiiDZ9rdvbnP///+vr5O7u6CH5BAAAAAAALAAAAAD0ADsAAAb/QJ9w6PsZicikcslsOp/QqFRprDKq2Kx2y+16v+CwONsrm4tHs3rNbrvf8Lh8Tq+X0daxfs/v+49EPXg+doWGh4iFToJZV3+PkJF6SIxpiZeYmXaLeEaOWQ6hoqOSpaZglIOaq6ytgk2VeVoOZg8PFg8QHhunvb6AQ7GErsTFm7CdP59YtA8/txYWCh84vL/XkalVw8bd3mycjVsOtuW2EAoKOgHYpiQlBFXv8V3zWdqW3/re4VjLVeQymEsAoeAIdlpWmFjIgl49eGPs/Zi3ouEWiRPhVXSIBeM7fD+47Rvpqp8sUBwYgFgJggGDCxAOaiEhQEVEiGIkYryIMyPH/5k93y0MpoqkUVZDFiolKm6WhQxQo0KYIGJDAQ01OuI84cLDD64eSFSgYAIF14UofsRAu+CAjB8rANj0aWSevbYMCYglm9YuRLwmGu4te9ZEoKJHE18ispSpv3EQZki+IFnEBxEgcmi4geVsWrh94dE0sKDmztIGaEoQYEDeAaWB9cID63N0aRV+CdC2y/r2x8PbFAtHhMQw8MezIFy4wOGCjcsJDCAYcePFlhZlUbd4O+9EgdQ4FZoA0Br7W3k4c9vL7R287Pe1Z3//7Tjk8PvHmMTyNC5DwQkMfJCACDKEUEEACG1x23bf+dTeejUt0KB5WtGjHkTszSfahvFkCP8eSCLhJ6IbJvE3S0oMdPDCBjuEsEEDI1j3kF4HfNadhh2KxppqrKFnIYeoxacbjvME6SF9Qggz4pIkItMUKFMlkAAIHXTggAITyJSFeOO1RpuD33mmVmA3SHCAVy3IVVd6HMKllGDyuWcPl3AOaQBXIDKppxolKgPZBIAGmo4CWn6xUztVrPDZGIp2keeee/b5jxEO/CfoBFgW6kUM5yFqxFrjzQUGqGpy8SikTEo6jgMNtOqqq5p6KqsXp6I6oqpbbIDgrrwiOOuvXoATnK3ErpHMpMAm6wcVwEzh7LPQRistsycpa+212GbrB7Laduvtt+CGq+205JZr7rnopqv/7rrstuvuu/DGK+8U4ta7xbz45guFvb1w+4i+AAc8BL+n+PuHwAjnS7ApBi+b8MPwerEADwuL0XAfEGfcbhcLvBAABhWDcTEfGpecLhcLDBDACy+AHHIX3AJgBAAyz1wzrSbnTK6CHmOAAcsuv6wFsjIX/YPRYeisdLRapPyxzz+33AV2XUZCwmuhhnFotVXQXHTNN/+QgqNLly1FFh0/DXXUQWPRgkUk2GA1RC0s6sXWJmZh9N5VpNAD2WYH3gQWTg8wANSHs412j/KMJdfVWReWluRr5khj5C6gRfnQW+x9M81+4yz46ElUkTbiA1SwNtAVdtRjkHWD9lUNBDR6/wLtdNUNe1q20463n3qELjrpxOMBwwAtQ32D4ahH0LqPdNl1gEUTTe8Q5GVFL5r1lXMxct9/f1H8+Fgcn7jqPldg+AvOE8549+ulx331cAeFofx1ej+G8OKPT3wWx0ve2gzXviy8rUM2uEuPYrcCr1DEgfdzyO7gAkH4bIFb/BNb+FDhP9JpwXwDHEABtUAq3Mgva9hzINa8QhfXoHCFX8mc3bhmBBqkQHg33GD/Oii4LQTQZwQU2gW5YEO/5XAMPBwdF8z3AhEKcYhEvGEGOZhEs3XBfCN8Ig2xUEQdUrGKS/MCDLKoxbwR0YtfBKPOysiH701CjWFkox7ciEQ4Kj5NjnP0hR3viMdr7fGPgAwkD4tFyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgTEQQAAA7"></p><p>as well as a couple of entries in the plugins menu under the Tools main menu:</p><p><img src="https://chris.pelatari.com/assets/newpluginsmenu.B5cIcdDX.gif"></p><p>I really wish that was all there was to it, but unfortunately there&#39;s more that needs to be done. As I&#39;ve said before, the spell checker is pretty well useless without a good dictionary file. If you try to use the plugin straightaway you should see this:</p><p><img src="data:image/gif;base64,R0lGODlhcAF5ANUAAEyN6zNvznuw+NsMDJy95tLr5PBGRkxMlN2nX50CAmiW4PuAfy9mvq/M7lcOBaCPlW+JsAIBAZjS45hnZlRdWrbr5WEAY0WB3Pf//+vry1O3/Ors5/7TzTSm+GNmzK53AMjc9rXSlOvSlOfp48rPypzBtOP+/uyzuwAAZuXn4YplxU+Uz9LSlOrqsY2X9X3P/f//7Ozu6n9QBf/s+f/q2wBMlJPc/8SksQB3sYes4c7rs+jP+jVz1lKX+f///+vr5CH5BAAAAAAALAAAAABwAXkAAAb/QJ9wSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwuhwkNgXrNbrvf8Lh8Tq/b7/i8fs/vxxUCgAqDhIWGh4iJiouMjY6PkIMNPZSVlpeYmZqbnJ2en6ChoqOkpaannQCqqhetPK+wsbKztLW2t7i5uru4gKi/wMHCw8TFxpVsAJatrq0AFwABvNPU1dbXsb7H29zd3t/ebBfLzTzPzwHS2Ovs2Dnv8PHyOdkC4Pf4+fr7Ai5q45VeueJxYQU0BuraKVyIi54uh6+07ZtIsaLFUOLIXSBo7hxChiBDxoLYsN7FkyhTTmQF7dnGjQA4pmOAMKHIm+0gbpS1kwdJ/4kqgwodSgxAxoA80qXjiLOpO4ENfoKI6dPkJQ1EZrjo8cLHjkwmfGzt+tUb1iFliaoleuEoJZuwNi51SvchVBD0AigAAULBq5/2rvrgwICHCRhbLxTGdFgFJcU8zA6muXitZZVtAwmIXGlu3Fee64qmpZNvjr19YQHGhJVD5K4nsM7ocdbHDBBECNjmipa27bBaNYQV8lX4DAE+YvggQNuEVkqtORtHnsM5chddiTc/Lvayd2EX/Knh/BYux4+j08sieaEB39SqrVqK7ptDh8H3aXhgIMFDYwb32TdZVw1gpZ8NPtzQAwA0VYCBCxpgMMNhLgwGQFc3BABdbj1ISP+hh4gN6MMkzjX23YmlsMISQXIpJUsANIWmXnok+cQXAevJVwl9rQWIYIaUGAaDCgC09iMPPQ4WwI8XZCfEAz38F0BYKlQwpDL1UdbBf0KqwMCRPf7HAIpkhqKMKhrBYolSLs7oplTvkbSaYK7xdkKAGAIU5ZD1YVgkfoPx8CNsDLwwpHD6KdMVbicwgCV9zSWKqAcA/PgnBwCYkGiZnJrCzE5rmuemehChpkB7eMUHC1AbujZpgPlRAsKejiWJ6Y8BCpoggidcUIEPD2ypH3TDPUAepJNG6kF9lSYo7LKdRisKR65Ygt6oozoEAF9+meOeQ3POl9V+0dU2gwfZYaD/m2tONpork2FhEBaUmkLbA4KEYekbWskmy5sQ7tYr7cCa6NsDi6BWci22M0JEQLdQqRpRYJcoRpmGPUCWMWXmWMyAxh6PozFNAKxAGckmY9zDrzeQ99jJPKRMicwv0xSZYioTrDMlLn0qE4w1MZztLuESNameOyddFBsug6bUmkKPVqMtRStt9dWbZPYP1LGEGnVd84QNj45Yl212ZoC4HJq1on79NVBnxr2g3GjWTffdc+dtt9547+1334DzLfjfgwdO+OGGJ1744ogzrnjdC2YMiD8anlnT05azqfnmnHfu+eeghy766J5ps0pLq6Su+uqst+7667DHLvvstNdu//vtuOde+6c9ExTABTPNdPLwxBdv/PHIJ6/88sw3XxgPvgDww/TUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrcT7wg+/DHL//89Ndv//3457+9+9Lr7///AAygAAdIwPhNTBUFTKACF8jABjqQfNIABAIfSMEKWvCCGIRfBAUwwQx68IMgDGEFN/gMEZrwhChMIf022AoVuvCFMIwh9iKogBLK8IY4zGEGWXgBHfrwh0AcIA1bGMQiGvGI7GMhD8x3ggUY4IlQXMAJUoDEKlpRhUNc4vicaIAFePGLXBzAAkhwxTKaEYNZFN8JoujFEzTxi1AU4xnnSEcFpv8RfFz8ohv3CMY4GoCMdQykIPF3R+8tYABPbCMY4cjFOAJykJCMpPpo+IrvNXKRjYSiJg2AyAE8UpKgDOX3Crm9EyCyi6iM4wBWuUlOcnIAE/ikKGdJS+pRUovca+UEJvDKVfpylRSYQCdfOQEq1vKYsyRl9g6pyQlUoAHC/KUvJ1CCEkTTlwkoATK3Ccpbdu+JnXxAA4RAgmv6kgIlEIIEDvlLCsiSm/A8ozKvxwFWntJKQiiAOalJhF6u0gE3iKdA5+jN7bHzlwYoAAaEMIJo8nMI/kzAABJAAWOeTwQHKMAAERCBCAggfhjVaAExyoKMZi+kOERp9VS6UpM6kJL/AcilPV+Z0IUm5wEPIEE/pTlRir7Tew7oKAoqwNL/tcACEiiq+UKqVOyJwAErmF5TUfrUjkaVeyR16fWaaj2uSlWrCcyqSH8w1QOUdKxfLYBXVwg9v8R0e/5EqEKFAAObCsEAEv2lRBMAUPKZFAE1OKsARWCBCsCPqWA96QEoIAGyJtaxBThqY1sAge6JVbFoJd9aAajUsmY2rQKEKfcmylNW/qoIGMCrXns6gAhoc3wmPWoIMlpVFDSWoxGw7Q9wWwO1BlW31GtBUD1aW6Ie4AMdFYBwOxqB3la1uYLN6geGWtvGTi8DMugoBY6bXLL+1rqORQAOIFtd7HYUAoWl/x5Gs+tR7+Y2qWZ16XqTe1mmDjew8UVue6/L3hUUV70mDSlvffve6uEWuGRN71ErcGD4nvW5vVXvfc+63AjkgL3bJTB1udveBmN0uhWQQQ5+INnuFVR7eS1tAgwwHCGYIKKr3CtfH+BXjQK2pDpIL0vFS1jDTiDHhlUpdkdMYgd8lMdG3m0NUoBY4X60vmZN8oIhC2DfHrkGQKYyZD8gAIxmGbEaRe54E3xbFHw5voIl825RMNvoHsDJji0pC5IM2LGGFM7irXKc0/tjHT82z9Tj8m7HPD0exxfOKkV0fIdcZYziGQdPvfJYkfzRQVvaxG2t5PZIq+IHKGcIGHjAXv9jLOMEuJZ891VrlJlL3fvqwAFDda9QDatljFKRsLPVKJih7OboDje3tCZvgFc967Rmdc6sNu6kIwDp2FqgBL9mc3xFitKjlmDacR62nIdtZ9oe4NbppbKXYR3kaAcbwpMe7wQaC+Ftu5na3852moUdXQvkmrwTdumCP0Bk7p04e3gdNTZjaQQTCFPgCUi4qWkM227Pm7Dsji2s791V+ZqUBfbmNmLrnG1dY5urYO74Vv8KAWzrObgZ16i1tXpZKrcgmx8/AMePze1GXzzcVJW4tD8LcS3/IAU/noBakSrvmMPb49vutqoFi/F7k5ToLf/BB0oQbn9nGpfZmwDCJ/r/UCPoc9QKT7gDXis+lh9ABwmoNJVvrIAfZICaDug39Rhd5BEb2uOqVnWOI45xw95Y4nJXb2Fzjna161m4WE77Sgf/1ssCVrj9bjlK/953Je+96HgXfAUgf+kE+z2wbX87tAO/9ghTDwEUiOrk8YtjonOcxK7Hrw5ErHkvK/7uIv+7naEq1apf79/YW0DCWTsAdPbTABiw6dd7qvCgMrzsSkd2cwug3+2i3aqyNr2sc1DcnOddwMztLW63m2Z0Vw+5GYas9E2v0jqvP8wRgAB7bfvcWLfb5PVX9vgzilvoGv38EeBfvxVsu6VdZ2dqAZh9Y1V9YNVj08OA27YB+7ds/xFAfrQ1XB+FfhmFbBuGdxCoVW9nXZWXPcB3PSQQdhNlfBCVcCymfFoXdnyFTj4EaBm0WSP3WdpDgwN1etpndYOgaZsWdgS3ggondDZlAqIWdhX4UyqkX7HmQTZYcThoPU5IgDsodYbng93SPUkoUTJAAsMRcKS1YgUwBMzHVxHwfFe4hkFUgthzhglwVzBYhEIwAA7QfBVIdmy4hzrkhtdzAzBoAC84fIE4iHcYVMXEh4qYQ354PYM4h5AodnyFhjK4iJYYQ43oiJIYiWF3h2JXgWp4iaKIQploPUDXfJx4iHw1XA9gUaP4iiJUiqY4AZ44iaqoiqsIiq4Ii7zoQf+y+IcOUIuTOIzBqF2t2IvI+EG/aIIPQAHBeIjPyFwUkFPJWI07dHXlkwIl0IzOSAEV6ADBlFO7aI3k2EDLWI7oiInYmI7s2Ibr2I7wyIjvGI/0CEPnWI/4aEH3mI/8aI7z2I8AeY0/iHUBWZAj9I8GmZAMtI8K2ZD2w5AOGZHxA5ESWZHpQ5EWmZEQhJAa2ZETyZEeGZIXCZIiWZIbOZAmmZLog5GKCAEu+ZIwGZMyOZM0WZM2eZM1SY8syYcQ8B4++ZNAGZRCOZREWZREWVnxuJN72JMN0JRO+ZRQGZVSOZVUWZVWCZU5gJTwqJRsyJQN4ABfGZZgOZZiWZZkeZb/ZpmWaLmWalmWUaGV7ciVa8iUDlAAG2CXGmUCMbCXMLCXfvmXfqmXMSCYfRkDhXmYgOmXhTmYjKmXjhkDGxCZkRkDYJmVOkmS1ciUErCXkrkB08OZG5CYf+mZP0CakBmak5maoZmYkxkD2tOZkikBb3mZKAmPdAmbuJmburmbvImb17OblDmbSYmZyeiVGzACI/ADyLmczNmczvmc0Bmd0gmdGyCbljmctdmOPSkBDjCd3omcKZAC/bcCTJZREuhR3ymdKTACKbABlQmX7CiXV6iZ4Vmf9nmf+ImfgEUCGyBc/kVbSJWfAjqg9mmd8JmO8rmDdEmgDGqfksWe5VlS/yEQoA1aoeHpngRwnVtJnMiomRtgoQQaUvUpWxSAVAUAohZqoLS5hbYJAtyZnuoZUsspWw7wAL0Fo98ZnBoalxzai8aJo9ApWes5AlnFYDgwpEAanSqKnSyqnS7anUnanCmQAXU2Av55ZzKwAlEKnZSZoQeKjgk6UD2JBse5pcsZnv2XA0SaUSnwcuRpps25pBuaney4nVAKpxCKpOA5pClQAHjKnF26o/HZo7w4phJQpn+aqDAqpzxKp+m4oCgaqZJqoYH6peUYpgI1pgQgA5vaqZz6qZ4aqqA6qqJaqqR6qqYaqsI5p01apyBAALAaq7I6q7Raq7Z6q7iaq7L6DpiWSo6YGk89KTbCOqzEWqzGKqy9ao2/Ck842azO+qzQGpMrCoQqWa3hs6zW6pDYmq0Kua3capDe+q0BGa7i2o/kWq75eK7oWo/quq5MSq3uKq7tGq+DOpDC4zz4mq/6uq/82q/++q8AG7ACO7AEW7DJMxcD6TYKu7AM27AO+7CRELESO7EUW7EWe7EYm7Eau7Ec27Eei7FBAAA7"></p><p>So how do you do that? By using the ... - Configure menuitem, of course! :) Before you configure, tho, you should download the correct (for you) .dic dictionary file by either going to <a href="http://www.loresoft.com/Applications/NetSpell/default.aspx">LoreSoft&#39;s NetSpell page</a>, <a href="http://www.loresoft.com/Applications/NetSpell/Articles/246.aspx">creating your own</a>, or downloading from <a href="http://vaultpub.sourcegear.com">http://vaultpub.sourcegear.com</a> if you have <a href="http://sourcegear.com/vault/downloads.html">SourceGear&#39;s Vault Client</a> (at least version 3.0 at this time). Here&#39;s how to get the en-US.dic dictionary file from the command line:</p><p>Create a .bat file called getdic or whatever and put it either in your PATH or in SourceGear vault&#39;s install directory. Navigate to where vault.exe is located (for me it was cd C:\Program Files\SourceGear\Vault Client). Drop something like the following into the .bat file:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p>mkdir C:\tmp\vaultpub</p><p>vault get -host vaultpub.sourcegear.com -user guest -password guest -repository postxing -makewritable -destpath C:\tmp\vaultpub $/ThirdParty/dic/en-US.dic</p></blockquote><p dir="ltr">Vault should tell you if you were successful or not in downloading the file. Note that the vault command above is all on one line. I don&#39;t know if the -makewritable is necessary or not, but this is what worked for me. Remember, if you prefer to blog in a different language (or a different, erm, dialect? of English) the ones available in vaultpub and from the NetSpell component itself are:</p><p dir="ltr">de-DE.dic<br>en-AU.dic<br>en-CA.dic<br>en-GB.dic<br>en-US.dic<br>es-ES.dic<br>es-MX.dic<br>fr-FR.dic<br>it-IT.dic</p><p dir="ltr">Now that you&#39;ve downloaded the correct dictionary file, go to Tools -&gt; Plugins -&gt; ...- Configure and you&#39;ll be greeted by this simple dialog:</p><p dir="ltr"><img src="data:image/gif;base64,R0lGODlhLgFxANUAAICAgc7r5N7//2iW4Iup5DCl9j183K9rAkVBiwMDAkOOyTNvzv/UzuS8yqjF9EuJ5TJ/66/r5/nq1OivaI7O82NoyXBvZHip/U65/N7ePHfN/ezsqefncU6R732x+0aX9Iplyi9nv83d9mqv5SxgsnVFFmUAAObN+U6V9zxhsnSg7zuI+VOZ6Jjg/ytgxUZ5v8nHugBBiABrqMabtmsAZs6PP+rOimKT37q6AAAAWStq1yt04lKX+TVz1v///+vr5CH5BAAAAAAALAAAAAAuAXEAAAb/QJJQSHFUhItixeNoOgCkj5NA6hWb1OrVkSVBmqnhlzp6RqdCabOi5p6dqTGpDG1Treihfs/v+/+AgYKDhIWGh4iJioAuLoFhi0KNkX6Te0kEKZCUnJ2en6Chhk0epaanqKmqq6ytrq+wsbKztKoXHrepF7sqvb0DKgPCw8TFxsfIycrLzM3Ozw480tPU1dbX2Nna29zd3t/g4eLUKB0dD+gQDwYGPe7v8PHy8/T19vf4+fr2Ax7j/wADChxIMNyuXR2orWPXDh26BfsiSpxIsSK8fts22CjIsaPHj+IOXnhAjSG7Hg4fhLDIsmVLAjBjypxJ4KK/bBsSlOAAsqfP/58cRZKcZrKhwxAQXSpdiq9mPqfuMGLLaSFBAp5As2rdmk1oSZMojyZlSrasO6j30Eq1lnMnhxJXucqdCxRFSnRFGfYIwXfBWLOAXUJtF49wD7U3q1HlwJiDTqx0p2Hw8WPyD4IafPg4EdnnA5EGqLnz67cdu7+BU+9zaoBLjx2vb4h4cNYm28eNGVuFPC2zDwKTOVtDIeC3tMmaN3ubzKCADwY7phFPftmbAAkVRignOJ0Aj8zCt34+GHoa6h4n/aper8/pAxEiai6QLeJG7XdrpVHdrZsxXN7faTbDZA1AcE1xIKDAnB4GcsOcc9BNU9wMQ0TnoAAM6PDBC14UhP8gCjxw2KBW4+1SnjTqvcPODgYgxd6L9gwGHwH02XdfVInx0FZjVl3V2H/UZCYCAwRCgJxmKrSQnA8O+NCAhTxgUFxyKkS5pAoPPmdhZg24sEJvyXGG3JQqTMkkZTwoGaZlaW4mpQ8e/GYmZ2pq1uRlvik3JpIFlXjBiTykqCJ6LsJoaDxQLfCAA/DVBw9i1GTAn26TWpVBkD7MIMAFTn4gQAMhONfAdCCQ4FyY0lyXnZNSNmAqq89BaKGSM4y4IAWwYofrgKpCCCEJu8pKq6c/IPhACi5EYByCrzb3HLC5VrBrQObcBRZpf/nV13mHvojWYfA58Bek1Djmo4/mWoX/QzWZzUCBCE7mqRkDEFwHwgc8PDCnlNgxJ2+sAEfY5gxfSkPrDswxp8OwqjK36w60MgdxpqeCgKy8BNv7gcOZIvycwrQW/I855nx1Ug/UQIRttywfBg99Mz5qWzWSostjApeymylyDRCoxw4I4ssDC15cN4AP/X7spB6+aikNlyKHnCV0tBbQ8HMhR6wlw9h9wCW0CQbNnNQBT0zwQCiASBRYKXPbMoxQ1bhofO+QW425ual7TbsrFNdAxdN46sO91DDXN3ZVawaCZGVL0x3jDKyQONUUI11Bwk5KXjniFKuKgpINrKBsxoNvHLDmMwibqcgApW3ySdQU+jbLTtXo/44B8KlwYw/5RcqfpdjwDToELMwZoGbwJudq38kxQMIKxa/ZuDTRa4an8iRIzPXlWiqbHMHeC+gpdqlaX3qeTUKXp6var4622tIUhfI0ss9+KFQEDADPooTZbU0GcNFbNjj0JRHx4AYMCpEkOCQGfh2BBBZCoBgUAEEKQmlom4gOAztkQQWu4Fg64EEHkaUsEHxpE8+7QQh0ACIWhMEFLwhBASXRwQ0aqIbPex9e8mIAbSHFbfZTzbfq4b//6WRdWfFcZyT0vSgsESAdAI1oeoCtlAXRW+2ZWTYygMQnevGL4/AToFDTtiuuhyZojIkWwcjGNgZEjGV8R+yAaMbZYf8ERCTLox73yMc++vGPgAykIAdJyEIa8pB5NIAKLtCLHuTxh6R5JLYmSclKWvKSmMykJjfJSUFJ5S6gDKUoR0nKUprylKhMpSpXyUpRGuAFr4TlCxYQwwWEABJ8yWUI9qDLXvryl8AMpjCHScxiGpMvOCrHD5bJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb4OxmMjsQznKa85zoTKc618nOdlITR+ZwpzznSc962vOe9ITnA/DJz376858AlSdEBnCBcwT0oAhNqEIVOtCC7nOhEI2oRCdazoaig6IYzahGN/qDgapgHRwNqUhHyk+PgpSkKE2pSivKu48aYKX/MI2pTKfpUXbM9KY4hWlNX5rTnvp0ozv9qVCHCtGa9oCoSE2qP42q1KY6VaC8G0A7nkrVqppzoFI9qlW3ytVsMrWrYA0rNLHqDrGa1axYnao0N2CCHslgmROIQQCkGde5qnMDNIhAOOt61r52NKpqjSZe9fqDA7xVmjZAgF3ZOVhvJnaxfj2rR8u61rwuUwIloABiFevOxnbzsZH1a1q1KljLLvMAI+BrDawiA8wmIAaqZe0P4goXuU6gR7aNgQlkUIIRnFYBzPTsMlebgMMS9623tUoMNlDb2BZ3tjGobQCEG9qfknUB0xQuauvK1wMo4LHclWthFTCBHGgWtc3c/24O9DqBtwpXuN0lr3i9m94RgDe3c/Vuec/r2+oi9brZNW1hUytX+jLzvgEwcHu769sD9IjAcx3sBIAbXAErWAYGZqaDrWJfxdb1wgz273+jSsUAExavFPgwhZeJYBDPdwQ1OOx2xfuDGozgAJqtMGHHC1cMr7jGMu5wAFTc4xCLeKhkJS00PWtY6A55vt/1MH7Hy+AaABezEGaxBTirY2bGN75W/gGWEfzlFx8ZySRW8jPZ6la4ive4P2BrDpyL3BezmcN8FXMJfhzntio3AHCusWzvnIARyJnOTh4wdc880yRPdNGMjjQ1HR3R2/JZ0piOJqUzzemRbrrToNbop/+bCYNSm/rUqE61qlfN6la7+tWwjrWsZ03rWqM6mz3Kta53zete+/rXwA62sDWd5mjCYEnITrayl83sZjv72dCOtrSnTe1qMxsGuLa2trfN7eRUhdjCoOwzj93tcpv73OhOt7axjc0EUGaoAPj2WIsNTXKr+974zre+qc3ua7qbqPFOALj1p2Zm2nvfCE+4wtXdb2v+G97yfuaoDb7wilv84tNueDUfLtSAD1zczjw4xkdO8otrnJoc/6nH5x3ugi9T5CWPuczxffJppnytfn5uoqOZ53+uXOL0HvfMh050dNdcmjcvLWGbvFnIAvTnzpz4y4tO9apX++jRTPqSTYv/2RxDE7QIhXozpf4DmFv97GhPDtahqfU1WzjLx3UtbN8sW9q+dsi4ffJue/tbboqdmWQ3e9oHT/W1P7PtztQuhONLZijvd8D1LS973SvgbP59mYEnvObPbnhnIr6ZiifygaWcYAov2MwbLjRfJXzpa17+ry039uZnX/TON/PzXY4zDVJc4B+32PQyqHKQ82xjHHfz9ZmnvfJjbntm4n6ZTK7zk/Mb5emXOb8wvnJv82yDLTsdm8gPesiXT/6RN3+Zz+9zmxMN50PT/bkMJnSW9Uzhwdq/8s8Mf+zrXf7+V/z8P5B+AAVp4BdxUSd+pOZ/CohwACiA/mRp36R/BCd7/wtYgffWgO/WcQY4dghocLb2gSAYgiI4giQIgtkGcBsIeB0YajjlgCklgSDHgjnlbgBQgzZ4gziYgzq4gzzYgz74gzmYgpi3gjIoUwlgAUiYhEq4hEzYhE74hFAYhVLohALHchNYhD0lbFq4hVzYhcNmhTGIhWIIUGQ3hmZoT2V4hmroTmm4hm6YTm34hnIYTnE4h3bITXV4h3p4TXm4h34oTX34h4LIgfs3iIZoTYF4iH+YiIq4h4zYiHf4iJA4h5I4iW9YiZa4hpiYiWe4iZw4hp74iVgYiqIog6RYiqF2iqjYaaq4ipnWiq4oabAYi4w2i7R4ZLZ4i/6Vi7oYWkW82IuiRYTAqIZJ5kPHdIzImIzKuIzM2IzO+IzQGI3SiIwp0nJ1dI3YmI3aCCPP0I3e+I3gGI7iOI7kWI7meI7omI7CEAQAOw=="></p><p dir="ltr">Above, we said download to C:\tmp\vaultpub(\en-US.dic) so navigate there and hit OK. (side note: this is necessary because depending on where PostXING is launched from, i.e. standalone or from the <a href="http://PostXING.url123.com/plugin1.0.5004.1">BlogThisUsingPostXINGPlugin</a>, NetSpell will look in a different path (I think the Application.StartupPath) for the default dictionary based on your cultureInfo. This way, you can blog in English no matter what your cultureInfo is set to.)</p><p dir="ltr">You should now be able to spell check any Post from PostXING using either the toolbar button or the menu item.</p><p class="media">[ Currently Playing : 99 Problems - Jay-Z - The Black Album (3:54) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: I am Nerdier than Paul]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-06-RE-I-am-Nerdier-than-Paul</link>
            <guid>https://chris.pelatari.com/posts/2005-01-06-RE-I-am-Nerdier-than-Paul</guid>
            <pubDate>Thu, 06 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://weblogs.asp.net/pwilson/archive/2005/01/06/347869.aspx">I am: Not nerdy, but definitely not hip.</a></p><p><a href="http://www.wxplotter.com/ft_nq.php"><img alt="I am nerdier than 79% of all people. Are you nerdier? Click here to find out!" src="http://www.wxplotter.com/images/ft/nq.php?val=8738"></a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Extensibility Application Block - a review of an implementation.]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-06-Extensibility-Application-Block-a-review-of-an-implementation</link>
            <guid>https://chris.pelatari.com/posts/2005-01-06-Extensibility-Application-Block-a-review-of-an-implementation</guid>
            <pubDate>Thu, 06 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.iserializable.com" target="_blank" rel="noreferrer">Royo</a> asks:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p>I&#39;m interested to know whether you found my Extensibility application block useful, or if you had to make many changes to it to make it workable.</p></blockquote><p>The short answer to this question is: yes and that depends on your definition of &#39;many&#39;.</p><p>The <a href="http://weblogs.asp.net/rosherove/archive/2003/11/24/39484.aspx">EAP </a>was useful to me: without the ideas and articles supporting it, it would have taken me at <em>least</em> twice as long to implement a spell checking plugin for PostXING. That said, there were some hurdles I had to overcome in order to get it working consistently for me.</p><p>First, let me say that I wanted to mimic <a href="http://rssbandit.org">RssBandit&#39;s</a> plugin architecture because a) I have the source code handy and b) it works. RssBandit&#39;s method of loading plugins (called &quot;ServiceManager&quot;)...</p><pre><span style="c-o-l-o-r:gray;">/// &lt;summary&gt;
</span><span style="c-o-l-o-r:gray;">/// ServiceManager implements a similar algorithm described in
</span><span style="c-o-l-o-r:gray;">/// <a href="http://msdn.microsoft.com/asp.net/using/building/components/default.aspx?pull=/library/en-us/dnaspp/html/searchforplugins.asp">http://msdn.microsoft.com/asp.net/using/building/components/default.aspx?pull=/library/en-us/dnaspp/html/searchforplugins.asp</a> 
</span><span style="c-o-l-o-r:gray;">/// to find classes in assemblies that implements Syndication.Extensibility.IBlogExtension.
</span><span style="c-o-l-o-r:gray;">/// &lt;/summary&gt;</span></pre><p>Well, guess what? The author of the above article and the EAP are one and the same! Good news for me.</p><p>Okay, that said, I was unable to get the DynamicFindPluginProvider to work correctly consistently. The problem was that I was trying to load an assembly from within itself (I think - I&#39;m no reflection guru by any means) and the result was that when the application was launched standalone it would work, when it was launched from the plugin in would b0rk.</p><p>I also had to add some properties and methods to the IPlugin interface and the AppContext class in order for IPlugin to be even remotely useful to me. I found out rather quickly that I was going to need some way to configure each IPlugin implementation individually, so I &quot;borrowed&quot; that part of the contract from IBlogExtension. A couple of properties were required in my case in AppContext -</p><pre>		<span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">bool</span> _isCallingFromHostApplication = <span style="c-o-l-o-r:maroon;">true</span>;
		<span style="c-o-l-o-r:blue;">public</span> <span style="c-o-l-o-r:blue;">virtual</span> <span style="c-o-l-o-r:blue;">bool</span> IsCallingFromHostApplication{
			<span style="c-o-l-o-r:blue;">get</span>{<span style="c-o-l-o-r:blue;">return</span> _isCallingFromHostApplication;}
			<span style="c-o-l-o-r:blue;">set</span>{_isCallingFromHostApplication = value;}
		}

		<span style="c-o-l-o-r:blue;">protected</span> <span style="c-o-l-o-r:blue;">string</span> _currentEditorText = <span style="c-o-l-o-r:blue;">string</span>.Empty;
		<span style="c-o-l-o-r:blue;">public</span> <span style="c-o-l-o-r:blue;">virtual</span> <span style="c-o-l-o-r:blue;">string</span> CurrentEditorText{
			<span style="c-o-l-o-r:blue;">get</span>{ <span style="c-o-l-o-r:blue;">return</span> _currentEditorText;}
			<span style="c-o-l-o-r:blue;">set</span>{ _currentEditorText = value;}
		}</pre><p>CurrentEditorText shows up in some of Roy&#39;s articles, but not the EAP itself. I&#39;m interested in the text, but I can see that CurrentEditorText is not generic enough to be included by default. This kind of makes me think that the EAP is mis-named: it&#39;s really a foundation, or building block, whereas the <a href="http://www.microsoft.com/resources/practices/">Patterns &amp; Practices</a> Application Blocks come kind of ready-to-go OOB. That doesn&#39;t detract from its validity and usefulness - I&#39;ve just become accustomed to not having to modify an &quot;Application Block&quot; to get it working right away.</p><p><em>Anyways,</em> semantics aside, I needed these properties for dealing with the IPlugin correctly. The override of CurrentEditorText in my app-specific AppContext (called PostXINGAppContext, natch) raises an event saying that it was modified on set, and the consuming event loads the text back into the editor only if the CurrentEditorText was not set by the calling application - I thought that might end up in endless loads of text into the editor which would get rid of the usefulness of a plugin. I could be wrong, but that&#39;s what I went with, okay?😃</p><p>I found it useful to inherit my IPlugin implementation from the GenericDockablePlugin, even tho there is no UI except for the NetSpell-supplied dialogs. This way, I was able to set an icon thru the designer and have it embedded as a resource instead of including it with the install of the dll. It was just the easiest way to get from idea to implementation for me.</p><p>In summary, the EAP is great as a building block for getting plugin functionality into your windows forms app. With some minor modifications, I was able to pull functionality that was originally going to be part of the host application out into a plugin in a few hours.</p><p class="media">[ Currently Playing : Tip Your Bartender - Glassjaw - Worship &amp; Tribute (2:59) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE - MVP Again OR Here Come the "MeToo's"]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-05-RE-MVP-Again-OR-Here-Come-the-MeToos</link>
            <guid>https://chris.pelatari.com/posts/2005-01-05-RE-MVP-Again-OR-Here-Come-the-MeToos</guid>
            <pubDate>Wed, 05 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p><img height="128" alt="MVP Logo" hspace="0" src="http://aspsoft.blogs.com/jon/Logo_MVP_Small.jpg" width="128" align="right" border="0">I just found out that I got the nod for Microsoft MVP again for 2005. I was hoping that would be the case, because I really enjoyed going to the MVP Summit last year, and was looking forward to going again in 2005.</p></blockquote><p><i>[Via <a href="http://aspsoft.blogs.com/jon/2005/01/mvp_again.html">Jonathan Goodyear / angryCoder</a>]</i></p><p>So, er, me too ;) except I hope to make this year&#39;s my first MVP summit.<br>Congrats, John!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[How bad do you want spellchecking?]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-05-How-bad-do-you-want-spellchecking</link>
            <guid>https://chris.pelatari.com/posts/2005-01-05-How-bad-do-you-want-spellchecking</guid>
            <pubDate>Wed, 05 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, I&#39;ve implemented it. I figured out a way to have a user-defined dictionary location (very simple implementation), but now I&#39;m still facing the dilemma of where do I point to for the dictionaries? Like I said before, the <a href="http://www.loresoft.com/Applications/NetSpell/default.aspx">NetSpell </a>component comes with a few dictionaries by default.</p><p>OpenOffice has a project called lingucomponent that has a more <a href="http://lingucomponent.openoffice.org/spell_dic.html">exhaustive listing of dictionaries</a>, but they are not in the same format that NetSpell uses. (I even tried using the en_US dictionary. Needless to say it was useless as it stopped on every word.) However, there is an article for NetSpell about <a href="http://www.loresoft.com/Applications/NetSpell/Articles/246.aspx">creating a custom dictionary</a>, although I don&#39;t know, looking at the contents of the files together, if that will be of much help at all.</p><p>Either way, it looks like it might require a download of the NetSpell software for the included dictionaries and the dictionary build tool. What do you think?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Set your FileAccess!]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-04-Set-your-FileAccess</link>
            <guid>https://chris.pelatari.com/posts/2005-01-04-Set-your-FileAccess</guid>
            <pubDate>Tue, 04 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>When I was working on the latest release of the <a href="http://PostXING.url123.com/plugin1.0.5004.1">BlogThisUsingPostXINGPlugin</a>, I kept running into file access issues.</p><p>The whole thing was an excersize in refactoring - well, really, the whole thing WAS a refactor, since the basic functionality already existed, but I was making additions in how things were going to work.</p><p>First, I changed the XsltStream to return a FileStream or a ManifestResourceStream, based on the existence of a user-specific file:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> 		Stream XsltStream
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> 		{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 			<span style="c-o-l-o-r:blue;">get</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 			{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 				<span style="c-o-l-o-r:blue;">string</span> filePath = Path.Combine(ConfigurationPath, <span style="c-o-l-o-r:blue;">this</span>.BlogType.ToString() + <span style="c-o-l-o-r:maroon;">&quot;.xslt&quot;</span>);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 				<span style="c-o-l-o-r:blue;">if</span>(File.Exists(filePath)){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 					<span style="c-o-l-o-r:green;">//read from a file stream.
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 					FileStream fs = <span style="c-o-l-o-r:blue;">new</span> FileStream(filePath, FileMode.Open);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 					<span style="c-o-l-o-r:blue;">return</span> (Stream)fs;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 				}<span style="c-o-l-o-r:blue;">else</span>{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 					<span style="c-o-l-o-r:blue;">string</span> resourceName = <span style="c-o-l-o-r:maroon;">&quot;PostXING.Rss.BlogExtensions.Resources.&quot;</span> + <span style="c-o-l-o-r:blue;">this</span>.BlogType.ToString() + <span style="c-o-l-o-r:maroon;">&quot;.xslt&quot;</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 					<span style="c-o-l-o-r:blue;">return</span> Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 13</span> 				}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 14</span> 			}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 15</span> 		}</pre><p>Again, this part was shamelessly  modified from <a href="http://haacked.com">haacked</a> who generously gave out the source code for his BlogThisUsingWbloggarPlugin. (the configurationPath property was changed a bit to enable more than one file to go into that particular path).</p><p>Then I added a button next to each option in the config dialog that says simply &quot;Customize...&quot;. Pressing this button opens a modal form that loads up the text from the user-defined file if it exists, else from the resource stream.:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> 		<span style="c-o-l-o-r:blue;">string</span> transformPath;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 		<span style="c-o-l-o-r:blue;">public</span> CustomizeForm()
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 		{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 			<span style="c-o-l-o-r:green;">//
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 			<span style="c-o-l-o-r:green;">// Required for Windows Form Designer support
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 			<span style="c-o-l-o-r:green;">//
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 			InitializeComponent();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 		}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 		<span style="c-o-l-o-r:blue;">public</span> CustomizeForm(<span style="c-o-l-o-r:blue;">string</span> TransformToCustomize) : <span style="c-o-l-o-r:blue;">this</span>(){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 13</span> 			transformPath = Path.Combine(BlogThisUsingPostXINGPlugin.ConfigurationPath, <span style="c-o-l-o-r:blue;">string</span>.Format(<span style="c-o-l-o-r:maroon;">&quot;{0}.xslt&quot;</span>, TransformToCustomize));
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 14</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 15</span> 			<span style="c-o-l-o-r:blue;">this</span>.LoadTransform(TransformToCustomize);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 16</span> 		}	
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 17</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 18</span> 		<span style="c-o-l-o-r:blue;">private</span> <span style="c-o-l-o-r:blue;">void</span> LoadTransform(<span style="c-o-l-o-r:blue;">string</span> TransformToCustomize){			
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 19</span> 			<span style="c-o-l-o-r:blue;">string</span> resourceName = <span style="c-o-l-o-r:blue;">string</span>.Format(<span style="c-o-l-o-r:maroon;">&quot;PostXING.Rss.BlogExtensions.Resources.{0}.xslt&quot;</span>, TransformToCustomize);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 20</span> 			<span style="c-o-l-o-r:green;">//Stream resourceStream;
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 21</span> 			StreamReader sr;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 22</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 23</span> 			<span style="c-o-l-o-r:blue;">if</span>(File.Exists(transformPath)){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 24</span> 				sr = <span style="c-o-l-o-r:blue;">new</span> StreamReader(transformPath);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 25</span> 				<span style="c-o-l-o-r:blue;">this</span>.rtbTransform.Text = sr.ReadToEnd();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 26</span> 				sr.Close();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 27</span> 				
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 28</span> 			}<span style="c-o-l-o-r:blue;">else</span>{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 29</span> 				sr = <span style="c-o-l-o-r:blue;">new</span> StreamReader(ResourceStream(resourceName));
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 30</span> 				<span style="c-o-l-o-r:blue;">this</span>.rtbTransform.Text = sr.ReadToEnd();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 31</span> 				sr.Close();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 32</span> 				
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 33</span> 			}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 34</span> 		}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 35</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 36</span> 		Stream ResourceStream(<span style="c-o-l-o-r:blue;">string</span> resourceName){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 37</span> 			<span style="c-o-l-o-r:blue;">return</span> Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 38</span> 		}</pre><p>3 buttons were added to the form: Revert to Original, Apply, and Cancel. I didn&#39;t really think that I needed DialogResults, since you have to invoke the plugin via its menu every time you want to use it. Revert to Original just deletes the user-defined file. Cancel simply closes the form and does nothing. Apply does this:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> 		<span style="c-o-l-o-r:blue;">private</span> <span style="c-o-l-o-r:blue;">void</span> btnApply_Click(<span style="c-o-l-o-r:blue;">object</span> sender, System.EventArgs e) {
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> 			<span style="c-o-l-o-r:blue;">if</span>(File.Exists(transformPath)){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 				File.Delete(transformPath);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 			}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 			StreamWriter sw = <span style="c-o-l-o-r:blue;">new</span> StreamWriter(transformPath, <span style="c-o-l-o-r:maroon;">false</span>); <span style="c-o-l-o-r:green;">//doesn&#39;t release file handle?
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 			sw.Write(<span style="c-o-l-o-r:blue;">this</span>.rtbTransform.Text);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 			sw.Flush();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 			sw.Close();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 			<span style="c-o-l-o-r:blue;">this</span>.Close();
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 		}</pre><p>Notice my little note to myself? It turned out that I tried using the using statement, using File.CreateText(transformPath) (which is why the pre-step File.Delete is in there) and I kept getting &quot;Cannot access file &#39;blah&#39; because it is in use by another process.&quot; When I opened up sysinternal&#39;s process explorer and searched for the file, it said that the file handle was opened by RssBandit. grr.</p><p>All I ended up having to do was to add one argument to File.Open from the XsltStream property getter:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> 		Stream XsltStream
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> 		{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 			<span style="c-o-l-o-r:blue;">get</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 			{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 				<span style="c-o-l-o-r:blue;">string</span> filePath = Path.Combine(ConfigurationPath, <span style="c-o-l-o-r:blue;">this</span>.BlogType.ToString() + <span style="c-o-l-o-r:maroon;">&quot;.xslt&quot;</span>);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 				<span style="c-o-l-o-r:blue;">if</span>(File.Exists(filePath)){
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 					<span style="c-o-l-o-r:green;">//read from a file stream.
</span><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 					FileStream fs = <span style="c-o-l-o-r:blue;">new</span> FileStream(filePath, FileMode.Open, FileAccess.Read);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 					<span style="c-o-l-o-r:blue;">return</span> (Stream)fs;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 				}<span style="c-o-l-o-r:blue;">else</span>{
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 					<span style="c-o-l-o-r:blue;">string</span> resourceName = <span style="c-o-l-o-r:maroon;">&quot;PostXING.Rss.BlogExtensions.Resources.&quot;</span> + <span style="c-o-l-o-r:blue;">this</span>.BlogType.ToString() + <span style="c-o-l-o-r:maroon;">&quot;.xslt&quot;</span>;
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 					<span style="c-o-l-o-r:blue;">return</span> Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 13</span> 				}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 14</span> 			}
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 15</span> 		}</pre><p>And bam! the problem went away. It looks like the default for a new FileStream (sans FileAccess attribute) is FileAccess.ReadWrite. Anyways, I hope this helps someone else out there from banging their head too much.</p><p class="media">[ Currently Playing : Inertiatic ESP - Mars Volta - De-Loused In The Comatorium (4:23) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: new domain name for Aceh Aid]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-04-RE-new-domain-name-for-Aceh-Aid</link>
            <guid>https://chris.pelatari.com/posts/2005-01-04-RE-new-domain-name-for-Aceh-Aid</guid>
            <pubDate>Tue, 04 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p align="center"><br><a href="http://www.AcehAid.org"><strong></strong></a></p><p align="left">What do they need? MONEY of course to pay for the supplies going into Aceh. <a href="http://spaces.msn.com/members/susijohnston/Blog/cns!1p9unOFWMVQ3UgLkL7kGIYDA!141.entry">Macs, lots of macs and digital cameras and more</a>. </p><p align="left">An <a href="http://spaces.msn.com/members/susijohnston/Blog/cns!1p9unOFWMVQ3UgLkL7kGIYDA!175.entry">external hard drive</a> for backing up precious data. More money. Stuff. Sleep. Rest. Peace. </p><br><br><a href="http://www.AcehAid.org">http://www.AcehAid.org</a></blockquote><p><i>[Via <a href="http://www.thedatafarm.com/blog/PermaLink.aspx?guid=0c690ea5-ee2c-43a3-847a-1f2bbc4ca9bc">Julia Lerman Blog - Don&#39;t Be Iffy...</a>]</i></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New customizable version of BlogThisUsingPostXINGPlugin available]]></title>
            <link>https://chris.pelatari.com/posts/2005-01-04-New-customizable-version-of-BlogThisUsingPostXINGPlugin-available</link>
            <guid>https://chris.pelatari.com/posts/2005-01-04-New-customizable-version-of-BlogThisUsingPostXINGPlugin-available</guid>
            <pubDate>Tue, 04 Jan 2005 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This <a href="http://PostXING.url123.com/plugin1.0.5004.1">new version of the BlogThisUsingPostXINGPlugin</a> handles customizing the transform used to output into a new Post in <a href="http://PostXING.url123.com/main">PostXING</a>. For example, say I want to have the title of the post referenced in the post body. I would start off with the LinkOnly.xslt option:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> <span style="c-o-l-o-r:blue;">&lt;?</span><span style="c-o-l-o-r:maroon;">xml</span> <span style="c-o-l-o-r:red;">version</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">1.0</span>&quot; <span style="c-o-l-o-r:blue;">?&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:stylesheet</span> <span style="c-o-l-o-r:red;">version</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">1.0</span>&quot; <span style="c-o-l-o-r:red;">xmlns:xsl</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">http://www.w3.org/1999/XSL/Transform</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:output</span> <span style="c-o-l-o-r:red;">method</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">html</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:variable</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">feed-title</span>&quot; <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">/rss/channel/title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 	
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:template</span> <span style="c-o-l-o-r:red;">match</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">/</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:apply-templates</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">//item</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 	<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:template</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:template</span> <span style="c-o-l-o-r:red;">match</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">/rss/channel/item</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">html</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">title</span><span style="c-o-l-o-r:blue;">&gt;</span>RE: <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:value-of</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">title</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 13</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:choose</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:when</span> <span style="c-o-l-o-r:red;">test</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">link</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>a <span style="c-o-l-o-r:red;">href</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">{link}</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:value-of</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">$feed-title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">a</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:when</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:otherwise</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:value-of</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">$feed-title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:otherwise</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:choose</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 14</span> 		<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">html</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 15</span> 	<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:template</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 16</span> <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:stylesheet</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p>Line 13 is the key line. All I did was change the use of xsl:variable to the actual title that is context-specific in this case. So we now have:</p><pre><span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  1</span> <span style="c-o-l-o-r:blue;">&lt;?</span><span style="c-o-l-o-r:maroon;">xml</span> <span style="c-o-l-o-r:red;">version</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">1.0</span>&quot; <span style="c-o-l-o-r:blue;">?&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  2</span> <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:stylesheet</span> <span style="c-o-l-o-r:red;">version</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">1.0</span>&quot; <span style="c-o-l-o-r:red;">xmlns:xsl</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">http://www.w3.org/1999/XSL/Transform</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  3</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:output</span> <span style="c-o-l-o-r:red;">method</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">html</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  4</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:variable</span> <span style="c-o-l-o-r:red;">name</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">feed-title</span>&quot; <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">/rss/channel/title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  5</span> 	
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  6</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:template</span> <span style="c-o-l-o-r:red;">match</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">/</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  7</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:apply-templates</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">//item</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  8</span> 	<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:template</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;">  9</span> 
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 10</span> 	<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:template</span> <span style="c-o-l-o-r:red;">match</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">/rss/channel/item</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 11</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">html</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 12</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">title</span><span style="c-o-l-o-r:blue;">&gt;</span>RE: <span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:value-of</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">title</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 13</span> 		<span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:choose</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:when</span> <span style="c-o-l-o-r:red;">test</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">link</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>a <span style="c-o-l-o-r:red;">href</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">{link}</span>&quot;<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:value-of</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">a</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:when</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:otherwise</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span><span style="c-o-l-o-r:maroon;">xsl:value-of</span> <span style="c-o-l-o-r:red;">select</span>=&quot;<span style="c-o-l-o-r:dodgerblue;">title</span>&quot; /<span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:otherwise</span><span style="c-o-l-o-r:blue;">&gt;</span><span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:choose</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 14</span> 		<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">html</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 15</span> 	<span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:template</span><span style="c-o-l-o-r:blue;">&gt;</span>
<span style="c-o-l-o-r:teal;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:lightgrey;"> 16</span> <span style="c-o-l-o-r:blue;">&lt;</span>/<span style="c-o-l-o-r:maroon;">xsl:stylesheet</span><span style="c-o-l-o-r:blue;">&gt;</span></pre><p>Subtle difference, but it changes a post from this:</p><p><a href="http://weblogs.asp.net/fbouma/archive/2005/01/03/345841.aspx">Frans Bouma&#39;s blog</a></p><p>to this:</p><p><a href="http://weblogs.asp.net/fbouma/archive/2005/01/03/345841.aspx">Template Studio for LLBLGen Pro released!</a></p><p>I only left the three default options for formatting in there with the idea that most of the time, I would only want to use one of these anyways. This opens up the door for this plugin to be completely customized, to where the descriptions don&#39;t mean anything for the content of the actual transform.</p><p class="media">[ Currently Playing : Killer Is Me - Alice in Chains - Unplugged (5:23) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[IPlugin implemented.]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-31-IPlugin-implemented</link>
            <guid>https://chris.pelatari.com/posts/2004-12-31-IPlugin-implemented</guid>
            <pubDate>Fri, 31 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I ended up working out a method to load plugins - it&#39;s a hybrid of Royo&#39;s <a href="http://weblogs.asp.net/rosherove/archive/2003/11/24/39484.aspx">Extensibility Application Block</a> and the method used by <a href="http://rssbandit.org">RssBandit</a>. Now, I do have rudimentary spell checking in my dogfood version of PostXING (again :), but I&#39;m having trouble figuring out how to handle the dictionary files.</p><p>By default, <a href="http://www.loresoft.com/Applications/NetSpell/default.aspx">NetSpell</a> looks for a culture-sensitive .dic(tionary) file from the Application.StartupPath (I think - when trying to launch <a href="http://PostXING.url123.com/main">PostXING</a> from the <a href="http://PostXING.url123.com/plugin1.0.4365.1">BlogThisUsingPostXINGPlugin</a>, it complains that it cannot find the file...\bin\RssBandit\en-US.dic) I manually copied the en-US.dic file to PostXING&#39;s root folder and it works when launching the program by itself. </p><p>The thing is that you can specify which dictionary file you want to use in the component as well as where that file is located. This would be helpful in situations where your CultureInfo is set to something other than English, but you mainly post to your blog using the English language. I&#39;m thinking that I might be able to address this using something like the IBlogExtension idea of HasConfiguration or HasEditingGUI or a combination of the two. This means that this part of PostXING is gonna take a little bit longer to finish than I originally thought - I want to get it right, ya know?</p><p>Also, I don&#39;t know how I&#39;m going to handle the distribution of the dictionary files - NetSpell comes with these by default:</p><p>de-DE.dic<br>en-AU.dic<br>en-CA.dic<br>en-GB.dic<br>en-US.dic<br>es-ES.dic<br>es-MX.dic<br>fr-FR.dic<br>it-IT.dic</p><p>with a combined size of nearly 10MB. (The biggest one is de-DE at 2.1Mb). There&#39;s no way I could host all of these on <a href="http://projectdistributor.net">ProjectDistributor</a> - that would be an abuse of a great service. I am so open to ideas on how to address this one it&#39;s not even funny. The spell checker is pretty well useless without a good dictionary file to back it up. Anyways, these are the issues I&#39;m facing while trying to get this <a href="http://www.loresoft.com/Applications/NetSpell/default.aspx">great spell checking component </a>implemented as a plugin. Happy New Year!</p><p class="media">[ Currently Playing : Down in a Hole - Alice in Chains - Unplugged (5:45) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A couple of releases]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-30-A-couple-of-releases</link>
            <guid>https://chris.pelatari.com/posts/2004-12-30-A-couple-of-releases</guid>
            <pubDate>Thu, 30 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I released a <a href="http://PostXING.url123.com/v1.1.4363.1">new version of PostXING</a> , adding support for the new IBlogExtension plugin I was talking about the other day. Oh, I <a href="http://PostXING.url123.com/plugin1.0.4365.1">released the BlogThisUsingPostXING plugin</a>, too. </p><p>I think I mentioned that I got the large part of the source code for that one from <a href="http://haacked.com/">haacked</a>, but if I didn&#39;t, I am now. The source is in no way original by me, I just hacked the solution from his <a href="http://haacked.com/archive/2004/12/04/1697.aspx">improved plugin for using w.bloggar with RSS Bandit</a>. </p><p>To use the plugin, the latest version of PostXING is required - it writes out the location of PostXING so everyone knows how to play nicely together and also takes in (kind of) an html file for adding post information to PostXING on load. Sorry about that - I had no idea how to get this working before I got this great code sample from haacked. I&#39;m sure that neither one of you will mind that much, tho.</p><p class="media">[ Currently Playing : Alpha Centauri - At The Drive-In - In Casino Out (3:13) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: IBlogExtension]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-22-RE-IBlogExtension</link>
            <guid>https://chris.pelatari.com/posts/2004-12-22-RE-IBlogExtension</guid>
            <pubDate>Wed, 22 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote xmlns:xhtml="http://www.w3.org/1999/xhtml"><p xmlns="http://www.w3.org/1999/xhtml"><a href="http://yexley.net/blogs/bob/archive/2004/11/30/958.aspx">Bob wants to see some integration of RssBandit and PostXING.</a></p><p xmlns="http://www.w3.org/1999/xhtml">This was an idea I had really early on simply because a lot of the features in <a href="http://PostXING.url123.com/main">PostXING</a> were, <em>ahem, </em>borrowed from w.bloggar, and RssBandit already supports a plugin that starts w.bloggar for posting to a weblog. So, why couldn&#39;t I do something similar? </p><p xmlns="http://www.w3.org/1999/xhtml">Well, I thought that it had something to do with implementing IBlogExtension, for which I couldn&#39;t find too much documentation. Maybe it&#39;s such a simple thing to implement that only a yutz like me would need documentation. I honestly don&#39;t know and haven&#39;t looked into it too much simply because I didn&#39;t have an immediate need for it. </p><p xmlns="http://www.w3.org/1999/xhtml">Once Dare adds deleting capabilities to <a href="http://rssbandit.org/">RssBandit</a>, I have a feeling that it&#39;s going to become my default aggregator again. After that, look out for an RssBandit plugin to post using PostXING.</p><p class="media" xmlns="http://www.w3.org/1999/xhtml">[ Currently Playing : Love Life - Fatboy Slim - Halfway Between the Gutter and Stars(6:58) ]</p></blockquote><p><i>[Via <a href="http://www.chrisfrazier.net/blog/posts/638.aspx">Blue Phoenix</a>]</i></p><p>I got a rudimentary version of this working. I couldn&#39;t figure out how to download the original post into RssBandit, so I&#39;m just using my original reply to the post.</p><p>I&#39;d like to thank <a href="http://haacked.com/">Haacked</a> for providing a <a href="http://haacked.com/archive/2004/06/19/651.aspx">series </a>of <a href="http://www.rssbandit.org/docs/html/advanced/building_and_using_bandit_plugins.htm">walkthrus </a>as well as a <a href="http://haacked.com/archive/2004/12/04/1697.aspx">code download </a>for an improved version of &quot;Blog This with w.bloggar...&quot; which I basically hacked to work with PostXING. I&#39;ll probably release this closer to the new year or after the first so I can make sure that everything is working okay - the only version that is working correctly for me so far is the full version. A new version of PostXING will be necessary to make this work as well - I never thought to make sure that any application that knew or cared could find out where PostXING lived...so I made this happen with a simple text file and a call to</p><pre>System.Reflection.Assembly.GetEntryAssembly().Location;</pre><p>Also, I found the need to close off the StreamWriter that was being used to write the temp file using XslTransform b/c I was getting access is denied errors, so the code that did that now looks like so:</p><pre>	XslTransform transform = <span style="c-o-l-o-r:blue;">new</span> XslTransform();
	transform.Load(<span style="c-o-l-o-r:blue;">new</span> XmlTextReader(XsltStream), <span style="c-o-l-o-r:blue;">null</span>, <span style="c-o-l-o-r:blue;">null</span>);


	<span style="c-o-l-o-r:blue;">string</span> tempfile = Path.GetTempFileName();<span style="c-o-l-o-r:green;">//@&quot;c:\tmp\plugin\&quot; + this.BlogType.ToString() + &quot;.html&quot;;  
</span>	StreamWriter sw = <span style="c-o-l-o-r:blue;">new</span> StreamWriter(tempfile);
	transform.Transform(rssFragment, <span style="c-o-l-o-r:blue;">null</span>, sw, <span style="c-o-l-o-r:blue;">null</span>);

	sw.Close();</pre><p>So with that and a little bit of <a href="http://blogs.msdn.com/smourier/archive/2003/06/04/8265.aspx">Agility</a>, this was about a two-hour enhancement. Next I&#39;m going to look into creating (well, probably &quot;borrowing&quot;) a plugin architecture so that I can create a spell checking plugin for <a href="http://PostXING.url123.com/main">PostXING</a> without bloating the main download too much.</p><p class="media">[ Currently Playing : Burn Away - Foo Fighters - One by One (4:57) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RE: Cross-posting - A new trend?]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-20-RE-Cross-posting-A-new-trend</link>
            <guid>https://chris.pelatari.com/posts/2004-12-20-RE-Cross-posting-A-new-trend</guid>
            <pubDate>Mon, 20 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I started to make this a reply in <a href="http://weblogs.asp.net/shawnmor/archive/2004/12/17/323770.aspx#Feedback">Shawn&#39;s comments</a>, but decided it was getting too long-winded to be a comment. You get a post, Shawn. In his comments, someone suggested that he try out <a href="http://PostXING.url123.com/main">PostXING</a>, which is cool (!) but, he seems to have the wrong impression of PostXING&#39;s erm...limitations.</p><p>&gt;I did try PostXing, and it&#39;s another tool that assumes that cross-posting is against only one server.</p><p>It does? That&#39;s news to me! :)</p><p>The real limitation of the current PostXING drop is that it only expects to work with the metablog API. MT has its own API that is very similar, but not exactly the same which is bad news for an xml-rpc client. I guess I could add support for other authoring apis (ATOM is what I really have in mind - just for fun), but this is something that I do in my free time.</p><p>Add that to the fact that adding different authoring APIs would mean handling the configuration etc. differently within the app - I only ever intended to use this as a personal tool. My ideas are limited, but I&#39;m always willing to at least consider (and usually try) feature requests, so if you use PostXING or would like to, let me know what you&#39;d like to see or what you don&#39;t want to see anymore. I&#39;m pretty open to suggestions, and I&#39;ve come to the realization that most of the users of PostXING are way smarter than me anyways.</p><p>One idea that came up while all the hubbub was going on concerning the Provider Model was to use just that to make posting to different apis more transparent, but I&#39;m usually against doing something just because it&#39;s the current &quot;fad&quot;. The fact of the matter is that I&#39;ve never needed the functionality to post to different types of api&#39;s than the metablog api, so I never put in the facility to do so. I would not, however, be against adding support for this particular feature if there is really a need (okay, come on - want) for it and I had some solid implementation suggestions for doing so.</p><p class="media">[ Currently Playing : Sunset (Bird of Prey) - Fatboy Slim - Halfway Between the Gutter and the Stars(6:49) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Paul D. Murphy's Google Juice research]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-16-Paul-D-Murphys-Google-Juice-research</link>
            <guid>https://chris.pelatari.com/posts/2004-12-16-Paul-D-Murphys-Google-Juice-research</guid>
            <pubDate>Thu, 16 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Paul is trying to find out what effect blogs have on google juice. He&#39;s decided to coin the term &#39;consummate asshole&#39; &quot;because it has very little competition on the google world (and it&#39;s funny).&quot;</p><p>So, being the helpful person that I am, I decided to give him a (very!) little boost by adding the following phrase and link to a couple of my blogs:</p><p> Paul D Murphy is the <a href="http://www.blogsburg.com/consummate.asshole/">consummate asshole</a></p><p>Good Luck, Paul, you consummate asshole, you.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Southpark Me.]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-13-Southpark-Me</link>
            <guid>https://chris.pelatari.com/posts/2004-12-13-Southpark-Me</guid>
            <pubDate>Mon, 13 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://southparkstudios.com/games/create.html">South Park Me</a>:</p><p><img src="https://chris.pelatari.com/assets/south_park_me.cV79NBoO.jpg"></p><p>(which is not too far away from) Real Me:</p><p><img src="https://chris.pelatari.com/assets/12-13-04_1432.B4LyLwLW.jpg"></p><p>No, I don&#39;t work for Microsoft, but I am wearing this shirt today. I need a shave, don&#39;t I? (this picture was taken from my Motorola V400.)</p><p>: Just to be fair, here&#39;s another shirt that I wear sometimes:</p><p><img src="https://chris.pelatari.com/assets/south_park_me_openbsd.s5KapDab.jpg"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Project Distributor: the chicken AND the egg!]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-07-ProjectDistributor-the-chicken-AND-the-egg</link>
            <guid>https://chris.pelatari.com/posts/2004-12-07-ProjectDistributor-the-chicken-AND-the-egg</guid>
            <pubDate>Tue, 07 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, it looks like <a href="http://weblogs.asp.net/dneimke">Darren</a> decided to confuse the hell out of me and make his <a href="http://projectdistributor.net">Project Distributor</a> available for <a href="http://url123.com/zyz7y">download</a> at guess where? <a href="http://url123.com/zyz7y">Project Distributor</a>! Okay, maybe it&#39;s not that confusing (or maybe I just confuse too easily :)</p><p>This is great news - ever since I&#39;ve made <a href="http://PostXING.url123.com/main">PostXING</a> available for download at <a href="http://PostXING.url123.com/v1.0.4335.1">Project Distributor</a> I&#39;ve had nothing but great things to say about the service...and now I can have it on a server all my own! Cheers, Darren, for coming up with a great idea and making it available to everyone. You rock.</p><p class="media">[ Currently Playing : Two Tabs of Mescaline - Glassjaw - Worship &amp; Tribute (8:18) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Wooohooo!]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-03-Wooohooo</link>
            <guid>https://chris.pelatari.com/posts/2004-12-03-Wooohooo</guid>
            <pubDate>Fri, 03 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://weblogs.asp.net/dneimke">Darren </a>went and fixed my <a href="http://projectdistributor.net">Project Distributor </a>blunder...now you can get the latest version of <a href="http://PostXING.url123.com/v1.0.4335.1">PostXING</a> from the place it was originally released. </p><p>Thanks, Darren.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Wes, you Rock.]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-03-Wes-you-Rock</link>
            <guid>https://chris.pelatari.com/posts/2004-12-03-Wes-you-Rock</guid>
            <pubDate>Fri, 03 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Forreal. </p><p>I had been using a different, &quot;static&quot; library to do syntax highlighting before...Now, if you don&#39;t like how a certain language is configured, change it! <a href="http://puzzleware.net/codehtmler">CodeHtmler</a> is great. It gives me the option to add or modify language definitions (Generics, anyone?) IF I so desire, and it just dropped right into my app with an interface to edit the definitions already there. That&#39;s HOTT. But (in my best Lavar Burton voice) <a href="http://weblogs.asp.net/whaggard/archive/2004/12/02/274133.aspx">Don&#39;t take <em>my </em>word for it.</a></p><p>I changed two lines of code (well, <a href="http://weblogs.asp.net/whaggard/archive/2004/12/02/274133.aspx">Wes </a>did :) in PostXING and it was up and running. I&#39;m not quite ready to release the next version of <a href="http://PostXING.url123.com/main">PostXING</a> yet - I&#39;ve still got a little bit of smoke testing to do on the spellchecker, and I just want to make sure all the new goodies work before getting angry feature requests on <a href="http://projectdistributor.net">Project Distributor</a>!</p><p>So, thanks, <a href="http://weblogs.asp.net/whaggard">Wes</a>. You have made PostXING a better program.</p><p class="media">[ Currently Playing : Ape Dos Mil - Glassjaw - Worship &amp; Tribute (5:03) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Prince of Persia 2: the Warrior Within]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-02-Prince-of-Persia-2-the-Warrior-Within</link>
            <guid>https://chris.pelatari.com/posts/2004-12-02-Prince-of-Persia-2-the-Warrior-Within</guid>
            <pubDate>Thu, 02 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Damn.</p><p>That&#39;s right, I said Damn.</p><p>It looks and feels so much like the first one (which I beat about 6 or 7 times without getting tired of it) but UbiSoft did a good job of extending the story; even making the Prince look and even move like he&#39;s older. It&#39;s the little details that I&#39;m talking about - the fact that it takes him a little more effort to swing on poles and things of that nature.</p><p>I didn&#39;t seem to get very far in the game; since you go back and forth thru time you&#39;re really in the same area just in two different time frames. It did land me in the doghouse, tho, since I was only going to play for an hour or so and ended up playing like 4. Who needs sleep anyways, right? 😃</p><p>[ Currently Playing : Forty Six &amp; 2 - Tool - Aenima (6:03) ]</p><p>P.S. I intentionally misspelled a lot of words in this post to test out the spell checker of <a href="http://PostXING.url123.com/main">PostXING</a>...works pretty well, that is, if you don&#39;t mind seeing markup when you spell check 😃 I&#39;ve still gotta test it some more, but it should be ready pretty soon I hope.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Does this mean I've made it?]]></title>
            <link>https://chris.pelatari.com/posts/2004-12-01-Does-this-mean-Ive-made-it</link>
            <guid>https://chris.pelatari.com/posts/2004-12-01-Does-this-mean-Ive-made-it</guid>
            <pubDate>Wed, 01 Dec 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It took nearly two years, but it looks like I&#39;ve posted something interesting enough to show up on the <a href="http://www.larkware.com/dg2/TheDailyGrind512.html">Daily Grind</a>. </p><p>It&#39;s linked over <a href="http://weblogs.asp.net/cfrazier">there</a> as opposed to <a href="http://www.chrisfrazier.net/blog">here</a>, tho, which makes me that much happier that I can syndicate identical content to more than one place, one of said places getting a tremendously larger amount of traffic than the others.</p><p class="media">[ Currently Playing : Sideways - Citizen Cope - Shaman (4:41) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Posted too soon?]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-30-Posted-too-soon</link>
            <guid>https://chris.pelatari.com/posts/2004-11-30-Posted-too-soon</guid>
            <pubDate>Tue, 30 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It looks like I created (or rather raised an awareness to) a little snafu on <a href="http://projectdistributor.net">ProjectDistributor</a> 😕</p><p>The <a href="http://PostXING.url123.com/v1.0.4335.1">latest release </a>of <a href="http://PostXING.url123.com/main">PostXING</a> didn&#39;t upload properly, so I&#39;m putting a temporary download on my server: PostXINGv1.0.4335.1.zip</p><p> - it&#39;s fixed!</p><p>I also rolled back the release to the last one that worked as a download over at <a href="http://projectdistributor.net">ProjectDistributor.net</a>.</p><p>I&#39;ll be taking both down as soon as Darren lets me know things are well again. Sorry to both of you that care.</p><p class="media">[ Currently Playing : Star 69 - Fatboy Slim - Halfway Between the Gutter and the Stars(5:42) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[LoreSoft.com]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-30-LoreSoft</link>
            <guid>https://chris.pelatari.com/posts/2004-11-30-LoreSoft</guid>
            <pubDate>Tue, 30 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I feel like I&#39;ve hit .net developer&#39;s gold.</p><p>I was searching for a spell checking component and came across <a href="http://www.loresoft.com/default.aspx">this site </a>(with the help of <a href="http://dev4net.com/Blog/Default.aspx">Don Smith</a>). Not only is there a spell checker component there (which looks pretty good at first glance) but there are a bunch of other useful tools ranging from a Windows API file search wrapper to web access for Visual SourceSafe and Draco.NET.</p><p>Good stuff.</p><p>P.S. I&#39;m hoping to add spell checking and a couple of other items to <a href="http://PostXING.url123.com/main">PostXING</a>. If you&#39;d like to snag a copy, you can find the latest release <a href="http://PostXING.url123.com/v1.0.4335.1">here</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[IBlogExtension]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-30-IBlogExtension</link>
            <guid>https://chris.pelatari.com/posts/2004-11-30-IBlogExtension</guid>
            <pubDate>Tue, 30 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://yexley.net/blogs/bob/archive/2004/11/30/958.aspx">Bob wants to see some integration of RssBandit and PostXING.</a> This was an idea I had really early on simply because a lot of the features in <a href="http://PostXING.url123.com/main">PostXING</a> were, <em>ahem,</em> borrowed from w.bloggar, and RssBandit already supports a plugin that starts w.bloggar for posting to a weblog. So, why couldn&#39;t I do something similar?</p><p>Well, I thought that it had something to do with implementing IBlogExtension, for which I couldn&#39;t find too much documentation. Maybe it&#39;s such a simple thing to implement that only a yutz like me would need documentation. I honestly don&#39;t know and haven&#39;t looked into it too much simply because I didn&#39;t have an immediate need for it.</p><p>Once Dare adds deleting capabilities to <a href="http://rssbandit.org/">RssBandit</a>, I have a feeling that it&#39;s going to become my default aggregator again. After that, look out for an RssBandit plugin to post using PostXING.</p><p class="media">[ Currently Playing : Love Life - Fatboy Slim - Halfway Between the Gutter and Stars(6:58) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hey Scoble]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-26-Hey-Scoble</link>
            <guid>https://chris.pelatari.com/posts/2004-11-26-Hey-Scoble</guid>
            <pubDate>Fri, 26 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>By the way, <a href="http://scoble.weblogs.com">Scoble</a>, I <em>do</em> read your blog...I just can&#39;t remember everything that gets posted there! Don&#39;t you remember posting 60 - 70 items in one night before?</p><p>Thanks btw for pointing out my misinformed previous post. Hope you enjoyed your turkey-day 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Fact check first, Christopher]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-25-Fact-check-first-Christopher</link>
            <guid>https://chris.pelatari.com/posts/2004-11-25-Fact-check-first-Christopher</guid>
            <pubDate>Thu, 25 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Ouch. Looks like I should find out if a picture I post to my blog is authentic or not before posting 😒</p><blockquote><a id="Comments.ascx_CommentList__ctl2_NameLink" href="http://scoble.weblogs.com" target="_blank">Robert Scoble</a><div>This is a well-known hoax. I guess you don&#39;t read my blog. I got sucked into this one too.</div></blockquote><blockquote><a id="Comments.ascx_CommentList__ctl3_NameLink" target="_blank">Dean Harding</a><div><a href="http://www.snopes.com/inboxer/hoaxes/computer.asp" target="_new">http://www.snopes.com/inboxer/hoaxes/computer.asp</a></div></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[We've come a long way, baby.]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-24-Weve-come-a-long-way-baby</link>
            <guid>https://chris.pelatari.com/posts/2004-11-24-Weve-come-a-long-way-baby</guid>
            <pubDate>Wed, 24 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>From 1954 Popular Mechanics:</p><p><img src="https://chris.pelatari.com/assets/pic16512.Cb2ao8b5.jpg"></p><p class="media">[ Currently Playing : Low - Foo Fighters - One by One (04:28) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I've got a little pirate.]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-24-Ive-got-a-little-pirate</link>
            <guid>https://chris.pelatari.com/posts/2004-11-24-Ive-got-a-little-pirate</guid>
            <pubDate>Wed, 24 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>My son, Ethan, has started pretending to be a pirate sometimes on the weekends that he visits me. </p><p>This past weekend, he got a sticker from Kroger&#39;s and proceeded to put it over his eye - <img src="https://chris.pelatari.com/assets/11-20-04_1923.B3_D14EC.jpg"></p><p>&quot;aaah matey! wokka pank! (dat means tro u ovabord)&quot; </p><p>Ethan sure knows how to make his Daddy proud! (I think it&#39;s hilarious)</p><p>[ Currently Playing : Have It All - Foo Fighters - One by One (04:58) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Free Icons at EggHeadCafe]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-19-Free-Icons-at-EggHeadCafe</link>
            <guid>https://chris.pelatari.com/posts/2004-11-19-Free-Icons-at-EggHeadCafe</guid>
            <pubDate>Fri, 19 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I was doing my early morning googling and came across <a href="http://url123.com/ykxzh">this</a> - a set of free icons in the WinXP custom format. Really nice if you want to add that touch of candy to your apps, be they windows or webforms. There are also a set of spheres there that have a slew of different colors...That along with the FireFox extension <a href="http://url123.com/yk7qs">downTHEMall</a> made for a great 5 minutes of getting some nice starter icon sets.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[CODESNIP - Creating C# like indexers in VB.NET]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-19-CODESNIP-Creating-C-like-indexers-in-VBNET</link>
            <guid>https://chris.pelatari.com/posts/2004-11-19-CODESNIP-Creating-C-like-indexers-in-VBNET</guid>
            <pubDate>Fri, 19 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, kind of 😃 I have a collection that I want to access in C# with an indexer, the only problem is that the collection is written in VB.NET as part of a library which I need to consume and would be foolhardy to try and rewrite in C#.</p><p>It&#39;s just a mixture of attributes and keywords - but gets me from having to call</p><pre>MyCollection.get_Item(<!---->);</pre><p>to</p><pre>MyCollection[<!---->];</pre><p>Just a stylistic approach on my end to keep the readability of my C# consumer as high as possible. This is basically what I used:</p><pre><!----> System.Reflection
...
&lt;DefaultMember(<!---->)&gt; _ 
<!----> <!----> MyCollection
	<!----> System.Collections.CollectionBase

	<!----> <!----> Add(<!----> NewObj <!----> <!---->)
		List.Add(NewObj)
	<!----> <!---->

	...

	<!----> <!----> <!----> <!----> <!----> Item(<!----> Index <!----> Int32) _
		<!----> <!---->
		<!---->
			<!---->(<!---->(List.Item(Index), <!---->)
		<!----> <!---->
	<!----> <!---->

	<!----> <!----> <!----> <!----> <!----> Item(<!----> Key <!----> <!---->) _
		<!----> <!---->
		<!---->
			<!---->(GetByKey(Key))
		<!----> <!---->
	<!----> <!---->
...
<!----> <!----></pre><p>I don&#39;t know if the Default on the properties are required, but this worked for me. So I&#39;m not messing with it 😃 Hope this can help someone else out there.</p><p>[ Currently Playing : High and Dry - Radiohead - The Bends (4:05) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Bring Back KLOL!]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-19-Bring-Back-KLOL</link>
            <guid>https://chris.pelatari.com/posts/2004-11-19-Bring-Back-KLOL</guid>
            <pubDate>Fri, 19 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> <a href="http://bringbackklol.com/index.php">http://bringbackklol.com/index.php</a></p><p>  <a href="http://www.rock101.info/speakout/">http://www.rock101.info/speakout/</a><blockquote><strong>Did you wake up to Spanish music? Clear Channel has decided to make a format change at Houston expense.</strong> Rock 101 KLOL is no longer and we have another Spanish channel to go along with Houston&#39;s other 16 Spanish channels. We need to show Clear Channel that we will not just stand by while a 32-year-old station is removed from the air. </blockquote></p><p>I was devistated. I was listening to <a href="http://waltonandjohnson.com/">Walton and Johnson</a> in the morning, and all of a sudden in the afternoon I&#39;m hearing spanish music. If you live in the Houston area and give a flying flip (or hell, even if neither apply) please visit bringbackklol.com and <a href="http://bringbackklol.com/petition.php">sign the petition </a>to bring back one of the best rock stations out there. It can be done.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Happy Birthday to me]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-15-Happy-Birthday-to-me</link>
            <guid>https://chris.pelatari.com/posts/2004-11-15-Happy-Birthday-to-me</guid>
            <pubDate>Mon, 15 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m 24 today 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-11-test</link>
            <guid>https://chris.pelatari.com/posts/2004-11-11-test</guid>
            <pubDate>Thu, 11 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Sorry - sometimes it&#39;s necessary, tho 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Stupid error messages.]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-04-Stupid-error-messages</link>
            <guid>https://chris.pelatari.com/posts/2004-11-04-Stupid-error-messages</guid>
            <pubDate>Thu, 04 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I could have sworn I saw this on someone else&#39;s blog recently, but I just encountered a pretty dumb error from a hiccup on this very server.</p><p>I&#39;ve recently added a new server to our network that will ultimately be a DC (did I mention I hate network administration?) so I decided to make this server &quot;headless&quot; - only admining it from VNC or RDP. Well, when a reboot was necessary, I found a nice little message on bootup (by plugging the KVM back into this server) that said &quot;Error - Keyboard not found. Press F1 to continue or DEL to enter setup.&quot;</p><p>So...how am I supposed to do this when there is NO KEYBOARD? Heh, it was just mildly annoying - but since it was easily recoverable, I&#39;m able to laugh about it not even 30 minutes later.</p><p class="media">[ Currently Playing : Guess Who&#39;s Back feat. Jay-Z and Beanie Sigel - Scarface - The Fix (4:15) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ProjectDistributor rox your sox.]]></title>
            <link>https://chris.pelatari.com/posts/2004-11-04-ProjectDistributor-rox-your-sox</link>
            <guid>https://chris.pelatari.com/posts/2004-11-04-ProjectDistributor-rox-your-sox</guid>
            <pubDate>Thu, 04 Nov 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just can&#39;t pimp <a href="http://weblogs.asp.net/dneimke/">Darren&#39;s</a> new <a href="http://markitup.aspxconnection.com">ProjectDistributor</a> enough. Look at <a href="http://weblogs.asp.net/dneimke/archive/2004/11/04/251886.aspx">the ideas </a>this guy comes up with. Every time I chat with him, something new is coming down the pike. Let me say, not just new, but innovative, fresh...sometimes so beautifully simple that I have to think &quot;why didn&#39;t I think of that?&quot;. You know you&#39;re onto something when you make others say that.</p><p>Anyways, Thanks Darren for giving me a little space to place my snippets and for coming up with a great idea that keeps getting better.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[How I use the new "preview template" in PostXING]]></title>
            <link>https://chris.pelatari.com/posts/2004-10-28-How-I-use-the-new-preview-template-in-PostXING</link>
            <guid>https://chris.pelatari.com/posts/2004-10-28-How-I-use-the-new-preview-template-in-PostXING</guid>
            <pubDate>Thu, 28 Oct 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It starts off (defaults) using something like the following (newlines added for readability):</p><p>&lt;html&gt;<br>&lt;head&gt;&lt;link rel=&#39;stylesheet&#39; href=&#39;style.css&#39;&gt;&lt;/link&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;div id=&#39;main&#39;&gt;&lt;div class=&#39;post&#39;&gt;<br>&lt;h2&gt;&lt;a href=&#39;[Post Url]&#39;&gt;[Post Title]&lt;/a&gt;&lt;/h2&gt;<br>[Post Body]<br>&lt;/div&gt;&lt;/div&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</p><p>Basically, I just go to the actual blog (using the &#39;view blog&#39; button) and view source. The one <a href="http://www.chrisfrazier.net/blog">here</a> is currently using something that I hacked together pretty quickly from a layout that I, ahem, &#39;borrowed&#39; from <a href="http://www.aylarsolutions.com">Thomas Johansen</a>. It looks like so (again, newlines added):</p><p>&lt;HTML&gt; <br>&lt;HEAD&gt;  <br>&lt;link type=&#39;text/css&#39; rel=&#39;stylesheet&#39; href=&#39;http://www.chrisfrazier.net/blog/skins/nGalleryBlue/style.css&#39;&gt;&lt;/link&gt; <br>&lt;link rel=&quot;stylesheet&quot; href=&quot;<a href="http://www.chrisfrazier.net/blog/customcss.aspx">http://www.chrisfrazier.net/blog/customcss.aspx</a>&quot; type=&quot;text/css&quot; &gt;&lt;/HEAD&gt; <br>&lt;BODY&gt; <br>&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;mainTable&quot;&gt;<br>&lt;tr&gt;&lt;td class=&#39;contentCell&#39;&gt;<br>&lt;div id=&#39;main&#39;&gt; <br>&lt;div class=&#39;post&#39;&gt;<br>&lt;div class=&#39;news&#39;&gt;<br>&lt;div class=&#39;posttitle&#39;&gt;<br>&lt;a href=&#39;[Post Url]&#39;&gt;[Post Title]&lt;/a&gt;<br>&lt;/div&gt;<br>&lt;div class=&#39;postcontent&#39;&gt;[Post Body]&lt;/div&gt;<br>&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/BODY&gt;<br>&lt;/HTML&gt;<br></p><p>This changes the both the Preview Page and the History Explorer from looking like this: </p><p><img src="https://chris.pelatari.com/assets/fromthis.BLgx3ypB.gif"></p><p>to looking like this:</p><p><img src="https://chris.pelatari.com/assets/tothis.D5aWi84w.gif"></p><p class="media">[ Currently Playing : Myxomatosis. (Judge, Jury &amp; Ex - Radiohead - Hail To The Thief (3:52) ]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostXING Released.]]></title>
            <link>https://chris.pelatari.com/posts/2004-10-22-PostXING-Released</link>
            <guid>https://chris.pelatari.com/posts/2004-10-22-PostXING-Released</guid>
            <pubDate>Fri, 22 Oct 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I finally released my <a href="http://PostXING.url123.com/v1.0.4294.1">little home-hacked tool </a>to the wild, Thanks to <a href="http://weblogs.asp.net/dneimke">Darren </a>and his awesome <a href="http://markitup.aspxconnection.com/">Project Distributor</a>.</p><p><a href="http://PostXING.url123.com/v1.0.4294.1">PostXING </a>was originally just something that I wanted to use to see what I could successfully do in the world of <a href="http://windowsforms.net">WindowsForms</a>. I never intended to release it forreal because who needs another desktop blog editor, right? Well, I&#39;ve been successfully using it for months now, so I figured, why not share the love?</p><p>A lot of people helped me along the way, and they&#39;re indicated in the about dialog. Big shout out goes to <a href="http://scottwater.com/">ScottWater</a> for showing the way initially - a lot of the codebase was inspired by a similar tool that he wrote. Another shout out to <a href="http://weblogs.asp.net/whaggard">Wes Haggard</a> for helping me get the latest feature in - I extended his idea a little bit as I tend to do.</p><p>So if you still don&#39;t have a WYSIWYG desktop blog publishing tool, and you have .NET 1.1 on your machine, or you wanna just check it out - find it <a href="http://PostXING.url123.com/v1.0.4294.1">here</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I see ya...]]></title>
            <link>https://chris.pelatari.com/posts/2004-10-12-I-see-ya</link>
            <guid>https://chris.pelatari.com/posts/2004-10-12-I-see-ya</guid>
            <pubDate>Tue, 12 Oct 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><img src="https://chris.pelatari.com/assets/throwin-up-the-3rd.FLzDnQuV.jpg"></p><p>whut?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[How Jedi Are you?]]></title>
            <link>https://chris.pelatari.com/posts/2004-10-06-How-Jedi-Are-you</link>
            <guid>https://chris.pelatari.com/posts/2004-10-06-How-Jedi-Are-you</guid>
            <pubDate>Wed, 06 Oct 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.gaijindesign.com/lawriemalen/jedi" target="_blank"><img height="123" src="http://www.gaijindesign.com/lawriemalen/jedi/anakin.jpg" width="285" border="0"><br>:: how jedi are you? ::</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Happy Birthday, G!]]></title>
            <link>https://chris.pelatari.com/posts/2004-09-28-Happy-Birthday-G</link>
            <guid>https://chris.pelatari.com/posts/2004-09-28-Happy-Birthday-G</guid>
            <pubDate>Tue, 28 Sep 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Well, it looks like <a href="http://www.xanga.com/gino_in_a_word_ghetto">Gino&#39;</a>s <a title="Site: gino_in_a_word_ghetto&#39;s Xanga Site" href="http://www.xanga.com/item.aspx?tab=weblogs&amp;user=gino_in_a_word_ghetto&amp;uid=138312522" target="_blank">enjoying his day...</a></p><p>Glad to hear that - you deserve it you old bastard ;) Oh, and btw, I found this out b/c <a href="http://bloglines.com">bloglines </a>has a subscribe to xanga member&#39;s weblog feature...that&#39;s awesome!</p><p class="media">(( What I&#39;m listening to: No Woman, No Cry - The Fugees - The Score (4:33) ))</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[CodeSnip: Getting Currently Playing info from Windows Media Player using the blogging power toy.]]></title>
            <link>https://chris.pelatari.com/posts/2004-09-23-CodeSnip-Getting-Currently-Playing-info-from-Windows-Media-Player-using-the-blogging-power-toy</link>
            <guid>https://chris.pelatari.com/posts/2004-09-23-CodeSnip-Getting-Currently-Playing-info-from-Windows-Media-Player-using-the-blogging-power-toy</guid>
            <pubDate>Thu, 23 Sep 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I don&#39;t know whom this would benefit but someone building a blog posting tool for the desktop, but anyway here&#39;s the code that I converted from the jscript example that comes with the Windows Media Player <a href="http://download.microsoft.com/download/A/D/A/ADA9E33F-2EB2-412A-A378-38C22C89055D/creativity_wmpblogging.exe" target="_blank" rel="noreferrer">blogging</a><a href="http://www.microsoft.com/windowsxp/downloads/powertoys/wm_create.mspx" target="_blank" rel="noreferrer">powertoy</a> :</p><pre><!----> System;
<!----> Microsoft.Win32;

<!----> <!----> MediaPlayerInfo
	{

		<!----> <!----> <!----> GetCurrentlyPlayingMedia(){
			RegistryKey regKey = Registry.CurrentUser;
			regKey = regKey.OpenSubKey(<!---->);

			<!----> displayString = <!---->;

			<!----> hasMetadata = <!---->;

			<!----> trackInfo = <!---->;

			<!---->{
				trackInfo = regKey.GetValue(<!---->).ToString();

				<!---->(trackInfo.Length != 0){
					hasMetadata = <!---->;

					displayString += trackInfo + <!---->;
				}
			}<!---->{
				<!---->{
					trackInfo = <!---->;
					trackInfo = regKey.GetValue(<!---->).ToString();

					<!---->(trackInfo.Length != 0){
						hasMetadata = <!---->;

						displayString += trackInfo + <!---->;
					}
				}<!---->{}
			}

			<!---->{
				trackInfo = <!---->;
				trackInfo = regKey.GetValue(<!---->).ToString();

				<!---->(trackInfo.Length != 0){
					hasMetadata = <!---->;

					displayString += <!----> + trackInfo + <!---->;
				}
			}<!---->{}

			<!---->{
				trackInfo = <!---->;
				trackInfo = regKey.GetValue(<!---->).ToString();

				<!---->(trackInfo.Length != 0){
					hasMetadata = <!---->;

					displayString += <!----> + trackInfo;
				}
			}<!----> {}

			<!---->{
				trackInfo = <!---->;
				trackInfo = regKey.GetValue(<!---->).ToString();

				<!---->(trackInfo.Length != 0){
					hasMetadata = <!---->;

					displayString += <!----> + trackInfo;
				}
			}<!---->{}


			<!---->(!hasMetadata){
				displayString += <!---->;
			}

			displayString += <!---->;

			<!----> displayString;
		}
	}</pre><p>It could probably stand to be a bit more flexible - ie user-defined by a template like w.bloggar, but for the basics it works great! Oh yeah, and let&#39;s not forget the output:</p><div class="media">[ Currently Listening to: Rage Against The Machine - Pocket Full of Shells (03:52) ]</div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Embrace and Extend: MikeDub's IUI article]]></title>
            <link>https://chris.pelatari.com/posts/2004-09-11-Embrace-and-Extend-MikeDubs-IUI-article</link>
            <guid>https://chris.pelatari.com/posts/2004-09-11-Embrace-and-Extend-MikeDubs-IUI-article</guid>
            <pubDate>Sat, 11 Sep 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been doing a lot of that lately (embracing and extending). So I&#39;m reading thru <a href="http://www.mikedub.net/windowsformsredux/">Mike</a>&#39;s <a href="http://url123.com/a2nq7">latest article</a>, thinking how can I apply this to an application I&#39;m currently developing?</p><p>In the article, he mentions that Office 2003 uses both a deductive and inductive UI for various parts of the interface (see his article for a much better explanation than I could give you.) So I tried it out. I downloaded the code and applied something very similar to the Office example shown in the article using <a href="http://divil.co.uk/net/">Tim Dawson&#39;s </a>awesome <a href="http://divil.co.uk/net/controls/sandbar/">Sandbar </a> library.</p><p>There was a problem, though. By virtue of a vertical scrollbar, enabled, disabled, visible, or invisible, it always showed up in a space where I need those 23 pixels. It&#39;s important. I wanted to take the code that was in the example download and make sure I could remove the scrollbar without breaking things. Well, the way that the code is set up now, you&#39;ve got to have a Frame class to associate with each Page class. Period.</p><p>At first I tried subclassing the Frame class, but the VS.NET designer did not like that too much. We want to play nice with the designer always, right? Sure we do. (If you don&#39;t think so about asp.net, you will soon I&#39;m sure:) What was missing from this puzzle? Looking at the Frame class a little bit further, it became obvious: this code is begging for an interface implementation. Just taking the public methods that were exposed in the Frame class, I came up with the IFrame interface:</p><pre><!----> <!----> IFrame	{
	
	<!----> Go(Page page);

	<!----> Go(Type pageType);

	<!----> GoBack();

	<!----> GoBack(<!----> n);

	<!----> GoForward();

	<!----> GoForward(<!----> n);

	<!----> GoHome();

	<!----> PageDown();

	<!----> PageEnd();

	<!----> PageHome();

	<!----> PageUp();
}</pre><p>Then I changed the Page class&#39;s reference to its parent frame to hold an IFrame reference:</p><pre><!----> IFrame Frame{
		get{ <!----> frame;}<!---->		set{ frame = value;}
}</pre><p>Bam. That&#39;s it. I then created a class that I called StaticFrame and removed the horizontal and vertical scrollbars from it, implementing only those methods defined in the interface and those required to maintain NavigationContext. Now I&#39;ve got a great navigation story for a sidebar/taskpane type interface in my applications.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Added New Articles]]></title>
            <link>https://chris.pelatari.com/posts/2004-09-01-Added-New-Articles</link>
            <guid>https://chris.pelatari.com/posts/2004-09-01-Added-New-Articles</guid>
            <pubDate>Wed, 01 Sep 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>You can find them <a href="http://www.chrisfrazier.net/blog/posts/575.aspx">here</a> or <a href="http://weblogs.asp.net/cfrazier/articles/6143.aspx">there</a>. </p><p>One of them was really just a VB.NET version of another article that I wrote a while back that was left in the comments by Robert Sindall.</p><p>Hope someone finds them useful.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[url123.com]]></title>
            <link>https://chris.pelatari.com/posts/2004-08-17-url123com</link>
            <guid>https://chris.pelatari.com/posts/2004-08-17-url123com</guid>
            <pubDate>Tue, 17 Aug 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Okay, so I haven&#39;t posted for a while and you don&#39;t care. Established. </p><p>But you&#39;ve gotta check this out, for real. <a href="http://blackcoil.com/">Francesco Sanfilippo</a> has been putting in work on <a href="http://www.url123.com">www.url123.com</a> , an asp.net link shortening solution.</p><p>Right, there are a lot of them out there, but this makes it so easy for me to shorten a url...I don&#39;t have to have the site open or even remember the name. How do I do this? Easy - bookmarklets.</p><p>A bookmarklet is one of those things that is so simple, it&#39;s beautiful. Scenario: I&#39;m chatting with someone on msn messenger, talking about <a href="http://nunit.org">NUnit</a>. The nunit-gui comes up in the conversation, and I want to point them to <a href="http://weblogs.asp.net/jsgreenwood/archive/2004/08/16/214901.aspx">this post</a> but decide that the url is too long for the messenger output. Since I&#39;ve <a href="http://www.url123.com/Tools.aspx">already added the bookmarklet</a>, instead of this person seeing this [ <a href="http://weblogs.asp.net/jsgreenwood/archive/2004/08/16/214901.aspx">http://weblogs.asp.net/jsgreenwood/archive/2004/08/16/214901.aspx</a> ] they see this [  <a href="http://url123.com/hsz4u">http://url123.com/hsz4u</a> ]. </p><p>All I did was hit a button on my browser! That&#39;s it! nice...</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[In case you didn't know,]]></title>
            <link>https://chris.pelatari.com/posts/2004-08-10-In-case-you-didnt-know</link>
            <guid>https://chris.pelatari.com/posts/2004-08-10-In-case-you-didnt-know</guid>
            <pubDate>Tue, 10 Aug 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.ericjsmith.net/codesmith/">CodeSmith </a>r00l3z. </p><p>I recently did my semi-annual &quot;house cleaning&quot;, where instead of just getting rid of all the accumulated crap I&#39;ve got on my dev box, I repave and start over. I did this with the idea that I wouldn&#39;t install anything without needing it first. Heh, maybe I can keep my start menu down to one column this time ;).</p><p>So the need arises for <a href="http://www.ericjsmith.net/codesmith/">CodeSmith</a> - I need a custom collection, and I want to do it from VS.NET. Well, I head over to my \bin folder, and there&#39;s codesmith, waiting with a .bat file to re-register itself in VS.NET (vsnet2003_register.bat). I didn&#39;t have to reinstall, I just ran the batch file and I&#39;ve got a custom collection. Thanks, codesmith :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Where in the hell have you been?]]></title>
            <link>https://chris.pelatari.com/posts/2004-07-27-Where-in-the-hell-have-you-been</link>
            <guid>https://chris.pelatari.com/posts/2004-07-27-Where-in-the-hell-have-you-been</guid>
            <pubDate>Tue, 27 Jul 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Short answer: working.</p><p>Longer answer: I&#39;ve been learning so much lately that my brain hasn&#39;t had the rest period required to post faithfully to this here blog. Sorry about that. So what have I been learning? I&#39;ve been learning about lerp (linear interpolation) bilerp(bilinear interpolation) and slerp (shperical interpolation).</p><p>I&#39;m dipping my foot into the waters of 3d imaging, and it&#39;s not an easy thing to learn. Not always, anyways. I&#39;ve also picked up a (gasp) BSD firewall project (using <a href="http://openbsd.org">OpenBSD</a>) that has me learning not only <a href="http://openbsd.org/faq/pf/index.html">pf rules</a>, but also the *nix environment. Working without a gui is very Tao. Thanks cd and ls. </p><p>One thing that I&#39;ve noticed about this whole posting often thing is this: when I&#39;m working with <a href="http://asp.net">asp.net</a>, I tend to post more often. I guess this is because I&#39;m pretty comfortable in this area and it gives me more time to reflect on what I&#39;ve been doing. When I&#39;m learning something new, forget about it. Working on <a href="http://windowsforms.net">WinForms</a>, forget about it. So, hopefully I can get back into the swing of things and post more than once a month...:) Thanks for being patient, I appreciate that.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[THINGS YOU WISH YOU COULD SAY AT WORK]]></title>
            <link>https://chris.pelatari.com/posts/2004-07-01-THINGS-YOU-WISH-YOU-COULD-SAY-AT-WORK</link>
            <guid>https://chris.pelatari.com/posts/2004-07-01-THINGS-YOU-WISH-YOU-COULD-SAY-AT-WORK</guid>
            <pubDate>Thu, 01 Jul 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><pre>Another one of those funny emails that should be shared....<br><br>1. Ahhh...I see the fuck-up fairy has visited us again... <br><br>2. I don&#39;t know what your problem is, but I&#39;ll bet it&#39;s hard to pronounce. <br><br>3. How about never? Is never good for you? <br><br>4. I see you&#39;ve set aside this special time to humiliate yourself in public. <br><br>5. I&#39;m really easy to get along with once you people learn to worship me. <br><br>6. I&#39;ll try being nicer if you&#39;ll try being smarter. <br><br>7. I&#39;m out of my mind, but feel free to leave a message... <br><br>8. I don&#39;t work here. I&#39;m a consultant. <br><br>9. It sounds like English, but I can&#39;t understand a word you&#39;re saying. <br><br>10. I can see your point, but I still think you&#39;re full of shit. <br><br>11. I like you. You remind me of when I was young and stupid. <br><br>12. You are validating my inherent mistrust of strangers. <br><br>13. I have plenty of talent and vision. I just don&#39;t give a damn. <br><br>14. I&#39;m already visualizing the duct tape over your mouth. <br><br>15. I will always cherish the initial misconceptions I had about you. <br><br>16. Thank you. We&#39;re all refreshed and challenged by your unique point of view. <br><br>17. The fact that no one understands you doesn&#39;t mean you&#39;re an artist. <br><br>18. Any connection between your reality and mine is purely coincidental. <br><br>19. What am I? Flypaper for freaks! <br><br>20. I&#39;m not being rude. You&#39;re just insignificant. <br><br>21. It&#39;s a thankless job, but I&#39;ve got a lot of Karma to burn off. <br><br>22. Yes, I am an agent of Satan, but my duties are largely ceremonial. <br><br>23. No, my powers can only be used for good. <br><br>24. You sound reasonable... Time to up the medication. <br><br>25. Who me? I just wander from room to room. <br><br>26. And your crybaby whiny-butt opinion would be...? <br><br>27. Do I look like a people person? <br><br>28. This isn&#39;t an office. It&#39;s Hell with fluorescent lighting. <br><br>29. I started out with nothing &amp; still have most of it left. <br><br>31. You!... Off my planet! <br><br>32. Does your train of thought have a caboose? <br><br>33. Errors have been made. Others will be blamed. <br><br>34. A PBS mind in an MTV world. <br><br>35. Allow me to introduce my selves. <br><br>36. Whatever kind of look you were going for, you missed. <br><br>37. Well, this day was a total waste of makeup. <br><br>38. Not all men are annoying. Some are dead. <br><br>39. I&#39;m trying to imagine you with a personality. <br><br>40. A cubicle is just a padded cell without a door. <br><br>41. Stress is when you wake up screaming &amp; you realize you haven&#39;t fallen asleep yet. <br>42. Can I trade this job for what&#39;s behind door #1? <br><br>43. Too many freaks, not enough circuses. <br><br>44. Nice perfume. Must you marinate in it? <br><br>45. Chaos, panic, &amp; disorder - my work here is done. <br><br>46. How do I set a laser printer to stun? <br><br>47. I thought I wanted a career, turns out I just wanted the paychecks. <br><br>48. If I throw a stick, will you leave? <br><br>49. Sarcasm is just one more service we offer. </pre></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The road to enlightenment]]></title>
            <link>https://chris.pelatari.com/posts/2004-06-24-The-road-to-enlightenment</link>
            <guid>https://chris.pelatari.com/posts/2004-06-24-The-road-to-enlightenment</guid>
            <pubDate>Thu, 24 Jun 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Earlier this year I started using NUnit to see what all the fuss was about. I started on a subset of an application that I&#39;m working on, using it for the database interaction code. I figured that would be a good place to start, since I&#39;m not sure how to test UI stuff, and these were the parts handed to me when the application was in spec stage.</p><p>I took a pretty simplistic (and probably wrong by some accounts) approach - set up a database with the same structure as what would be used in the end (appended with NUnit to separate the DBs) and make my assertions on the objects returned or modified there.</p><p>So, at the suggestion of <a href="http://weblogs.asp.net/DatagridGirl">someone who digs DataGrids</a>, I picked up the TDD in MSFT.NET book by Newkirk &amp;Vorontsov. I just barely cracked chapter 2 and came across something that I did not know and did not occur to me thru running my tests (with my apologies):</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p>The function <em>Init</em> is marked with an attribute called [<em>SetUp</em>]. NUnit uses this attribute to ensure that this method is called prior to each test being run, which means that each test method gets a newly created <em>Stack</em>, instead of one modified from a previous test.</p></blockquote><p dir="ltr">Seriously? I just figured that [<em>SetUp</em>] ran once, so all I did was initialize my connection string there. This book is already pretty good, if I&#39;m able to learn something by chapter 2...I&#39;m looking forward to finishing it :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Another personal post]]></title>
            <link>https://chris.pelatari.com/posts/2004-06-22-Another-personal-post</link>
            <guid>https://chris.pelatari.com/posts/2004-06-22-Another-personal-post</guid>
            <pubDate>Tue, 22 Jun 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I had the first weekend alone with my son, Ethan, this past weekend. It was awesome! What a perfect father&#39;s day gift - being able to actually spend (at least) some of it with my son. He even &quot;got me a card&quot;. See, he&#39;s 2 1/2 so it was my mom that really got the card, but she helped him sign it and he drew some circles in it for me. 😃</p><p>There were a couple of times that he cried for his mother, but we got thru those and it was only when he was expecting something out of his normal routine. All in all, I would say that he did an excellent job considering this was the first time that he ever spent the night with me, away from his mother.</p><p>I could sit here and go on and on about the details of our weekend, but let&#39;s just leave this at it was one of the greatest experiences I&#39;ve had with him ever. I am so happy that it&#39;s finally happening!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[All quiet...]]></title>
            <link>https://chris.pelatari.com/posts/2004-06-11-All-quiet</link>
            <guid>https://chris.pelatari.com/posts/2004-06-11-All-quiet</guid>
            <pubDate>Fri, 11 Jun 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I haven&#39;t posted in a while. See, on Monday, my life changes. Exactly how, I&#39;m not sure yet.</p><p>I&#39;m going to family court to get joint custody of my son, Ethan. I haven&#39;t seen him in a few months, and I miss him terribly. Hopefully I will no longer have to wait and wonder if he&#39;s thinking about me, wondering how I am, if he misses me at all.</p><p>My son is almost three years old, and I finally get to be his Daddy. Pray for me. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Searching for Adam Sills]]></title>
            <link>https://chris.pelatari.com/posts/2004-06-04-Searching-for-Adam-Sills</link>
            <guid>https://chris.pelatari.com/posts/2004-06-04-Searching-for-Adam-Sills</guid>
            <pubDate>Fri, 04 Jun 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Hey, Adam, if you&#39;re reading this, <a href="http://www.chrisfrazier.net/blog/contact.aspx">drop me a line</a>. I can&#39;t find a way to contact you, so I guess this is the next best thing.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Starting a conversation - I want to hear your opinion.]]></title>
            <link>https://chris.pelatari.com/posts/2004-06-03-Starting-a-conversation-I-want-to-hear-your-opinion</link>
            <guid>https://chris.pelatari.com/posts/2004-06-03-Starting-a-conversation-I-want-to-hear-your-opinion</guid>
            <pubDate>Thu, 03 Jun 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I wanted to ask for your opinion. I&#39;ve been building this little wysiwyg blog-posting tool for a little bit. I call it PostXING, and I&#39;m using it right now to post this very message. It is inspired by a tool that <a href="http://scottwater.com">ScottW</a> wrote called Blogert. For the wysiwyg abilities, it uses an interface to mshtml. </p><p>Where I could, I tried to keep the default dialogs (like hyperlink, image, etc) for use in the app. So, when adding an image using the default dialog, if you&#39;re adding it from your machine you get a path like &quot;C:\myimages\img.gif&quot; when you really want something like &quot; http: / /mysite.com/img.gif &quot; (sans spaces, of course). This app has an idea of &quot;FTP sites&quot; for each blog you might have configured. So I was thinking that, provided the &quot;FTP site&quot; was configured for your blog, it would just try to upload each image found. </p><p>So far I&#39;m just thinking out loud, setting this up for you to give me your opinion if you so choose. I&#39;m trying to figure out if there are any gotchas I&#39;m not thinking of. For example, I would only want this to happen when a post is first added to begin with - this presumes that if you&#39;re updating a post, the images are already there. Fair enough, right? Also, I never plan to port this thing to Mono/Gtk# or whatever, so I could pretty much rely on finding &quot; :\ &quot; or simply <br>&quot; \ &quot; , right? And when cross-posting comes into play, how should I control things then? I mean, I have two blogs, but it makes sense to upload the images to only one of them, then replicate the new and improved html over to the cross-posted blog. Is there anything I&#39;m not thinking of here?</p><p>If you&#39;ve read this far, thanks. I&#39;m not gonna get all &quot;political&quot; with this tool. It&#39;s not trying to be &quot;better&quot; than anybody else&#39;s tool. If I ever &quot;release&quot; it, it&#39;ll be totally free (BSD-style). I started building this tool because I had an immediate need to be able to cross-post the same content to different blogs selectively. I wanted to see what I could do with windows forms by making something practical to use that didn&#39;t cost me anything but a little free time. Thanks again for reading this, and your constructive opinions are welcome.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The Tao of Programming]]></title>
            <link>https://chris.pelatari.com/posts/2004-05-27-The-Tao-of-Programming</link>
            <guid>https://chris.pelatari.com/posts/2004-05-27-The-Tao-of-Programming</guid>
            <pubDate>Thu, 27 May 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><h3 align="center">1.2</h3><p>The Tao gave birth to machine language. Machine language gave birth to the assembler. </p><p>The assembler gave birth to the compiler. Now there are ten thousand languages. </p><p>Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao. </p><p>But do not program in  if you can avoid it. </p></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[What's the point of comment spam?]]></title>
            <link>https://chris.pelatari.com/posts/2004-05-22-Whats-the-point-of-comment-spam</link>
            <guid>https://chris.pelatari.com/posts/2004-05-22-Whats-the-point-of-comment-spam</guid>
            <pubDate>Sat, 22 May 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> Especially when the links don&#39;t point anywhere? I&#39;m finding this mildly annoying, and I&#39;m sure there&#39;s some of you out there who are getting bombarded with stupid comments that have nothing to do with the post. This one was one of my favorites - I wonder which part was technically innacurate? <blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><div class="post"><div class="postcontent">I just made it to Redmond. Big thanks to Jim Ross, MVP for giving me a ride to my hotel. gotta go! </div><div class="itemdesc">posted on Monday, July 14, 2003 6:28 PM </div></div><div class="seperator"> </div><div class="post"><a name="feedback"></a><div class="moreinfo"><a name="feedback"></a><div class="moreinfotitle"><a name="feedback">Comments </a></div><a name="feedback"></a><div class="comments"><a name="feedback"></a><div class="comment"><a name="feedback"></a><div class="comment_title"><a name="feedback"></a># <a name="137974"></a>re: </div><div class="comment_author">Danny Dunne (unlinked - no more google juice for you!)</div><div class="comment_content">My mate saw this and I found some technical innacuracies with the subect matter</div></div></div></div></div></blockquote></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Office 2003 Faces]]></title>
            <link>https://chris.pelatari.com/posts/2004-05-13-Office-2003-Faces</link>
            <guid>https://chris.pelatari.com/posts/2004-05-13-Office-2003-Faces</guid>
            <pubDate>Thu, 13 May 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I thought I linked to this before, but I guess I was wrong.</p><p>Here&#39;s some google juice for those <a href="http://members.chello.nl/keepitcool/Faces.html">Office 2003 Faces</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Okay, That was pretty cool.]]></title>
            <link>https://chris.pelatari.com/posts/2004-05-11-Okay-That-was-pretty-cool</link>
            <guid>https://chris.pelatari.com/posts/2004-05-11-Okay-That-was-pretty-cool</guid>
            <pubDate>Tue, 11 May 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p><a href="http://www.aisto.com/Roeder/Frontier/Default.aspx?PermaLink=23">.NET Reflector 4.0.1.0</a></p><p>Click: Help | Check for Updates | Yes. </p></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[er...maybe I DO need to get out more often.]]></title>
            <link>https://chris.pelatari.com/posts/2004-05-01-er-maybe-I-DO-need-to-get-out-more-often</link>
            <guid>https://chris.pelatari.com/posts/2004-05-01-er-maybe-I-DO-need-to-get-out-more-often</guid>
            <pubDate>Sat, 01 May 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Am I the last one to notice a <a href="http://radio.weblogs.com/0001011/">certain Microsoft Blogger&#39;s</a> mug at the top of <a href="http://www.weblogs.com">www.weblogs.com</a> ?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I can ping everything now.]]></title>
            <link>https://chris.pelatari.com/posts/2004-05-01-I-can-ping-everything-now</link>
            <guid>https://chris.pelatari.com/posts/2004-05-01-I-can-ping-everything-now</guid>
            <pubDate>Sat, 01 May 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Okay, not everything, but at least <a href="http://www.weblogs.com">www.weblogs.com</a> and <a href="http://blo.gs">blo.gs</a>.</p><p>I already had some of the code in place, but then I came across <a href="http://www.cookcomputing.com/blog/archives/000223.html">an example by Charles Cook</a>, mr. <a href="http://xml-rpc.net/">xml-rpc.net </a>hisself, and decided to hack it a little bit. Pretty simple stuff, but this post will tell me if it works :) </p><p>/me:crosses fingers</p><p></p><p>So it looks like it &quot;kinda&quot; worked for weblogs.com - since my blog engine, .Text pings weblogs.com itself, I got a nice little message from weblogs.com saying I should get out more and enjoy life for pinging twice in a row. Well, my friends, it&#39;s raining today. blo.gs came back saying that the server returned invalid xml.</p><p>Oh well, guess I&#39;ll try again on Monday :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Links for Monte Carlo Simulations]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-30-Links-for-Monte-Carlo-Simulations</link>
            <guid>https://chris.pelatari.com/posts/2004-04-30-Links-for-Monte-Carlo-Simulations</guid>
            <pubDate>Fri, 30 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> <a href="http://polymer.bu.edu/java/java/montepi/MontePi.html">http://polymer.bu.edu/java/java/montepi/MontePi.html</a> </p><p><a href="http://csep1.phy.ornl.gov/CSEP/MC/MC.html">Introduction to Monte Carlo Methods <i>(online textbook)</i></a></p><p> <a href="http://www.cooper.edu/engineering/chemechem/monte.html">Molecular Monte Carlo HomePage</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Achooo!]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-30-Achooo</link>
            <guid>https://chris.pelatari.com/posts/2004-04-30-Achooo</guid>
            <pubDate>Fri, 30 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> <em>&lt;mumble&gt;</em>viral marketing...<em>&lt;/mumble&gt; </em>:) <blockquote><strong>FREE <a href="http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&amp;url=http%3a%2f%2fwww.xtras.net%2fxdn">XDN</a> Professional for .NET Bloggers during May 2004</strong><br><em><a href="http://blogs.xtras.net/mikes/">Mike Schinkel</a>, president of <a href="http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&amp;url=http%3a%2f%2fwww.xtras.net%2f">Xtras.Net</a>, made <a href="http://blogs.xtras.net/mikes/PermaLink,guid,2650d93d-0994-4f74-ae52-900173d03ebd.aspx">an offer</a> on his <a href="http://blogs.xtras.net/mikes/">personal blog</a> of a free <a href="http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&amp;url=http%3a%2f%2fwww.xtras.net%2fxdn">XDN</a> Professional membership (</em><a href="http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&amp;url=http%3a%2f%2fwww.xtras.net%2fxdn"><em>http://www.xtras.net/xdn</em></a><em>) during the month of May 2004 for anyone that blogs about .NET frequently. If you are a .NET blogger, see <a href="http://blogs.xtras.net/mikes/PermaLink,guid,2650d93d-0994-4f74-ae52-900173d03ebd.aspx">Mike&#39;s post</a> for how to get your free <a href="http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&amp;url=http%3a%2f%2fwww.xtras.net%2fxdn">XDN</a> membership.</em></blockquote></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[holla!]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-27-holla</link>
            <guid>https://chris.pelatari.com/posts/2004-04-27-holla</guid>
            <pubDate>Tue, 27 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><img alt="Holla!" hspace="0" src="https://chris.pelatari.com/assets/holla_geek_pr.C40s_piq.jpg" align="baseline" border="0"></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[HtmlComponent]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-21-HtmlComponent</link>
            <guid>https://chris.pelatari.com/posts/2004-04-21-HtmlComponent</guid>
            <pubDate>Wed, 21 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve needed this link ( <a href="http://www.nikhilk.net/Entry.aspx?id=11">http://www.nikhilk.net/Entry.aspx?id=11</a> ) a few times, so I thought I&#39;d give it a little google juice so I could find it easier next time.</p><p>The link is to a widget written by Nikhil Kothari, I&#39;m using it in one of my apps currently, and it&#39;s really great. Included with a little agility ( <a href="http://blogs.msdn.com/smourier/archive/2003/06/04/8265.aspx">.NET Html Agility Pack: How to use malformed HTML just like it was well-formed XML...</a> ), this is a tight little package for editing html in Windows Forms.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Freakin a(tof)!]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-09-Freakin-atof</link>
            <guid>https://chris.pelatari.com/posts/2004-04-09-Freakin-atof</guid>
            <pubDate>Fri, 09 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I had some very humble console app beginnings in C++. Ya know, &quot;cash register&quot; dos-like programs, completely keyboard driven.</p><p>However, my beginnings had nothing to do with converting strings to and from floats. I spent a better part of today wondering why atof would not return anything but a 0.000000 from a floating-point string. My platform is Windows XP - is it clear yet? If nothing else than for my own personal reference, in MFC it could possibly be better to use _wtof().</p><p>Goodbye first half of Friday.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Imitation vs. Innovation]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-08-Imitation-vs-Innovation</link>
            <guid>https://chris.pelatari.com/posts/2004-04-08-Imitation-vs-Innovation</guid>
            <pubDate>Thu, 08 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m ashamed of myself. </p><p>I finished my first windows forms project a few months ago - it&#39;s an internal project that will never be released to the public...but that doesn&#39;t give me the right to let it suck.</p><p>It&#39;s the interface. I wasn&#39;t sure what the correct way to do things was, even going so far as to send a note <a href="http://www.chrisfrazier.net/blog/posts/184.aspx">to the windows forms team</a>. The program is useable, but only just. There are a number of user interface inconsistencies that just should not show up in a program, in-house or commercial.</p><p>But last night I had an epiphany. I said to myself, &quot;Self, what is so different about this search program than some other, more useable interfaces?&quot; For that matter, why should I even have to look to windows forms for inspiration? See where I&#39;m going? </p><p>It hit me like a ton of bricks. <a href="http://www.google.com">google</a>. The interface on their first page is so dirt simple, anyone can use it. If you need to get more options, you click on &quot;Advanced Search Options&quot; and you&#39;re cooking with gasoline. See, this UI needs to be simple to be effective. I was so busy trying to find out what I &quot;can&quot; and &quot;cannot&quot; do in the windows forms area, that I didn&#39;t stop to think what I &quot;should&quot; do. My bad :).</p><p>I&#39;m pumped. How often is it that you get to redeem yourself on a past - let&#39;s face it - failure? What would you suggest? What search interfaces seem the most useful and intuitive to you?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hell freezes over]]></title>
            <link>https://chris.pelatari.com/posts/2004-04-03-Hell-freezes-over</link>
            <guid>https://chris.pelatari.com/posts/2004-04-03-Hell-freezes-over</guid>
            <pubDate>Sat, 03 Apr 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I thought this may be useful in the future... :) </p><p><img src="https://chris.pelatari.com/assets/hellfreezesover.CSZWOQ2Q.jpg"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Madrid]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-29-Madrid</link>
            <guid>https://chris.pelatari.com/posts/2004-03-29-Madrid</guid>
            <pubDate>Mon, 29 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>My High School friend Aleida has been living in Spain for a while now. She sends emails every now and then just to say how things are going - I hope she doesn&#39;t mind, I found these words...well, you&#39;ll see.</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p>The bombings in Madrid were the first to put a face on my &quot;false sense of security.&quot; I still have no words to put to this tragedy. Painfull just doesn&#39;t reach deep enough. March 11th unfolded much like my September 11th. Instantly I felt a painful aching that this world is turning into a sega game. It&#39;s so easy to destroy and move on. This doesn&#39;t exclude any country or state I have lived in. More and more I&#39;ve seen just how fragile and precious life is, or at least should be.</p><p>The demonstrations following the bombings were by far the most charging, inspiring, and chilling I have ever cooperated in. 1.5 million people were marching in Barcelona. It was the biggest demonstration in Catalunya ever. Never before has the saying, &quot;silence is deafening,&quot; been so true. At a time when most people would sit at home and think of trying to be safe, trying to collect their thoughts and things, when in the end, being at home, saying nothing...living life unmotivated to change our future.....has no effect. Instead we marched the next day. We collected ourselves in masses, a prime opportunity for another attack is what most people would think. But instead of letting that terror hold us back we raised our hands to stop the war. We chanted. We were silent. And if anything it changed me. I am so glad my friend Jamie was with me during that time. I can&#39;t imagine experiencing that alone.</p></blockquote><p>My thoughts and prayers are with you Aleida. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[How did I format that code?]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-24-How-did-I-format-that-code</link>
            <guid>https://chris.pelatari.com/posts/2004-03-24-How-did-I-format-that-code</guid>
            <pubDate>Wed, 24 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://blog.zigamorph.com">Nick Berardi</a> asks:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p></p></blockquote><p>It was pretty easy, I used some code that I modified from the original <a href="http://squishyweb.com/ware/products.asp?q=squishysyntax">SquishySyntaxHighlighter </a>component written by <a href="http://www.surrealization.com/">Adam Sills</a>. The original code uses lots of [span style=] tags, and even uses javascript to collapse/expand #regions if you&#39;re using code written from Visual Studio.NET. I modified it to use mostly [font] tags and 86&#39;ed the javascript, so it would show up in an aggregator better.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Drag and Drop Urls in Windows Forms]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-24-Drag-and-Drop-Urls-in-Windows-Forms</link>
            <guid>https://chris.pelatari.com/posts/2004-03-24-Drag-and-Drop-Urls-in-Windows-Forms</guid>
            <pubDate>Wed, 24 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I wanted to allow for this, right? What if I find something on the net that just begs me to post it, and I want to use the url as the source for my post? Well, it&#39;s insanely easy...but you still have to wire it up a little bit. From the article I found (using google, of course), I changed the source code to this:</p><p><pre style="c-o-l-o-r:#000000;"><br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">1</span>		<!----> <!----> txtUrl_DragEnter(<!----> sender, System.Windows.Forms.DragEventArgs e) {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">2</span>			<!---->(e.Data.GetDataPresent(DataFormats.Text)){
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">3</span>				e.Effect = DragDropEffects.All;
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">4</span>			}
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">5</span>		}
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">6</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">7</span>		<!----> <!----> txtUrl_DragDrop(<!----> sender, System.Windows.Forms.DragEventArgs e) {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">8</span>			<!---->.txtUrl.Text = e.Data.GetData(DataFormats.Text).ToString();
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">9</span>		}</pre></p><p>where txtUrl is the url I want to use as a source for my post. Set AllowDrop = true in the designer, and you&#39;re good to go.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[This sucks.]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-22-This-sucks</link>
            <guid>https://chris.pelatari.com/posts/2004-03-22-This-sucks</guid>
            <pubDate>Mon, 22 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.xanga.com/item.aspx?user=Gino_in_a_word_GHETTO&amp;tab=weblogs&amp;uid=73175147">My cousin finally got a weblog</a> but I can&#39;t subsribe to it! </p><p>I sent these people an email asking them to at least include permalinks and a <em>public</em> rss feed. You have to join the site to do anything, even sign a <strong>guest</strong>book. </p><p>I wasted a good part of an hour trying to find somewhere on the site that I didn&#39;t have to sign in to, and ended up sending the email to <em>abuse.</em> oops. </p><p>So am I wrong to want permalinks and an rss feed? Or should I tell my cousin to choose another provider?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[my first desktop cross-post]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-20-my-first-desktop-cross-post</link>
            <guid>https://chris.pelatari.com/posts/2004-03-20-my-first-desktop-cross-post</guid>
            <pubDate>Sat, 20 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>that&#39;s a little upsetting 😦</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[last try I promise.]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-20-last-try-I-promise</link>
            <guid>https://chris.pelatari.com/posts/2004-03-20-last-try-I-promise</guid>
            <pubDate>Sat, 20 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Sorry ScottW.</p><p>Let&#39;s hope the third time is the charm.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I feel ya.]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-19-I-feel-ya</link>
            <guid>https://chris.pelatari.com/posts/2004-03-19-I-feel-ya</guid>
            <pubDate>Fri, 19 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=5db4a0c3-4cb8-4bfa-be33-0da2dbe09d41">Big Time</a>. I&#39;ve even talked about it before.</p><p>I&#39;m really thankful that Tina listens to the boring .NET stuff I talk about - she even listens to me talk about the domain (O&amp;G Exploration) which is decidedly boring-er than software, even to a layman.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[What do you want from WinForms?]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-17-What-do-you-want-from-WinForms</link>
            <guid>https://chris.pelatari.com/posts/2004-03-17-What-do-you-want-from-WinForms</guid>
            <pubDate>Wed, 17 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.3deurope.com/Blog/Permalink.aspx?bid=bbce4047-e8f8-468b-b8db-1256869be087" target="_blank">Like to hear my feedback</a>? I&#39;d like a file dialog that lets me select more than 200 files at a time. With the people and companies I work with, it is a necessity. We deal with lots of files.</p><p>Thanks!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[That's what I'm talkin bout!]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-17-Thats-what-Im-talkin-bout</link>
            <guid>https://chris.pelatari.com/posts/2004-03-17-Thats-what-Im-talkin-bout</guid>
            <pubDate>Wed, 17 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.3deurope.com/Blog/default.aspx" target="_blank">Julien Ellie</a>, you rock. In response to all the WinForms hubub yesterday, I asked for a higher limit on the file selection dialog (you can only select about 200 ATM). Julien said in my comments:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p>Well, I see that a KB article (820631) says this behavior is by design so I don&#39;t know how much freedom we have here. You&#39;ll understand that I can&#39;t promise anything, I am just a dev, but I&#39;ll make sure to look into it and ask questions about this. Thanks!</p></blockquote><p dir="ltr">That is so slick. Julien, you may be just a dev, but that my friend is the correct attitude to have about it. </p><p dir="ltr">In the meantime, the only workaround I&#39;ve found is enabling drag n drop onto a listbox for file selection from explorer. [edit]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I had to blog this.]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-16-I-had-to-blog-this</link>
            <guid>https://chris.pelatari.com/posts/2004-03-16-I-had-to-blog-this</guid>
            <pubDate>Tue, 16 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been using <a href="http://www.mozilla.org/products/firefox">Mozilla FireFox </a>as my default browser for a couple of weeks. I love it - for the most part. A lot of people don&#39;t design for standards, though. They design for what is <em>the</em>  standard, ie IE. Therefore, a lot of sites that I may browse from time to time really look horrible in mozilla, and I find myself opening IE and dragging a link there just to make sure my eyes haven&#39;t permanently squinted.</p><p><a href="http://ieview.mozdev.org/">Those Days Are Over</a>. Meet IEView, a “brain-dead simple” plugin for FireFox, but so effective I just know I&#39;ll use this every day. From the site:</p><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><p> The ieview plugin is a simple Mozilla and <a href="http://www.mozilla.org/products/firefox/">Mozilla Firefox</a> extension (for Microsoft Windows systems), which allows the current page or a selected link to be opened in Internet Explorer. I use Mozilla 99.99% of the time, but there are those moments -- particularly when testing new pages, or when viewing that rare IE-only page that&#39;s actually interesting -- when I need to see what things look like in IE. </p></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Movin on up...]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-14-Movin-on-up</link>
            <guid>https://chris.pelatari.com/posts/2004-03-14-Movin-on-up</guid>
            <pubDate>Sun, 14 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Tina and I just finished moving the last of our stuff from the old apartment to the new one.</p><p>We&#39;ve almost got everything unpacked - I like it here. Thankfully we got most everything moved last night, so today was just a few things we carried by hand. </p><p>Yeah, we moved about 50 yards. The people in the apartment above the last place had a washer leak, and we bore most of the consequenses. Half of the walls in our bedroom (the washer &amp; dryer connections are in the closet) were brown from the leak. So, rather than force us to live in a mold museum, the apartment management moved us to a different apartment in the same complex. As if you cared. :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Public Apology]]></title>
            <link>https://chris.pelatari.com/posts/2004-03-11-Public-Apology</link>
            <guid>https://chris.pelatari.com/posts/2004-03-11-Public-Apology</guid>
            <pubDate>Thu, 11 Mar 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m sorry, reader. </p><p>I haven&#39;t posted to this thing in almost 2 months, and I&#39;m sure that both of you are quite upset at me. So what&#39;s been going on with me lately? Let&#39;s see...</p><p>I started a little side project for posting to my blog from my desktop with a wysiwyg editor. I decided to stop working on it a week or two ago. Why? Well, there are a few tools out there already that let you do this very well, so I pulled resources on it for unoriginality reasons. You still want a wysiwyg editor? Try <a href="http://www.blogjet.com">BlogJet</a>. This is the one that made me say “it&#39;s been done”. There is no way that I could dedicate the time to make my little tool do anything super-cool that would make it a viable alternative, and it looks like no one but me wants to post to more than one blog at a time. Shame.</p><p>Other than that, I&#39;ve been working hard at the day job. “Smart Clients”. That&#39;s taken a lot of my time - I ain&#39;t no WinForms programmer :).</p><p>So, thank both of you for staying subscribed to me. I appreciate it, and I&#39;ll do my best to keep the content coming to you, desktop publishing tool or not. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The internet is shit.]]></title>
            <link>https://chris.pelatari.com/posts/2004-01-23-The-internet-is-shit</link>
            <guid>https://chris.pelatari.com/posts/2004-01-23-The-internet-is-shit</guid>
            <pubDate>Fri, 23 Jan 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>&quot;<a href="http://www.internetisshit.org" target="_blank">4 of 11....Fiction is self-perpetuating</a>.&quot;</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[It's coming...]]></title>
            <link>https://chris.pelatari.com/posts/2004-01-23-Its-coming</link>
            <guid>https://chris.pelatari.com/posts/2004-01-23-Its-coming</guid>
            <pubDate>Fri, 23 Jan 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><img src="https://chris.pelatari.com/assets/SyntaxHighlighting1.CA42sN3A.gif" width="285" height="256" alt="" border="0"></p><p>BTW, this <b>is</b> <a href="http://blogjet.com/faq/#3">yet another <i>code-when-I-have-a-free-time</i> program</a> :P </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Guess who's also an MVP?]]></title>
            <link>https://chris.pelatari.com/posts/2004-01-21-Guess-whos-also-an-MVP</link>
            <guid>https://chris.pelatari.com/posts/2004-01-21-Guess-whos-also-an-MVP</guid>
            <pubDate>Wed, 21 Jan 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Yours truly! (that would be me) 😃</p><p>Congratulations to everyone else who earned this honor.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Come back to ASP.NET for the first time.]]></title>
            <link>https://chris.pelatari.com/posts/2004-01-15-Come-back-to-ASPNET-for-the-first-time</link>
            <guid>https://chris.pelatari.com/posts/2004-01-15-Come-back-to-ASPNET-for-the-first-time</guid>
            <pubDate>Thu, 15 Jan 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Today I had to bring up a previous project that I had done in asp.net and make sure that it would work well if installed to an end-user&#39;s machine for beta testing.</p><p>For the past several months, I&#39;ve been doing development for in-house applications using WinForms, so it took an hour or two to get back into the asp.net groove. Once I said &quot;oh yeah&quot; a few times tho, I&#39;ve got to say - I miss it. I even dusted off some old javascript skills (thanks to a <a href="http://www.julialermaninc.com/blog/PermaLink.aspx?guid=8299c061-1b16-4d1d-820a-40011c5e6c3b" target="_blank">little help from Julie</a>) and after updating one stored procedure to work with some new functionality, I&#39;ve got a completely working test deployment in as close as an environment to the target as I could muster.</p><p>On that note - be careful using .msi technology and then trying to xcopy an updated .dll to the \bin of your web app in XP. Apparently, it won&#39;t let asp.net create an appdomain and you&#39;ll get the dreaded &quot;Server Application Unavailable&quot; error. Heh. Didn&#39;t see that one coming - when I test deployed to a Win2k workstation, I did not get the same error, it just worked. Weird. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[HtmlComponent.Document.Selection]]></title>
            <link>https://chris.pelatari.com/posts/2004-01-06-HtmlComponent-Document-Selection</link>
            <guid>https://chris.pelatari.com/posts/2004-01-06-HtmlComponent-Document-Selection</guid>
            <pubDate>Tue, 06 Jan 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I finally figured out how to use the Document.Selection of Nikhil&#39;s HTML Component. I was looking for Document.InsertHtml which eluded me until today. This is really great - one of those hidden gems that wasn&#39;t so hidden once you saw it.</p><p>So anyway, I&#39;m making headway on this project, little by little (work and all). Here&#39;s what I got from a simple dialog and syntax highlighting:</p><p><img height="239" alt="" src="https://chris.pelatari.com/assets/SyntaxHighlighting.3rOAW-UN.gif" width="199" border="0"></p><p>Hopefully before too long we&#39;ll have a maiden post.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Blatant "Me Too" Post]]></title>
            <link>https://chris.pelatari.com/posts/2004-01-03-Blatant-Me-Too-Post</link>
            <guid>https://chris.pelatari.com/posts/2004-01-03-Blatant-Me-Too-Post</guid>
            <pubDate>Sat, 03 Jan 2004 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://weblogs.asp.net/jalexander">Jason Alexander</a> <a href="http://weblogs.asp.net/jalexander/archive/2003/12/16/43894.aspx">posted recently </a>about moving <a href="http://www.ngallery.org">nGallery </a>to <a href="http://vaultpub.sourcegear.com">VaultPub</a>.</p><p>I&#39;m hosting my little slow-going side project there too (hence the title:) It&#39;s going to be a WYSIWYG desktop blog editor that will allow posting to many different blogs - if they support the MetaWeblog API. I had originally called it PostModern, at the suggestions of  a passer-by, but I&#39;m changing the name to Post XING, since the main point of this little app was to allow me to post to different blogs if I wanted to.</p><p>Anyways, I&#39;ve got to say that Vault / Vaultpub is really awesome. It&#39;s been quite some time since I&#39;ve used source control, and the last solution I used (VSS) taught me how to cope with loss. I&#39;m even testing it over a dial-up connection (I know, that&#39;s SO 1994) and it still works great. Sweet.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <link>https://chris.pelatari.com/posts/2003-12-31-2004</link>
            <guid>https://chris.pelatari.com/posts/2003-12-31-2004</guid>
            <pubDate>Wed, 31 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Happy New Year everybody. 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[PostModern Crossroads]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-24-PostModern-Crossroads</link>
            <guid>https://chris.pelatari.com/posts/2003-12-24-PostModern-Crossroads</guid>
            <pubDate>Wed, 24 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Okay, I&#39;m pretty solid on the <a href="http://www.windowsforms.com/ControlGallery/ControlDetail.aspx?Control=290&amp;tabindex=9" target="_blank">HtmlEditor</a> that I&#39;m going to use for my little side project. It&#39;s a sweet editor. Honestly, it has more features than I think are necessary in this case, but that&#39;s okay with me.</p><p>On to the topic at hand. Originally, I spec&#39;ed the <a href="http://www.squishyweb.com/ware/products.asp?q=squishysyntax" target="_blank">Codify</a> option to be in a dialog because that seemed like a nice tradeoff. I also tried a method that would allow you to either type code into the design surface or copy/paste it from <a href="http://www.sliver.com/dotnet/SnippetCompiler/" target="_blank">your favorite editor</a>, click a button, and bam! it&#39;s formatted. Seems like a winner, but the problem is that when you copy/paste into the editor, you lose tabs/spaces.</p><p>So how would you like it to work?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[sorry to my 2 readers]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-17-sorry-to-my-2-readers</link>
            <guid>https://chris.pelatari.com/posts/2003-12-17-sorry-to-my-2-readers</guid>
            <pubDate>Wed, 17 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>But I need to test out how my new syntax highlighting code is going to look in an aggregator. No offense, I hope.</p><p><pre><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">1</span><!----> System;
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">2</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">3</span><!----> HighlightTest
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">4</span>{
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">5</span> <!----><!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">6</span> <!----><!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">7</span> <!----><!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">8</span> <!----> <!----> SampleCs
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">9</span> {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">10</span>  <!----> SampleCs()
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">11</span>  {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">12</span>   <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">13</span>   <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">14</span>   <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">15</span>  }
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">16</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">17</span>  <!----> <!----> DoSomething( <!----> s ) {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">18</span>   <!---->( s == <!----> ) {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">19</span>    <!---->;
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">20</span>   }
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">21</span>  }
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">22</span><!----><span id="region1" style="d-i-s-p-l-a-y:inline;">
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">24</span>  
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">25</span>  <!----> <!----> DoSomethingElse( <!----> i ) {
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">26</span>   <!----> x = i;
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">27</span>  }
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">28</span></span><!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">29</span> }
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">30</span>}
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">31</span></pre></p><p><pre><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">1</span><!----> System.Collections
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">2</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">3</span><!----> <!----> MyVbClass
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">4</span>    <!----> m_MyString <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">5</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">6</span>    <!----> <!----> <!---->()
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">7</span>        myString = <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">8</span>    <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">9</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">10</span>    <!----> <!----> MyString() <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">11</span>        <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">12</span>            <!----> m_MyString
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">13</span>        <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">14</span>        <!---->(<!----> Value <!----> <!---->)
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">15</span>            m_MyString = Value
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">16</span>        <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">17</span>    <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">18</span><!----><span id="region1" style="d-i-s-p-l-a-y:inline;">
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">20</span>    <span style="c-o-l-o-r:#008200;">&#39; This is a comment</span>
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">21</span>    <!----> <!----> MyFunction( <!----> i as <!----> ) <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">22</span>        MyFunction = 123.456
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">23</span>    <!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">24</span><!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">25</span><!----> <!---->
<br><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">26</span></span></pre></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Local DasBlog]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-12-Local-DasBlog</link>
            <guid>https://chris.pelatari.com/posts/2003-12-12-Local-DasBlog</guid>
            <pubDate>Fri, 12 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Wow. I realized that I needed some guidance on how to implement the MetaWeblog API and thought, hmm, doesn&#39;t that dasBlog jobby do cross-posting with that (api)? Ah, so it does. Ah, and there is some source code to go along with that, thank you.</p><p>It doesn&#39;t look like I&#39;ll be doing anything really “ground-breaking” or “innovative” with my new side project...I&#39;ll really just be hacking a few disparate parts together to achieve a goal that I have - and learn more about what I can do with Windows Forms while I&#39;m at it. That&#39;s okay with me. </p><p>In other news, I finally made use of those commented out settings in my local blog.config for .Text, [host] and [application]. The comment preceding that says, “It is possible to mirror a blog and hard code a specific Host and Application”. Right. I first read this and said, okay, that sounds great. But, what would I use it for? </p><p>I&#39;ve found that setting these two elements lets me run .Text locally, but using the values that the server in question has for its application and host values. So, while I see “http:localhost/dottextweb” the .Text engine sees “http:myinternalserver/thatblog”. Sweet.<img width="0" height="0" src="http://localhost/DasBlog/cptrk.ashx?id=7b6c8700-a11f-400b-84d8-b6b62f302d47"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[\[deactivatedstyle\]]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-10-deactivatedstyle</link>
            <guid>https://chris.pelatari.com/posts/2003-12-10-deactivatedstyle</guid>
            <pubDate>Wed, 10 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>ugh. looks like the best way to do this is with [font] tags. eeww.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[It has begun or Does size really matter?]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-10-It-has-begun-or-Does-size-really-matter</link>
            <guid>https://chris.pelatari.com/posts/2003-12-10-It-has-begun-or-Does-size-really-matter</guid>
            <pubDate>Wed, 10 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I finally decided on a name for my project - PostModern. I had already gotten syntax highlighting worked out, but I ended up using a different component than I had originally planned. I&#39;m using a component from <a href="http://www.squishyweb.com" target="_blank">SquishyWare</a> called <a href="http://www.squishyweb.com/ware/products.asp?q=squishysyntax" target="_blank">squishySyntaxHighlighter</a>. It&#39;s really nice...simple, easy to modify, and it looks pretty spiffy too.</p><p>So here&#39;s the thing. It creates a little bit of markup by using [span style=] tags where you would expect coloration, so if you&#39;re posting any sizeable amount of code, it can get bloated. (<em>That&#39;s</em> why I put the second part of the title in there, you nasty nelly you!)</p><p>I&#39;ve found that it&#39;s a little bit difficult, if possible at all, to grab the selected text in the HtmlComponent that I&#39;ll probably be using, so a drawback of syntax highlighting is that you&#39;ll more than likely have to do it from the [html] tab that we&#39;re all so familiar with. Also, I&#39;ve found that the HtmlComponent (and others too, so it must be a mshtml thing) will colorize text pasted from Visual Studio. Here&#39;s the difference:</p><p>[pasted directly into the design surface]<br> System;</p><p> HighlightTest</p><p>{</p><p></p><p></p><p></p><p>  SampleCs</p><p>{</p><p> SampleCs()</p><p>{</p><p></p><p></p><p></p><p>}</p><p>  DoSomething(  s ) {</p><p>( s == &quot;string literal&quot; ) {</p><p>;</p><p>}</p><p>}</p><p> This is a Region</p><p>  DoSomethingElse(  i ) {</p><p> x = i;</p><p>}</p><p></p><p>}</p><p>}</p><p> [using the SyntaxHighlighter]<br></p><pre><span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">1</span><span style="c-o-l-o-r:#0000ff;">using</span> System;
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">2</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">3</span><span style="c-o-l-o-r:#0000ff;">namespace</span> HighlightTest
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">4</span>{
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">5</span>	<span style="c-o-l-o-r:#848284;">///</span><span style="c-o-l-o-r:#008200;"> <span style="c-o-l-o-r:#848284;"><summary></summary></span></span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">6</span>	<span style="c-o-l-o-r:#848284;">///</span><span style="c-o-l-o-r:#008200;"> Summary description for SampleCs.</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">7</span>	<span style="c-o-l-o-r:#848284;">///</span><span style="c-o-l-o-r:#008200;"> <span style="c-o-l-o-r:#848284;"></span></span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">8</span>	<span style="c-o-l-o-r:#0000ff;">public</span> <span style="c-o-l-o-r:#0000ff;">class</span> SampleCs
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">9</span>	{
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">10</span>		<span style="c-o-l-o-r:#0000ff;">public</span> SampleCs()
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">11</span>		{
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">12</span>			<span style="c-o-l-o-r:#008200;">//</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">13</span>			<span style="c-o-l-o-r:#008200;">// TODO: Add constructor logic here</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">14</span>			<span style="c-o-l-o-r:#008200;">//</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">15</span>		}
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">16</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">17</span>		<span style="c-o-l-o-r:#0000ff;">public</span> <span style="c-o-l-o-r:#0000ff;">void</span> DoSomething( <span style="c-o-l-o-r:#0000ff;">string</span> s ) {
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">18</span>			<span style="c-o-l-o-r:#0000ff;">if</span>( s == <span style="c-o-l-o-r:#848284;">&quot;string literal&quot;</span> ) {
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">19</span>				<span style="c-o-l-o-r:#0000ff;">return</span>;
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">20</span>			}
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">21</span>		}
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">22</span><span style="c-o-l-o-r:#6699cc;">
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">23</span>		#region This is a Region</span><span id="region1" style="d-i-s-p-l-a-y:inline;">
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">24</span>		
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">25</span>		<span style="c-o-l-o-r:#0000ff;">private</span> <span style="c-o-l-o-r:#0000ff;">void</span> DoSomethingElse( <span style="c-o-l-o-r:#0000ff;">int</span> i ) {
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">26</span>			<span style="c-o-l-o-r:#0000ff;">int</span> x = i;
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">27</span>		}
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">28</span></span><span style="c-o-l-o-r:#6699cc;">		#endregion</span>
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">29</span>	}
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">30</span>}
<span style="b-o-r-d-e-r-r-i-g-h-t:#999999 1px solid;w-i-d-t-h:40px;c-o-l-o-r:#008284;m-a-r-g-i-n-r-i-g-h-t:10px;b-a-c-k-g-r-o-u-n-d-c-o-l-o-r:#e5e5e5;t-e-x-t-a-l-i-g-n:right;">31</span></pre><p>So there&#39;s a little bit more work to go thru, but the end result is that it&#39;s already formatted the way I like. What do you think about that?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[posting from the desktop...]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-04-posting-from-the-desktop</link>
            <guid>https://chris.pelatari.com/posts/2003-12-04-posting-from-the-desktop</guid>
            <pubDate>Thu, 04 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.byte.org/blog/_archives/2003/11/28/7591.html" target="_blank" rel="noreferrer">See?</a> I&#39;m not the only one.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Posting code snippets from the desktop...]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-04-Posting-code-snippets-from-the-desktop</link>
            <guid>https://chris.pelatari.com/posts/2003-12-04-Posting-code-snippets-from-the-desktop</guid>
            <pubDate>Thu, 04 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.4guysfromrolla.com/ScottMitchell.shtml" target="_blank" rel="noreferrer">Scott Mitchell</a> told me:</p><blockquote><p>Feature request: you will be my hero if your blog software can display code snippets in a color coding like in VS.NET. And if it&#39;s a snap to add such code and have it formatted. (That is, I don&#39;t have to do more than just add, [code language=&quot;C#&quot;] ... code ... [/code].)</p></blockquote><p>Thanks to <a href="http://weblogs.asp.net/tjohansen" target="_blank" rel="noreferrer">Thomas Johansen&#39;s</a> <a href="http://aspalliance.com/aylar/highlight/" target="_blank" rel="noreferrer">AylarSolutions.Highlight</a>, you&#39;re gonna get exactly that!</p><p>This was one of the requests that more than one person told me would be nice, so I decided to go ahead and add syntax highlighting to the app b/c yeah it would be nice. Tom&#39;s component makes it sickeningly easy to highlight C#, VB.NET, J#, and I believe recently he even added ASPX support.</p><p>Initially I was thinking that a &#39;snippet dialog&#39; would be the easiest way to accomplish this, just insert where the cursor is on the editing surface. Then I thought, well, if I can wrap a font tag around some words that I highlighted, then I should be able to do the same with the syntax highlighting markup, just add a button with a language dropdown to the <a href="http://www.divil.co.uk/net/controls/sandbar/" target="_blank" rel="noreferrer">toolbar</a>, highlight the code you want to show the syntax for, click &#39;codify&#39; and go!</p><p>Now, ScottM is mentioning some custom markup syntax, familiar to anyone who has posted on an online forum. So, you would have a region that you know <em>will</em> look like VS.NET&#39;s scheme when it&#39;s posted to the blog, but the only visual clue you&#39;ll have is the custom markup around the code - it won&#39;t be syntax highlighted until you hit the Post &amp; Publish button.</p><p>So which would you prefer - from an end user&#39;s standpoint? What would make you say, “Yo, that&#39;s super easy to add code to my posts“?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[What's in a name?]]></title>
            <link>https://chris.pelatari.com/posts/2003-12-03-Whats-in-a-name</link>
            <guid>https://chris.pelatari.com/posts/2003-12-03-Whats-in-a-name</guid>
            <pubDate>Wed, 03 Dec 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>In my comments <a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a>, <a href="http://karavshin.org/blogs/black-coffee/archive/000474.html">Michael Slater</a> says I should try out zempt for my blog-editing pleasure...well, I went to the site and thanks for the suggestion, Mikey, but I think that zempt only targets MT, which this blog is not (thank you Jesus...and ScottW:)</p><p>So, I&#39;ve been thinking of what I should name my little side project, and I thought you could help me. I&#39;ve asked this same question elsewhere, and here&#39;s a little list of what has been suggested so far:</p><ul><li>BlogPost</li><li>BlogPoster</li><li>Blogster</li><li>Hi-Lited-Blog-Poster</li><li>Poster Face (like poker face:)</li><li>POSTERIOR</li><li>Sharlene</li><li>Sally</li><li>PostThoughts</li><li>PostBloggem</li><li>POST-it (can I get sued for that?)</li><li>POST-Code</li><li>POSTAL (as in I&#39;m going)</li></ul><p>I was thinking something that included a play on the word post somehow, since that&#39;s what I&#39;m calling entries to my blog. Of course, I&#39;m witholding the names of the suggestors to protect my a$. But here&#39;s the thing - I just want a fun name for my project, and I think you can help. The above are okay, but fun? I&#39;m not really feelin it. If I can&#39;t come up with anything within a day or two, I&#39;m going to cave in and call the finished product  Post-it. Thanks!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Blogert]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-26-Blogert</link>
            <guid>https://chris.pelatari.com/posts/2003-11-26-Blogert</guid>
            <pubDate>Wed, 26 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Thanks to comments from my previous post, I did snag a copy of Blogert.</p><p>Just like I thought, it&#39;s almost everything that I wanted, but I want a couple of more features -  like the ability to post to many blogs at once (this is my main want) and it seems from initial reaction that it would be cool to be able to post snippets of code into the entry that you&#39;re writing. </p><p>So I&#39;ve got the behaviors that I want, but spread across two different apps. Looks like I&#39;ve found myself a pet project. :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I want a new...]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-25-I-want-a-new</link>
            <guid>https://chris.pelatari.com/posts/2003-11-25-I-want-a-new</guid>
            <pubDate>Tue, 25 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...way to post to my weblogs. Maybe you can help me out.</p><p><u>Objective:</u> Create a desktop application that will enable posting entries to a weblog.</p><p><u>Technology:</u> Windows Forms, C#</p><p><u>Needs:</u></p><ul><li>A simple, familiar, WYSIWYG interface for creating content.</li><li>Use the MetaBlog API for posting and retrieving content.</li><li>Ability to post to many blogs at once.</li><li>Ability to save posts locally at the user&#39;s discretion and/or in a disconnected scenario.</li></ul><p><u>Wants:</u></p><ul><li>That&#39;s where you come in! </li></ul><p>I&#39;ve seen the <a href="http://scottwater.com/blog/Gallery/1062.aspx">images of Blogert</a>, but I can&#39;t find where to download it :(. It looks like it does almost everything that I need it to do, and it would be real nice to build on top of it to add cross/multi-blog posting. That would be ideal and preferable to starting from scratch. If I can&#39;t have my cake and eat it too, I&#39;ll just start with what&#39;s available.</p><p>This isn&#39;t really something I <em>need</em>, however it would be really nice to have it, since I&#39;m not completely satisfied with the experience in w.bloggar...I want wysiwyg, just as if I&#39;m posting from my blog itself. So what would be really nice to have on this? I need to sharpen my Windows Forms skills (or lack thereof) - what would be something that would set a tool like this apart a little bit from other software? Or, am I barking up the wrong tree and really need to sharpen my google skills? Thanks for taking the time to read this; I&#39;m off to let this idea stew for a little bit.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hannah Henson]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-19-Hannah-Henson</link>
            <guid>https://chris.pelatari.com/posts/2003-11-19-Hannah-Henson</guid>
            <pubDate>Wed, 19 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Our friend Hannah passed away yesterday. </p><p>Vanessa: thank you for your comment, indeed Hannah was an inspiration to us all. She had courage and faith until the very end, and my condolences go out to her family and everyone whose life she touched.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ever heard of role-based security?]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-18-Ever-heard-of-role-based-security</link>
            <guid>https://chris.pelatari.com/posts/2003-11-18-Ever-heard-of-role-based-security</guid>
            <pubDate>Tue, 18 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m sorry, Frans - this did make me chuckle a little bit, tho:</p><p><a href="http://weblogs.asp.net/fbouma/posts/38178.aspx">Well... ever heard of role-based security? Rob Howard hasn&#39;t obviously.</a></p><p><a href="http://longhornblogs.com/bevjen/posts/930.aspx">Rob Howard – Membership, Role Management and Security in ASP.NET Whidbey</a></p><p>hehe</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Tomorrow's my birthday.]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-14-Tomorrows-my-birthday</link>
            <guid>https://chris.pelatari.com/posts/2003-11-14-Tomorrows-my-birthday</guid>
            <pubDate>Fri, 14 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ll be 23. 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Exception Management]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-14-Exception-Management</link>
            <guid>https://chris.pelatari.com/posts/2003-11-14-Exception-Management</guid>
            <pubDate>Fri, 14 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve been using the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/emab-rm.asp">Exception Management Application Block</a> for quite some time now, and for general purpose it&#39;s great. Especially when I need some detailed information about exceptions generated from an asp.net application, EMAB&#39;s got my back.</p><p>The only problem that I&#39;ve had so far (barring non-perfectly formed configSections) I ran into today, and it had to do with Registry Access. I&#39;m in the midst of deploying a windows forms application that uses the EMAB, but the user I wanted to deploy to was not an administrator (and <u>really</u> shouldn&#39;t be.) So, I had to :</p><ul><li>rebuild my installer, removing the custom action to install EMAB</li><li>log the user out</li><li>log in as administrator</li><li>run cmd: cd C:\%windir%\microsoft.net\framework\v1.1.4322\</li><li>installutil &quot;Path to EMAB&quot;</li><li>let the user log back in before we could test things.</li></ul><p>What a pain in the ass! Maybe I&#39;m just spoiled from all of this xcopy  deployment bru-haha.;) Anyways, I hope that .NET becomes easier for non-administrators to use...okay, maybe that&#39;s a gross generalization, but the point is that <i>Registry Access</i> never crossed my mind as an issue to resolve, because I&#39;m always running in &quot;God Mode&quot; and therefore never really worry about these things.</p><p>Funny thing is that I created a fake User in the same group as the target user and deployed the application to a test machine before I ever put the app on the target machine - the installer and everything worked like a charm, but shouldn&#39;t have (unless EMAB was already installed:)...Okay, I need to blog more b/c this is turning into a rant. All I really wanted to do was outline what I needed to do to get EMAB installed for a non-administrator. Shh! If you&#39;re still reading, don&#39;t tell, aiight?</p><div class="media">-= Currently Jammin: Psycho - System Of A Down - toxicity :=-</div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Seeing the Matrix Manana]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-04-Seeing-the-Matrix-Manana</link>
            <guid>https://chris.pelatari.com/posts/2003-11-04-Seeing-the-Matrix-Manana</guid>
            <pubDate>Tue, 04 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just got my tickets to see The Matrix : Revolutions online...I&#39;m one of the fortunate few that get to see this on the BIG screen: IMAX baby! 😛</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[May be changing servers soon...]]></title>
            <link>https://chris.pelatari.com/posts/2003-11-01-May-be-changing-servers-soon</link>
            <guid>https://chris.pelatari.com/posts/2003-11-01-May-be-changing-servers-soon</guid>
            <pubDate>Sat, 01 Nov 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I may have to change servers...it looks like another app that lives <a title="My Blog" href="/blog" target="_blank">here</a> is timing out a lot and I want to be able to make sure it&#39;s not my blog&#39;s fault.</p><p>: It&#39;s not my blog&#39;s fault, thank you very much. It turns out to be some over-sorting in one of the libraries the other app is using. Time to refactor, baby.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Singing the praises of the ASP.NET Version Switcher.]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-31-Singing-the-praises-of-the-ASPNET-Version-Switcher</link>
            <guid>https://chris.pelatari.com/posts/2003-10-31-Singing-the-praises-of-the-ASPNET-Version-Switcher</guid>
            <pubDate>Fri, 31 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m putting some of the finishing touches on my first winforms project, so I decided to try out some code on an <a href="http://www.velocitydatabank.com">app </a>that I wrote over a year ago today - I wanted it to run on .netfx 1.1 instead of 1.0, because it&#39;s the central login point for 2 different apps. After looking around at things and jogging that old memory, I got it working again, in both 1.0 and 1.1 using <a href="http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx">Denis Bauer&#39;s ASP.NET version switcher</a>. Very nice. I know it&#39;s been said before, but this is an indespensible tool for anyone running side by side asp.net apps.</p><p>My problem was this (if you&#39;re still reading): Since I have two different apps accessing the login page of this site from different hosts, the machineKey element of the *.config files need to be synched up for each site - either in web. or machine. - much like a server farm scenario. Apparently, tho, the newer fx and the older fx don&#39;t play nicely together when it comes to communication. Even tho the two apps had identical machineKey elements, authorization failed from site B to site A every time. All I had to do was change the versions that the apps were running on to be synched, and voila! Single Sign On is back. Whew</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I don't speak German, but...]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-28-I-dont-speak-German-but</link>
            <guid>https://chris.pelatari.com/posts/2003-10-28-I-dont-speak-German-but</guid>
            <pubDate>Tue, 28 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://weblogs.asp.net/ralfw/posts/34099.aspx" target="_blank" rel="noreferrer">This post</a> reinforces that a picture is worth 10,000 words.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[This *is* a cross-post from .Text.]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-27-This-is-a-cross-post-from-Text</link>
            <guid>https://chris.pelatari.com/posts/2003-10-27-This-is-a-cross-post-from-Text</guid>
            <pubDate>Mon, 27 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>It seems that cross-posting has become a <a href="http://weblogs.asp.net/javery/posts/33357.aspx">cool feature </a>since other, more respected <a href="http://staff.newtelligence.net/clemensv/">developers </a>have released <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=ca70e481-9fbe-4d84-b936-e9db6d84965c">new versions </a>of their prospective blogging engines. </p><p>This is a cross-post. You can view this post <a title="My Blog" href="http://weblogs.asp.net/blog" target="_blank">here</a> and <a title="My other blog" href="http://weblogs.asp.net/CFrazier" target="_blank">there</a>. I&#39;ve been doing it for a while - ever since I got my grubby little hands on someone&#39;s blog engine code and was able to play with the source code / webservice combinations that <a href="http://weblogs.asp.net/">http://weblogs.asp.net</a> exposes. I&#39;m doing it. I know of one other person who&#39;s doing it as well. </p><p>Anyways, it required a minimal amount of code to achieve - although I&#39;m guessing there is probably a better way to do it, like w/ the MetablogAPI implementation. It&#39;s just a webservice call, and I&#39;m able to post technical stuff right up next to <a href="http://www.chrisfrazier.net/blog/posts/208.aspx">non-technical </a>stuff.</p><p>Okay, I&#39;ll be quiet now.</p><p>P.S. One more thing - Thanks to everybody who&#39;s blogging the PDC. It&#39;s neat to read about what&#39;s going on in real-time.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[My Thursday Night]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-24-My-Thursday-Night</link>
            <guid>https://chris.pelatari.com/posts/2003-10-24-My-Thursday-Night</guid>
            <pubDate>Fri, 24 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><ul><li>Papa John&#39;s pepperoni and ham (with the special garlic sauce)</li><li>cold beer</li><li>working software</li></ul><p>now if only the Yankees can pull off 3 more points...this is about as close to heaven as I&#39;m gonna get for a long time :D </p><p>P.S. They didn&#39;t do it - the Marlins just got out Matsui.:&#39;(</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[For anybody who's running .Text...]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-23-For-anybody-whos-running-Text</link>
            <guid>https://chris.pelatari.com/posts/2003-10-23-For-anybody-whos-running-Text</guid>
            <pubDate>Thu, 23 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://jjulian.geekswithblogs.com">Jeff Julian </a> has put up a couple of skins at <a href="http://www.geekswithblogs.com/TextSkins">http://www.geekswithblogs.com/TextSkins</a> .</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Somebody likes the blue Lighty.]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-21-Somebody-likes-the-blue-Lighty</link>
            <guid>https://chris.pelatari.com/posts/2003-10-21-Somebody-likes-the-blue-Lighty</guid>
            <pubDate>Tue, 21 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://jjulian.geekswithblogs.com" target="_blank" rel="noreferrer">Jeff Julian</a> pinged me this morning and asked if he could use the version of Lighty that I hacked up after Julien Cheyssial (that&#39;s weird :)released his &#39;original orange&#39; version, now up on <a href="http://weblogs.asp.net" target="_blank" rel="noreferrer">http://weblogs.asp.net</a>. So it looks like the <a href="http://www.geekswithblogs.net" target="_blank" rel="noreferrer">GeeksWithBlogs</a> will be enjoying a little different taste of a nifty skin.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[For anyone who wants the Lighty skin to look a little better in Mozilla...]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-21-For-anyone-who-wants-the-Lighty-skin-to-look-a-little-better-in-Mozilla</link>
            <guid>https://chris.pelatari.com/posts/2003-10-21-For-anyone-who-wants-the-Lighty-skin-to-look-a-little-better-in-Mozilla</guid>
            <pubDate>Tue, 21 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Go to the Admin section of your blog, and in the “Custom CSS Selectors” textbox add:</p><pre>main {
margin-left:200px;
padding:0px 20px 0px 0px;
width: 580px;
}
</pre><p></p><p>It still has a bit of gap-osis, but at least your main content will end up where it does for IE. I haven&#39;t tried this out on Opera yet, but I&#39;ve implemented it <a title="My Blog" href="/blog" target="_blank">here</a> and <a title="My other blog" href="http://weblogs.asp.net/CFrazier" target="_blank">there</a>.</p><p></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[sigh of relief]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-20-sigh-of-relief</link>
            <guid>https://chris.pelatari.com/posts/2003-10-20-sigh-of-relief</guid>
            <pubDate>Mon, 20 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Thanks, Scott. 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Test from MetaBlog/w.bloggar]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-16-Test-from-MetaBlog-wbloggar</link>
            <guid>https://chris.pelatari.com/posts/2003-10-16-Test-from-MetaBlog-wbloggar</guid>
            <pubDate>Thu, 16 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is just a little test ping.</p><div class="media">-= Currently Jammin: Chop Suey - System Of A Down - (03:17) :=-</div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Simple Scrolling added to my blog]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-14-Simple-Scrolling-added-to-my-blog</link>
            <guid>https://chris.pelatari.com/posts/2003-10-14-Simple-Scrolling-added-to-my-blog</guid>
            <pubDate>Tue, 14 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I added a scroller over <a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a> - just some custom javascript. I wanted to get it working - it looks great on IE, I can&#39;t say the exact same for mozilla or opera, tho. I&#39;m working on it 😃. I&#39;m also working on giving it a cleaner UI w/ images instead of text - this is just the &#39;prototype&#39; to see if I can get this scroller working.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hannah Henson]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-11-Hannah-Henson</link>
            <guid>https://chris.pelatari.com/posts/2003-10-11-Hannah-Henson</guid>
            <pubDate>Sat, 11 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>My girlfriend Tina just pointed me to a site that a friend of hers has put up - <a href="http://www.caringbridge.org/tx/hannahgrace/index.htm">Hannah Henson</a> is a young lady who was diagnosed with osteosarcoma earlier this year after she broke her hip.</p><br><p>If you could, would you both go and <a href="http://www.caringbridge.org/tx/hannahgrace/guestbook.html">sign her guestbook</a>? She&#39;s still reading this site while she&#39;s with us. Thanks.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[New Skin, new Gallery!]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-10-New-Skin-new-Gallery</link>
            <guid>https://chris.pelatari.com/posts/2003-10-10-New-Skin-new-Gallery</guid>
            <pubDate>Fri, 10 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Thanks to <a href="http://dotnetjunkies.com/weblog/donnymack/">Donny Mac</a> for pointing me to a <a href="http://dotnetjunkies.com/weblog/skins/lighty.zip">new skin </a>for <a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a>. Also thanks to <a href="http://www.dotnetjunkies.com/weblog/jcheyssial/">Julien Cheyssial</a> for creating the initial one. </p><br><p>I changed the colors from orange to blue - I dig blue these days. Also, I&#39;ve added <a href="http://weblogs.asp.net/jalexander/">Jason Alexander&#39;s</a> new <a href="http://www.ngallery.org">nGallery</a> to my site <a href="http://www.chrisfrazier.net/ngallery">over here</a>.</p><br><p>Looks like I won&#39;t have to write anything myself for a minute! :) I know that both of my readers get at me from <a title="My other blog" href="http://weblogs.asp.net/CFrazier" target="_blank">there</a>, so if you&#39;ve got a minute please check out my new skin over <a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a>. Thanks!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A different OS this time...]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-09-A-different-OS-this-time</link>
            <guid>https://chris.pelatari.com/posts/2003-10-09-A-different-OS-this-time</guid>
            <pubDate>Thu, 09 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This time I&#39;m like the PalmOS. I hope that&#39;s not bad 😃</p><p>At any rate, I love my Palm Handheld. <a href="http://bbspot.com/News/2003/01/os_quiz.php"><img height="90" alt="You are Palm OS. Punctual, straightforward and very useful.  Your mother wants you to do more with your life like your cousin Wince, but you&#39;re happy with who you are." src="http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/palm.jpg" width="300" border="0">Which OS are You?</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ATM - Galaga]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-06-ATM-Galaga</link>
            <guid>https://chris.pelatari.com/posts/2003-10-06-ATM-Galaga</guid>
            <pubDate>Mon, 06 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I had a dream last nite that I was going to an ATM to get some cash. When I was at the terminal, on the opposite side of the English/Espanol options there was a third option - Internet. What? so, of course I chose Internet - this could be fun, right?</p><p>The screen pops up with a clone of Galaga - you used the keypad to move and one of the option buttons to shoot. I was just about to reach my high score when I noticed the long line of people behind me. Whoops 😃 I guess I can beat my high score anytime - preferrably around 1 AM.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Thanks Darren...Show us your-Regex!]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-01-Thanks-Darren-Show-us-your-Regex</link>
            <guid>https://chris.pelatari.com/posts/2003-10-01-Thanks-Darren-Show-us-your-Regex</guid>
            <pubDate>Wed, 01 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.velocitydatabank.com">The place that I work </a>uses what we call index numbers (they&#39;re not really numbers per se...) that are based on API numbers (which are usually numbers) for check shot velocity surveys. I&#39;m working on a project that will validate these and I thought that it would be well suited for Regex since it&#39;s going to be text validation and there are rules in place for these Index “numbers”. </p><br><p>So first I go to <a href="http://www.regexlib.com">www.regexlib.com</a> and see what that might have to get those Regex juices flowin. Then I thought about the Regex that I need to write and wrote it out as the rules should apply:</p><br><ol><br><li>Start at the beginning of a string.</li><br><li>Match exactly 2 digits.</li><br><li>Match exactly 1 letter (uppercase).</li><br><li>Match no less than 3 but no more than 4 digits.</li><br><li>Optionally match 1 or 2 letters (uppercase).</li><br><li>End of string.</li></ol><br><p>So, I fired up <a href="http://weblogs.asp.net/DNeimke">Darren Neimke&#39;s</a> <a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=43D952B8-AFC6-491B-8A5F-01EBD32F2A6C">RegexSnippets</a> which I have sitting in my C:\Tools folder for just such an occasion, and this is what I came up with:</p><br><p>^\d{2}[A-Z]{1}\d{3,4}([A-Z]{1,2})?$</p><br><p>And much to my surprise it worked the first time running! Very nice. Plus, I was able to save the regex for later using Darren&#39;s cool little utility. Added bonus: there was already one expression (8PointFloat) that I needed for a different area. Thanks Darren!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[More cross-posting shennanigans.]]></title>
            <link>https://chris.pelatari.com/posts/2003-10-01-More-cross-posting-shennanigans</link>
            <guid>https://chris.pelatari.com/posts/2003-10-01-More-cross-posting-shennanigans</guid>
            <pubDate>Wed, 01 Oct 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I think I&#39;m going to play with .Text a little bit to allow cross-posting from <a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a> to <a title="My other blog" href="http://weblogs.asp.net/CFrazier" target="_blank">there</a> using w.Bloggar and the MetaBlog API.</p><p>Perhaps there are some hidden jewels in <a href="http://www.dasblog.net/">dasBlog </a>that I could borrow the idea from...just thinking out loud.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Archives]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-26-Archives</link>
            <guid>https://chris.pelatari.com/posts/2003-09-26-Archives</guid>
            <pubDate>Fri, 26 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a> September, 2003(16)</p><p><a title="My other blog" href="http://weblogs.asp.net/CFrazier" target="_blank">there</a> September, 2003(14)</p><p>and the internal one, September, 2003(34) </p><p>hehe, you can&#39;t see how big of a dope I am on the internal one :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Note to the Windows Forms team]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-24-Note-to-the-Windows-Forms-team</link>
            <guid>https://chris.pelatari.com/posts/2003-09-24-Note-to-the-Windows-Forms-team</guid>
            <pubDate>Wed, 24 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Working with windows forms sucks. </p><p>Especially if you&#39;re coming from the much more approachable asp.net side. I have state, but simple things like pre-selecting an item in a datagrid are not easy - and they should be. You should make me feel comfortable in your environment. Give me a reason to use Windows Forms other than &#39;it runs on Windows&#39;. </p><p>I&#39;m about halfway thru my first Windows Forms project. If I were doing this in asp.net, I would be done by now.</p><p>That is all.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Intellisense problem solved.]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-23-Intellisense-problem-solved</link>
            <guid>https://chris.pelatari.com/posts/2003-09-23-Intellisense-problem-solved</guid>
            <pubDate>Tue, 23 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>For anyone else who might have run into Intellisense weirdness, I found that just &#39;touching&#39; the file that was generated by vs.net for the dataset and recompiling gave intellisense its needed kick in the rear. </p><p>All I did was go to the file, hit enter, hit backspace, shift+ctrl+b, and intellisense was ready again to do my bidding. Weird, but it worked for me :)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[technology is like]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-19-technology-is-like</link>
            <guid>https://chris.pelatari.com/posts/2003-09-19-technology-is-like</guid>
            <pubDate>Fri, 19 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I&#39;m doing some work with typed datasets right now that is really souring my experience with VS.NET 2003.</p><p>I&#39;m using the same technique that I used months ago with VS.NET 2002 that worked pretty smoothly - wait, first let me say that it is working, it&#39;s the Intellisense that&#39;s jacked up. Unfortunately, it looks like it doesn&#39;t pick up everything that is included within the generated DataSet, including the <em>public</em> DataTable and DataRow classes generated. So, the code compiles and works fine during runtime, but intellisense is shot down at the first level. Is this what it was like before intellisense? So maybe the problem is that I&#39;m spoiled now thanks to the technology - then it craps out on me after working before.</p><p>Technology is like crack. First you get a taste of the good stuff, then you really pay.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Paying it forward]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-12-Paying-it-forward</link>
            <guid>https://chris.pelatari.com/posts/2003-09-12-Paying-it-forward</guid>
            <pubDate>Fri, 12 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>In <a href="http://weblogs.asp.net/cfrazier/posts/8771.aspx#27259">response to a post </a>I made about VS.NET 2002 failing to open connections with Sql Server, Roman says:</p><br><blockquote dir="ltr" style="m-a-r-g-i-n-r-i-g-h-t:0px;"><br><p>I have just found solvation. Installing MDAC 2.8 helps</p></blockquote><br><p dir="ltr">Tony, who had been having a similar problem, found the post and thanks Roman. So, if you&#39;re having problems connecting to Sql Server, try installing MDAC 2.8.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Wow. It's a website. (part deux)]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-11-Wow-Its-a-website-part-deux</link>
            <guid>https://chris.pelatari.com/posts/2003-09-11-Wow-Its-a-website-part-deux</guid>
            <pubDate>Thu, 11 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Me: Hey, Tina - you wanna see what I did today?</p><p>Tina: No, I looked at a computer screen for too long today. It was 4 hours.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I remember.]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-11-I-remember</link>
            <guid>https://chris.pelatari.com/posts/2003-09-11-I-remember</guid>
            <pubDate>Thu, 11 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>9/11. I was at home that day, my son wasn&#39;t born yet, and I saw the whole thing televised after my (ex) girlfriend&#39;s crazy best friend told us that America was under attack over the phone.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-10-test</link>
            <guid>https://chris.pelatari.com/posts/2003-09-10-test</guid>
            <pubDate>Wed, 10 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>blah!! 😄</p><br><p>edit more<img src="http://www.chrisfrazier.net/blog/images/emotions/emotion-12.gif" border="0" alt="Mad"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[oops.]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-10-oops</link>
            <guid>https://chris.pelatari.com/posts/2003-09-10-oops</guid>
            <pubDate>Wed, 10 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>perhaps I <em>should</em> take a little more time to fix the emoticons<img src="http://www.chrisfrazier.net/blog/images/emotions/red_smile.gif" border="0" alt="Embarassed"></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[geourl]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-10-geourl</link>
            <guid>https://chris.pelatari.com/posts/2003-09-10-geourl</guid>
            <pubDate>Wed, 10 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just added <a href="http://geourl.org">geoUrl </a>to my blog. I don&#39;t know why I didn&#39;t thing to do this before! I just have it pointing to my personal blog that has the correct tags, so when you click on the link it queries the database based on the url <a title="My Blog" href="http://www.chrisfrazier.net/blog" target="_blank">here</a> not <a title="My other blog" href="http://weblogs.asp.net/CFrazier" target="_blank">there</a>. </p><p>Nice. There&#39;s also this <a href="http://www.brainoff.com/geoblog">site which has a world map </a>on it and shows up where you are if you make a post. </p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[added emoticons :)]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-10-added-emoticons</link>
            <guid>https://chris.pelatari.com/posts/2003-09-10-added-emoticons</guid>
            <pubDate>Wed, 10 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve recently added emoticons 😘 to my .Text blog. If you could see the code, it <a href="http://www.asp.net/Forums/Download/Default.aspx?tabindex=0&amp;tabid=1" target="_new">might look familiar</a>. Heh, that was pretty easy. I did make a change or two to the source of .Text and also added a key to the web.config&#39;s appsettings node.</p><p>The magic happens in a method called StripFTB (for free textbox, the editor used for this app) All I did was add a call to the new Transform class, added the appropriate text file, and we&#39;re in business.</p><p>If you haven&#39;t checked it out yet, .<a href="http://scottwater.com/dottext" target="_new">Text</a> is a real good app - it&#39;s been real easy to make changes to it to &#39;fit my needs&#39;.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ImageLists]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-10-ImageLists</link>
            <guid>https://chris.pelatari.com/posts/2003-09-10-ImageLists</guid>
            <pubDate>Wed, 10 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Looks like <a href="http://weblogs.asp.net/mlafleur/">Marc </a>is <a href="http://weblogs.asp.net/mlafleur/posts/27017.aspx">having trouble with sealed ImageLists</a>.</p><p>I&#39;ve been working on my first Windows Forms project and I&#39;m using the same ImageList throughout the application, even tho there are yet only a few forms in it. I adapted an example by Lutz Roeder that uses a static class (well, ya know static members, whatever) to load a bitmapstrip into an internal ImageList. The class has a bunch of static properties that return the correct index of the image based on the loaded ImageList. (Like Images.Forward or Images.Undo)</p><p>I also added a static property to return the internal ImageList incase I want to use it in one of my Forms without calling the individual properties.</p><p>The trick is to load the bitmap strip in a static constructor - it&#39;s <em>always</em>  called first. If I want to add an individual image to a form, I can either create a local ImageList and set it to Images.ImageList or simply set the image of the control I&#39;m targeting to say Images.Back. I have to admit, I usually add the image in (gasp) the InitializeComponent() call - but here&#39;s the nice part: since I&#39;m calling a completely static class, the designer can get to the images and loads it not only to the designer surface but also (usually) replaces my Images.Back call with an appropriate call to the ResourceManager to grab the image from its new home - my Form&#39;s .resx file. </p><p>Good luck, Marc.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[thanks.]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-09-thanks</link>
            <guid>https://chris.pelatari.com/posts/2003-09-09-thanks</guid>
            <pubDate>Tue, 09 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I want to say thanks to those who have given me feedback on a <a href="http://weblogs.asp.net/cfrazier/posts/26789.aspx#FeedBack">previous post</a>. It&#39;s given me a little bit more insight into this beast called SqlServer. Anyways, I think perhaps I should ask this particular question on a listeserv of some sort, or maybe stick with just dynamically creating the sql text - given the fact that this particular endeavor is a windows forms project that shouldn&#39;t go outside of my company...</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[System.Net.WebProxy.GetDefaultProxy()]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-09-System-Net-WebProxy-GetDefaultProxy</link>
            <guid>https://chris.pelatari.com/posts/2003-09-09-System-Net-WebProxy-GetDefaultProxy</guid>
            <pubDate>Tue, 09 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I couldn&#39;t figure out why the remote posting thing wasn&#39;t working like I wanted it to. Well, the examples that I looked at last nite failed to outline the need to generate a proxy to use a webservice with the soap protocol. I had to dig up some old code and inevitably smak myself on the head. But here goes...</p><p>: I think I got it to work.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[No command-line proxy for you, buddy.]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-09-No-command-line-proxy-for-you-buddy</link>
            <guid>https://chris.pelatari.com/posts/2003-09-09-No-command-line-proxy-for-you-buddy</guid>
            <pubDate>Tue, 09 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Oh boy. Another “Object Reference” exception. I tried to create a proxy to this here webservice and insert an entry from a simple command line program. No dice. Thing is, tomorrow I&#39;m going to try it from asp.net and it&#39;s gonna work. eh, I hope 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Coming real soon...]]></title>
            <link>https://chris.pelatari.com/posts/2003-09-06-Coming-real-soon</link>
            <guid>https://chris.pelatari.com/posts/2003-09-06-Coming-real-soon</guid>
            <pubDate>Sat, 06 Sep 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I intend to use this blog engine more and more, but I&#39;ve run into a snag that has held me back a bit - I don&#39;t know what the ParentID is supposed to be used for, and I don&#39;t want to go forward until I do.</p><p>I&#39;m working on cross-posting right now so that I can use this blog full-time. I&#39;m pretty sure I have 0 subscribers on /phoenix, but I&#39;ll make sure to include the proper redirects if I get an aggregator for the user-agent. Should be fun!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[flat -> normal shudder]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-25-flat-normal-shudder</link>
            <guid>https://chris.pelatari.com/posts/2003-08-25-flat-normal-shudder</guid>
            <pubDate>Mon, 25 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Still posting from infiniblog...</p><p>I&#39;ve been sick for the past few days. I hate being sick, it makes me delerious (sp?). Even worse, I&#39;m currently working on a &#39;rad&#39; project that is making the developer in me cringe. It&#39;s really bad.</p><p>I&#39;m having to convert a flat table into a &#39;normal&#39; database, which would be okay but there are a number of fields for each row that require a one to many relationship. So what I&#39;ve decided to do in the interest of the &#39;r&#39; part is just throw the logic into a class that loops thru the records to fill the new structure with data.</p><p>The data in the original table has some fields with names like A_this and A_that thru M_this and M_that, much like a spreadsheet. This is the part that is making the developer scream &quot;you shouldn&#39;t be doing that!!&quot; It&#39;s really hard for me to go against my gut feelings, but I suppose that just shows my lack of experience. Not only do I have a cold, but this code is really making me sick.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Got an importer.]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-23-Got-an-importer</link>
            <guid>https://chris.pelatari.com/posts/2003-08-23-Got-an-importer</guid>
            <pubDate>Sat, 23 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I have a project that requires that I convert a flat FoxPro Database to a &#39;normalized&#39; Sql Server database. So far, I&#39;ve gotten the foxpro data into SqlServer.</p><p>Today I created an Importer utility class to generate the proper data from flat-&gt; normal database. Now I just need to create the logic that will migrate the data from one to the other... I&#39;ve gotten as far as creating the datacontainers and filling the initial data from the original flat database into memory.</p><p>Also, I learned that you can have two different Main() methods in a solution, which one gets used depends on which one is selected as the startup project.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Testing geourl]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-21-Testing-geourl</link>
            <guid>https://chris.pelatari.com/posts/2003-08-21-Testing-geourl</guid>
            <pubDate>Thu, 21 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>just a lil ping!ping!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[moving to .Text]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-21-moving-to-.Text</link>
            <guid>https://chris.pelatari.com/posts/2003-08-21-moving-to-.Text</guid>
            <pubDate>Thu, 21 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I decided to move the location of my blog, using <a href="http://scottwater.com/dottext">dotText</a>. I was going to wait for a while, but the Image gallery feature has me sold. Sorry, Chris, it&#39;s been a while since I&#39;ve heard from ya and well, I want comments, dammit! That&#39;s partly my fault, as I haven&#39;t had the time or the knowledge to figure out how to make that particular feature work. So, no bad karma thrown that way:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Mono]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-06-Mono</link>
            <guid>https://chris.pelatari.com/posts/2003-08-06-Mono</guid>
            <pubDate>Wed, 06 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Wow. This is something I could have sworn Scoble would post. Are ya fallin off, buddy? Anyways, from Microsoft-Watch:</p><p>Microsoft Watch: What&#39;s the future of Mono, Ximian&#39;s implementation of .Net on Linux?</p><p>Stone: We are going to continue to push it. .Net on Linux is a great idea. We just hope Microsoft isn&#39;t against the idea.</p><p>Yes, .Net on Linux is a good idea, and I doubt Microsoft will have a problem with it. I mean, have they yet? Read the Article.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hits from a survival guide.]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-05-Hits-from-a-survival-guide</link>
            <guid>https://chris.pelatari.com/posts/2003-08-05-Hits-from-a-survival-guide</guid>
            <pubDate>Tue, 05 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Too funny. I try to post mainly .net related findings, and enjoy relatively low traffic here other than the occasional google or yahoo search on &quot;object reference...&quot;.</p><p>All it takes is a nearby Texan to post about one thing non-dotnet...and I&#39;ve gotten a bunch of hits about my potty humor. I&#39;m not that good a programmer, anyway:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[From the Trenches...]]></title>
            <link>https://chris.pelatari.com/posts/2003-08-01-From-the-Trenches</link>
            <guid>https://chris.pelatari.com/posts/2003-08-01-From-the-Trenches</guid>
            <pubDate>Fri, 01 Aug 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Alex Lowe says:</p><blockquote><p>?My motto: You&#39;ve got to know someone&#39;s pain to make it go away.</p></blockquote><p>Adding to <a href="http://scottwater.com/blog/posts/9207.aspx" target="_blank" rel="noreferrer">others who have stated it</a>, I&#39;d like to congratulate <a href="http://weblogs.asp.net/alowe" target="_blank" rel="noreferrer">Alex Lowe</a> on his new position at Microsoft. I spoke with him directly about this, and got the above quote in response to a discussion about some Evangelists that I&#39;ve met (not <a href="http://radio.weblogs.com/0001011/" target="_blank" rel="noreferrer">that one</a>, he&#39;s actually pretty cool in person) getting out of touch with what&#39;s going on &quot;In the trenches&quot;.</p><p>The quote alone makes me confident that Microsoft has made a wise decision. Good luck, Alex!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Mission Possible]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-30-Mission-Possible</link>
            <guid>https://chris.pelatari.com/posts/2003-07-30-Mission-Possible</guid>
            <pubDate>Wed, 30 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So how&#39;s about a project I haven&#39;t goofed up yet?</p><p>I started to make a little headway on the UI of Miny, my first WinForms project. Miny is the name given to the project because a change in the data structure requires a &quot;one to miny&quot; relationship, whatever that is&lt;G&gt;.</p><p>All I really have to say at this point is wow - the <a href="http://www.dotnetmagic.com/" target="_blank" rel="noreferrer">MagicLibrary</a> is a must-have if you&#39;re developing WinForms. It comes with sample source code, and thanks to that and a helpful <a href="http://www.aisto.com/roeder" target="_blank" rel="noreferrer">Example by Lutz Roeder</a> (sp?) with a similar library, I hit the ground running with some VS.NET - style menus including images.</p><p>nice.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[AcceptChanges()]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-30-AcceptChanges</link>
            <guid>https://chris.pelatari.com/posts/2003-07-30-AcceptChanges</guid>
            <pubDate>Wed, 30 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Okay, I&#39;m about to show a little of my ignorance here, but that&#39;s okay - at least I&#39;m blogging again.</p><p>I just tracked down a bug in some software I wrote that was actually my fault (this time). It had to do with DataSets, their disconnected behavior, and a corresponding method &quot;.AcceptChanges()&quot;. When I had originally added this cute little method to my app, I figured that it would fire off a message to the underlying database telling it the changes I&#39;ve made are accepted.</p><p>Wrong. According to MSDN:</p><p>When AcceptChanges is called, any DataRow object still in edit mode successfully ends its edits. The DataRowState also changes: all Added and Modified rows become Unchanged; Deleted rows are removed.</p><p>and it goes on to say:</p><p>The AcceptChanges method is generally called on a DataTable after you attempt to update the DataSet using the DbDataAdapter.Update method.</p><p>which, of course, I didn&#39;t bother to read the first time &#39;round. Basically, I was &quot;accepting changes&quot; before the update/insert was made - the bug was not discovered, however, until I tried to put in a new record into the database...I was testing on records which were already entered, and the last method with a straggling .AcceptChanges() method was never called, hence the call was never removed.</p><p>The worst part is that I recognized the rush of adrenaline as someone told me something live is &quot;broken&quot; - heh, that could mean just about anything. Thankfully, I knew where the problem child of this beast was - in a monolithic page with too many controls for its own good. Bug found, targeted, searched, destroyed.</p><p>HAND.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[WhoIs, and my first WinForms Project]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-23-WhoIs-and-my-first-WinForms-Project</link>
            <guid>https://chris.pelatari.com/posts/2003-07-23-WhoIs-and-my-first-WinForms-Project</guid>
            <pubDate>Wed, 23 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Yesterday I picked up my first Windows Forms project.</p><p>I think it should be pretty lightweight -&gt; it&#39;s going to be a data entry app for &quot;API Headers&quot;, which is descriptive information about Oil/Gas Well logs. The hardest part I think will be converting the FoxPro Database over to Sql Server - not the data itself, but figuring out where to change what is basically a monolithic table (in spreadsheet fashion) to more normal data. Who knows? Maybe it&#39;ll be fun. heh.</p><p>In the meantime, I decided to write a front-end to a nice little gem embedded into <a href="http://www.aspnetdns.com/" target="_blank" rel="noreferrer">aspNetDns</a>, WhoIs. I found myself wanting to do whois queries, and sometimes if you use an online search too often, the server will get bogged down - not a fun chore, for me or the server admin. The component makes it extremely easy to do a whois query - it took me 2 lines of code to accomplish it. If you want some more information on that and other utilities like it, ping <a href="http://weblogs.asp.net/DWanta" target="_blank" rel="noreferrer">Dave Wanta</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Finally, my upgrade!]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-23-Finally-my-upgrade</link>
            <guid>https://chris.pelatari.com/posts/2003-07-23-Finally-my-upgrade</guid>
            <pubDate>Wed, 23 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I haven&#39;t blogged for a while, I&#39;m on an extended Monday &lt;g&gt;...but anyhoo I just ordered by upgrade to VS.NET Ent. Architect 2003. It sucks that they&#39;re sending it thru USmail only, but for $29, I&#39;m really not complaining that much.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I just made it to Redmond.]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-14-made-it</link>
            <guid>https://chris.pelatari.com/posts/2003-07-14-made-it</guid>
            <pubDate>Mon, 14 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just made it to Redmond. Big thanks to Jim Ross, MVP for giving me a ride to my hotel. gotta go!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[nyt hackers]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-11-nyt</link>
            <guid>https://chris.pelatari.com/posts/2003-07-11-nyt</guid>
            <pubDate>Fri, 11 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>NYT: <a href="http://www.nytimes.com/2003/07/11/technology/11HACK.html?ex=1373256000&amp;en=28f47c8f075d4117&amp;ei=5007&amp;partner=USERLAND" target="_blank" rel="noreferrer">Hackers Hijack PC&#39;s for Sex Sites</a></p></blockquote><p>...since the hijacked machines download the pornographic ads from a single Web server. According to the computer investigators, that machine apparently is owned by Everyones Internet, a large independent Internet service company in Houston that also offers Web hosting services to a large number of companies.</p><p>Wow, close to home, even. In ev1&#39;s defense, they also own RackShack (for servers) and their <em>very</em> competitive priced package includes ~300Mb of free-for-all web space. They have disclaimers and such, but if a handful of their ~100,000 users (of which I am one) uses their space for less than honorable content, how would you track that down?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Yeah, it's swell...]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-11-Yeah-its-swell</link>
            <guid>https://chris.pelatari.com/posts/2003-07-11-Yeah-its-swell</guid>
            <pubDate>Fri, 11 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p><a href="http://weblogs.asp.net/gad/" target="_blank" rel="noreferrer">Andrew</a> : Ya just had to post that, didn&#39;t ya!</p></blockquote><p>Of course I did! First, Quake II is one of my favorite games (right up there with Duke Nukem:)...I haven&#39;t caught up with the times yet&lt;G&gt;</p><p>More importantly, I&#39;m going to be working with some C/C++ code in the very near future, and the example shows both the old and new (I think) source as a means to show how &quot;easy&quot; it is to port from unmanaged to managed code (in C++); there4 I&#39;m very interested in it.</p><p>Now, if you&#39;ll excuse me, I have some monsters to kill.😉</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Managed Quake II? swell.]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-11-Managed-Quake-II-swell</link>
            <guid>https://chris.pelatari.com/posts/2003-07-11-Managed-Quake-II-swell</guid>
            <pubDate>Fri, 11 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Nice. ...Must...focus...on work...</p><blockquote><p>From Brad. Interesting…</p></blockquote><blockquote><p>The thing that sold Windows as a viable gaming platform for most people was the appearance of <a href="http://www.bluesnews.com/guide/winquake.htm" target="_blank" rel="noreferrer">WinQuake</a> (and then later GLQuake and QuakeWorld). Taking a cue from past days, Vertigo Software has ported the now GPL&#39;d <a href="http://www.vertigosoftware.com/Quake2.htm" target="_blank" rel="noreferrer">Quake II engine to .NET</a> (using Managed C++, of course).</p></blockquote><blockquote><p>[<a href="http://dotnetguy.techieswithcats.com/archives/003587.shtml" target="_blank" rel="noreferrer">The .NET Guy</a>]</p></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Comment Reply]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-09-Comment-Reply</link>
            <guid>https://chris.pelatari.com/posts/2003-07-09-Comment-Reply</guid>
            <pubDate>Wed, 09 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Frans Says, in comments:</p><blockquote><p>You can buy the upgrade for vs.net 2003 for 29$ even if you have a vs.net 2002 you got with an MSDN subscription that is no longer valid. The license of that vs.net 2002 is still valid thus you are entitled to buy the upgrade.</p></blockquote><p>Thanks Frans. This would seem like a good idea, except that I&#39;m in the middle of a couple of projects being built w/ VS.NET 2002. Would an upgrade mean that I will now have only 2003? I&#39;m not sure, so I&#39;m not going to upgrade just yet.</p><p>Thanks for the tip, tho!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[v1.1.4322 w/o VS.NET 2003]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-08-v114322-wo-VSNET-2003</link>
            <guid>https://chris.pelatari.com/posts/2003-07-08-v114322-wo-VSNET-2003</guid>
            <pubDate>Tue, 08 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just installed v1.1.4322 of the dotnetfx today, bacause it&#39;s looking like the nifty tools that I&#39;m starting to see are all being built with this version of the framework. Thanks to <a href="http://www.larkware.com/" target="_blank" rel="noreferrer">Larkware News</a> for providing links to a couple of the tools that I&#39;ve been using since the install - <a href="http://jsp.mobikom.com/stoyan/vspc/vspc.html" target="_blank" rel="noreferrer">2002 to 2003 (and back) Project converter</a> and <a href="http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx" target="_blank" rel="noreferrer">ASPNETVersion Switcher</a>.</p><p>The former is pretty neat in the fact that I no longer have an MSDN subscription 😢 so I can effectively use and view Examples written with the newer, bluer(?) VS.NET 2003. The only problem(s) was (were)</p><ul><li>written w/ v1.1 dotnetfx, so I had to install that.</li><li>source code provided, but also written (um,) at v1.1, so I couldn&#39;t use the proggie on isself</li><li>rar&#39;ed. I had to download winrar to extract the files.</li></ul><p>wah-wah.😢</p><p>The latter, well, that&#39;s just cool. Quite useful little utility, kudos <a href="http://www.denisbauer.com/" target="_blank" rel="noreferrer">Denis</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Robert Sindall]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-06-robert-sindall</link>
            <guid>https://chris.pelatari.com/posts/2003-07-06-robert-sindall</guid>
            <pubDate>Sun, 06 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Robert Sindall has posted a <a href="http://weblogs.asp.net/cfrazier/story/5794.aspx" target="_blank" rel="noreferrer">VB.NET Version of my Story on Interactive About Pages using Reflection</a> in ASP.NET.</p><p>Thanks, Robert! For the VB.NET version, check out the comments of the story.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Comment Reply]]></title>
            <link>https://chris.pelatari.com/posts/2003-07-01-Comment-Reply</link>
            <guid>https://chris.pelatari.com/posts/2003-07-01-Comment-Reply</guid>
            <pubDate>Tue, 01 Jul 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Helena asks:</p><blockquote><p>Helena Posted @ 7/1/2003 3:39 AM Hello!</p></blockquote><blockquote><p>I&#39;m experiencing the same problem! Have you been able to solve it??</p></blockquote><p>I sure did solve it! Thanks to FreeDOS and fdisk, I wiped my entire machine while I had the time to do so, and reinstalled WinXP, VS.NET, and a very few other proggies I use daily. Unfortunate I had to go that route, but I figured a clean slate was much preferred over wasting hours/days/weeks trying to diagnose a problem that I just couldn&#39;t figure out.</p><p>Everything works great now. /me knocks wood</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[So VB.NET just ain't that bad after all.]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-30-So-VBNET-just-aint-that-bad-after-all</link>
            <guid>https://chris.pelatari.com/posts/2003-06-30-So-VBNET-just-aint-that-bad-after-all</guid>
            <pubDate>Mon, 30 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Hit a new &quot;milestone&quot; in my current project today, at the same time really starting to understand where the term &quot;over-engineering&quot; is founded - of course, from engineers.</p><p>Background: I&#39;m adding features that were requested by engineers onto the <a href="http://geoweb.velocitydatabank.com/Risk" target="_blank" rel="noreferrer">Risk Analysis</a> project. Basically, there are 4 components that help clearly define what is known in the Oil&amp;Gas Exploration industry as Recovery Factor - How much oil or gas do we think we&#39;re gonna get?</p><p>They&#39;re bullISH. From an end-user (who may be an engineer) perspective, tho - these things are important. So I get to learn VB.NET.</p><p>The original component used to make the calculations and the associated graphs was written about a year and a half ago in VB6. Since the move to .NET, we decided that it would be a good idea to upgrade the VB6 code to VB.NET. So far so good, but guess what? I&#39;m a C# programmer :S</p><p>So I&#39;m not finding VB.NET that difficult to work with, as a matter of fact, I&#39;m kinda digging the compatibility namespace since it&#39;s letting me leave a goodly amount of the code alone. Actually, if I stick with the fx to do my bidding, the code is looking structurally identical to the code that I write in C# (not aesthetically or syntacticly) heh! go figure.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[WORA...log4net]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-26-WORA-log4net</link>
            <guid>https://chris.pelatari.com/posts/2003-06-26-WORA-log4net</guid>
            <pubDate>Thu, 26 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.hutteman.com/weblog/2003/06/25-102.html" target="_blank" rel="noreferrer">Luke Blogs</a> of the dream of WORA.</p><p>Slightly more interesting to me at this point, tho, is his experiences with <a href="http://log4net.sourceforge.net/" target="_blank" rel="noreferrer">log4net</a>, the popular .NET alternative to log4j...This is the kind of stuff I&#39;ve been looking for, and would have if I had more than 2.5 readers. (That third one is on and off 😉</p><p>See, I have a current incarnation of an application that uses the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/emab-rm.asp" target="_blank" rel="noreferrer">Exception Management Application Block</a> from M$, plus some custom schtuff I put in so I could have notification via email. I got very little feedback on which was the best to use, and the general concensus was that log4net has a broader range of purpose.</p><p>That&#39;s cool, but added to this, I doubt I would run into Luke&#39;s problem simply because I&#39;ve yet to write a downloadable windows forms application, so my apps sit on a server which I have a lot of control over.</p><p>Eh.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Object ref....]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-23-Object-ref</link>
            <guid>https://chris.pelatari.com/posts/2003-06-23-Object-ref</guid>
            <pubDate>Mon, 23 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Heh - I get more traffic <a href="http://www.chrisfrazier.net/phoenix" target="_blank" rel="noreferrer">here</a> and <a href="http://weblogs.asp.net/CFrazier" target="_blank" rel="noreferrer">there</a> from a post I made a while back that had the words &quot;Object reference not set....&quot; you know, you&#39;ve seen it.</p><p>I guess this is a really common problem. There&#39;s got to be a way to give developers, novice and seasoned, more information about this exception than is currently given. I&#39;m sure there&#39;s someone in M$Land who can shed some light on this.</p><p>Any takers?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Corporate Blogs Catching on]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-23-Corporate-Blogs-Catching-on</link>
            <guid>https://chris.pelatari.com/posts/2003-06-23-Corporate-Blogs-Catching-on</guid>
            <pubDate>Mon, 23 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://www.nytimes.com/2003/06/22/business/yourmoney/22EXLI.html?ex=1371614400&amp;en=aa6f8754247627bf&amp;ei=5007&amp;partner=USERLAND" target="_blank" rel="noreferrer">Corporate Blogs Catching on</a></p><p>It&#39;s like a plague. I have some unmanned Tripod sites that sent the &quot;webmaster&quot; (yours truly) an email detailing how someone should have a Blog for the summer.</p><p>Am I just late in seeing this stuff?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[WinXP wipe]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-17-WinXP-wipe</link>
            <guid>https://chris.pelatari.com/posts/2003-06-17-WinXP-wipe</guid>
            <pubDate>Tue, 17 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So, after my wah-wah yesterday about Visual Studio, I was looking thru my hotmail account and realized that they offer mobile services. Hey! I&#39;ve got a cell phone now, let&#39;s try it out!</p><p>After the confirmation message, I got a horoscope:</p><p><em>Scorpio: Today someone is being unreasonable. That someone could be you.</em></p><p>As I&#39;m reinstalling windows just because one or two programs aren&#39;t doing what they should be doing; as I am cursing Windows set up for not letting me delete C: as a partition; as I&#39;m trying to figure out why everything is blowing up on me after so long having no problems.</p><p>Oh well, 29 minutes and a few key programs left.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Things that make you go...]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-16-Things-that-make-you-go</link>
            <guid>https://chris.pelatari.com/posts/2003-06-16-Things-that-make-you-go</guid>
            <pubDate>Mon, 16 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Visual Studio .NET has not been my friend lately.</p><p>Last week, ASPNET was having issues - taking up to 4 minutes to compile a (relatively) small project. Now, I can&#39;t get to any SQL Server instance on my network - When I attempt to connect thru the server explorer, I get the nice friendly message &quot;The specified procedure could not be found.&quot;</p><p>Thanks, Visual Studio.</p><p>I can&#39;t help but wonder if this may be intentional...VS.NET 2003 just came out, and now I&#39;m having problems w/ 2002 after over a year of no problems...things that make you go hmm.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Added a snippet  DHTML ImageButton server control]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-16-Added-a-snippet-DHTML-ImageButton-server-control</link>
            <guid>https://chris.pelatari.com/posts/2003-06-16-Added-a-snippet-DHTML-ImageButton-server-control</guid>
            <pubDate>Mon, 16 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Thanks to a recent upgrade(?) to this here blog engine, I was able to recover a story I wrote a while back that I never set to &quot;active&quot;. It&#39;s called <a href="http://weblogs.asp.net/cfrazier/story/6725.aspx" target="_blank" rel="noreferrer">Enter the QuickButton</a> and it deals with adding DHTML rollover behaviors to the ImageButton control that ships with asp.net.</p><p>Enjoy!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Member cap]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-14-Member-cap</link>
            <guid>https://chris.pelatari.com/posts/2003-06-14-Member-cap</guid>
            <pubDate>Sat, 14 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Each Workspace has a maximum limit of 500 members.</p></blockquote><blockquote><p>[<a href="http://www.gotdotnet.com/" target="_blank" rel="noreferrer">gotdotnet workspaces</a>]</p></blockquote><p>Wha? I thought it was only 20. Very interesting....</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ypXmlTree]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-08-ypXmlTree</link>
            <guid>https://chris.pelatari.com/posts/2003-06-08-ypXmlTree</guid>
            <pubDate>Sun, 08 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m still kicking around some ideas for an online aggregator, so I can maybe look over some of the blogs I frequent over my loverly dial-up connextion at home. I wanted to use a tree structure like the left pane of <a href="http://www.sharpreader.net/" target="_blank" rel="noreferrer">SharpReader</a> (and others, but sharpreader&#39;s what I use a lot:).</p><p>In my searching, I found a great xml tree component from <a href="http://www.youngpup.net/" target="_blank" rel="noreferrer">youngpup</a>. Well, I&#39;ve had my hands on it for a while, but I&#39;m just now getting to the meat of it. This component uses xslt to convert an xml file to html, then uses javascript to toggle expanded state. Good component, but there&#39;s a little snafu.</p><p>I want to take an opml file (generated from sharpreader) and use it to populate my tree. This means I can either a) apply xslt to the opml file so it will retain the structure needed for the javascript component or b) write a custom server control that will take opml and generate the necessary html for the javascript.</p><p>Not sure which way I&#39;m gonna go at this point, but I&#39;m leaning toward b as I have experience with server control authoring and zilch with xslt. Might be fun to learn xslt, but I think that I may leave that route to a later date and a more seasoned developer.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[That's great. It's a website.]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-08-Thats-great-Its-a-website</link>
            <guid>https://chris.pelatari.com/posts/2003-06-08-Thats-great-Its-a-website</guid>
            <pubDate>Sun, 08 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Earlier tonight, I showed my girlfriend Tina some of the work I&#39;ve done, namely <a href="http://www.velocitydatabank.com/" target="_blank" rel="noreferrer">www.velocitydatabank.com</a> and my most recent endeavor, <a href="http://geoweb.velocitydatabank.com/Risk" target="_blank" rel="noreferrer">Risk Analysis</a>. Like whoa.</p><p>It&#39;s different showing this stuff to those who are not primarily technically oriented, to say the least. She was slightly impressed, but I think she just said that to make me feel good about myself. That was nice of her.</p><p>Has anyone else had experiences like this? I remember showing my mom my company&#39;s website when I first rolled it out, and she kind of got this glazed look over her eyes like, wha? Anyways, just thought I&#39;d share.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The .NET pledge]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-07-The-NET-pledge</link>
            <guid>https://chris.pelatari.com/posts/2003-06-07-The-NET-pledge</guid>
            <pubDate>Sat, 07 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://samgentile.com/blog/posts/7794.aspx" target="_blank" rel="noreferrer">I took the pledge</a>. You should, too.</p><p>Good stuff, Sam.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[xsd2db and Me]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-06-xsd2db-and-Me</link>
            <guid>https://chris.pelatari.com/posts/2003-06-06-xsd2db-and-Me</guid>
            <pubDate>Fri, 06 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>I have been looking for <a href="http://sourceforge.net/projects/xsd2db/" target="_blank" rel="noreferrer">xsd2db</a>, a tool for generating a database schema from an XML schema, ever since I read <a href="http://radio.weblogs.com/0112946/stories/2003/04/29/unifyingObjectAndRelationalDataStructures.html" target="_blank" rel="noreferrer">this article</a>. Unfortunately, when it came time for me to recall the location of the tool I had forgotten where I found it in the first place (I&#39;m sometimes lazy on my bookmarks). Thanks to <a href="http://www.larkware.com/index.html" target="_blank" rel="noreferrer">Mike Gunderloy&#39;s</a> most recent <a href="http://www.larkware.com/Articles/TheDailyGrind85.html" target="_blank" rel="noreferrer">Daily Grind</a>, I was able to locate the tool.</p></blockquote><blockquote><p>It works as promised, and I was able to create a database with the appropriate entities for a few complex types defined in my XSD for a SQL Server database and an Access database.</p></blockquote><blockquote><p>[<a href="http://weblogs.asp.net/cosgood/posts/7660.aspx" target="_blank" rel="noreferrer">Chad Osgood&#39;s Blog</a>]</p></blockquote><p>Schweet! I&#39;ve been thinking about changing over the backend for my blog engine to use sql server since it&#39;s available to me, and it looks like I will now have the chance. Nice.</p><p>I used this tool to generate a SQL Server DB using the xsd that is currently in place. I&#39;m still not sure if it will handle annotated datasets, but that&#39;s just a few keystrokes away I think. Cool deal - tools like this make things so much easier to deal with...for me anyway:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Must...resist...]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-04-must-resist</link>
            <guid>https://chris.pelatari.com/posts/2003-06-04-must-resist</guid>
            <pubDate>Wed, 04 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Must...resist...giving...Dvorak google juuce!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Log this!]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-04-Log-this</link>
            <guid>https://chris.pelatari.com/posts/2003-06-04-Log-this</guid>
            <pubDate>Wed, 04 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>What&#39;s your poison? <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/emab-rm.asp" target="_blank" rel="noreferrer">Exception Management Application Block</a> or <a href="http://log4net.sourceforge.net/release/1.2.0.30507/doc/manual/introduction.html" target="_blank" rel="noreferrer">log4net</a> ?</p><p>Why?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Srinath says]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-03-Srinath-says</link>
            <guid>https://chris.pelatari.com/posts/2003-06-03-Srinath-says</guid>
            <pubDate>Tue, 03 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Srinath says regarding my previous post:</p><p>Please check our secure guide, section &quot;Accessing System Resources &gt; Accessing Event Log&quot; at <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetch08.asp?frame=true#accessingsystemresources" target="_blank" rel="noreferrer">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetch08.asp?frame=true#accessingsystemresources</a></p><p>Good stuff. Wish I had thought to look here before I commenced head-throttling this morning;)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Exception Management Block]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-03-Exception-Management-Block</link>
            <guid>https://chris.pelatari.com/posts/2003-06-03-Exception-Management-Block</guid>
            <pubDate>Tue, 03 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Okay, so I dove into the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/emab-rm.asp" target="_blank" rel="noreferrer">Exception Management Application Block today</a>.</p><p>I&#39;ve been using it on a current application, but I wanted an email to be sent to me on an exception, so I had to subclass. So far, the EventLog has been enough.</p><p>I found a little quirk that I suppose I should have realized before - the default ASPNET user does not have rights to create an EventLog section for custom viewing of application exceptions, so the section I was trying to create just wasn&#39;t kickin it. This was a bit tough to find, as the QuickStart that comes with the application block creates the section no problem (if you have admin rights like me;)</p><p>Basically, all I had to do to get the custom &quot;Publisher&quot; to work was to remove the logName=&quot;&quot; and applicationName=&quot;&quot; elements from the configuration section of web.config. Now I get the EventLog and Email notification - and only one half of my head retains the dent from this morning&#39;s banging.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[+1 reader]]></title>
            <link>https://chris.pelatari.com/posts/2003-06-01-1-reader</link>
            <guid>https://chris.pelatari.com/posts/2003-06-01-1-reader</guid>
            <pubDate>Sun, 01 Jun 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Heh, I&#39;ve got 3 readers now.</p><p>Someone pinged me and said the link in my previous post doesn&#39;t work. Sorry bout that, it won&#39;t be &quot;live&quot; until Monday at the earliest. Also, it requires login/registration with <a href="http://www.velocitydatabank.com/" target="_blank" rel="noreferrer">Velocity Databank</a> reason being it is targeted at a very precise audience - namely Geologists/Geophysicists and soon Oil &amp; Gas Engineers.</p><p>We have some other <a href="http://quicklook.velocitydatabank.com" target="_blank" rel="noreferrer">Exploration Tools</a> that don&#39;t require login as well. I guess it wouldn&#39;t seem that exciting if you weren&#39;t some sort of GeoTech, tho.</p><p>cya.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[VS.NET being difficult...]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-31-VS.NET-being-difficult</link>
            <guid>https://chris.pelatari.com/posts/2003-05-31-VS.NET-being-difficult</guid>
            <pubDate>Sat, 31 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Uh-oh. I did a little finishing touches to my latest application, <a href="http://geoweb.velocitydatabank.com/Risk" target="_blank" rel="noreferrer">Risk Analysis</a> and it looks like Visual Studio doesn&#39;t like something I&#39;ve done lately.</p><p>It took about 3.5 minutes to build/compile a 6 page ASP.NET project. That ain&#39;t good. So it looks like I&#39;ll be spending Monday doing some spring cleaning on the Punisher. Oh boy.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[You're a nerd.]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-30-Youre-a-nerd</link>
            <guid>https://chris.pelatari.com/posts/2003-05-30-Youre-a-nerd</guid>
            <pubDate>Fri, 30 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Last night I couldn&#39;t go to sleep, so I hopped on my laptop @ 1:00am.</p><p>The funny part is, when my modem stopped hand-shaking, one of my favorite <a href="http://objective.mine.nu/" target="_blank" rel="noreferrer">&#39;softies</a> popped up on Windows Messenger.</p><p>I won&#39;t go into a lot of the exact things we discussed as I don&#39;t know how this person feels about personal disclosure, but I can tell you my initial thought and thus my initial message to him:</p><p>&quot;You&#39;re a nerd.&quot;</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Pattern Primate...]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-30-Pattern-Primate</link>
            <guid>https://chris.pelatari.com/posts/2003-05-30-Pattern-Primate</guid>
            <pubDate>Fri, 30 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>...from code monkey:P. Rollin right along, I&#39;m getting more used to using patterns in my regular speech (as a developer, anyway:)</p><p>Trouble is, as I&#39;ve said before, that I&#39;m a sloooooooow reader. I guess I need to work on that a bit. Disregarding some of the more obvious design pattern speech impediments I&#39;m experiencing, here&#39;s a few things I&#39;m trying to work out for InfiniBlogWeb:</p><ul><li>&quot;pluggable&quot; data storage. Meaning filesystem/db. I&#39;ll see what I come up with on that one:)</li><li>Comments. Yeah. Comments would be good.</li><li>Pingback/Trackback/Per-post referrals</li><li>These won&#39;t mean a lot to my blog perse, but I think in general are good things to have in a blog engine, no?</li><li>Rotate Brain. eek. Mini-Gallery, personalization type stuff that really serves no visible purpose besides posterity.</li><li>Refactor based on some of the design patterns I&#39;m learning. I&#39;ve gotten some suggestions, but honestly don&#39;t have a grasp for what they mean yet. I need to read more, I guess.</li><li>External interface for what I wanna do here. I don&#39;t want to ever have to see my blog or IE to make these posts, tho they do have thier place IMHO.</li><li>That&#39;s the best I can come up with for the moment. We&#39;ll see what shakes up in the near future...cya.</li></ul></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Cross-posting revisited]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-30-Cross-posting-revisited</link>
            <guid>https://chris.pelatari.com/posts/2003-05-30-Cross-posting-revisited</guid>
            <pubDate>Fri, 30 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>One more thing - ScottW, you&#39;re the dude. man. whateva.</p><p>All I had to do this morning to enable cross-posting from my non-read space was change the url in web.config to point @ weblogs.asp.net . Nice:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Unwittingly giving Google Juice...]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-28-Unwittingly-giving-Google-Juice</link>
            <guid>https://chris.pelatari.com/posts/2003-05-28-Unwittingly-giving-Google-Juice</guid>
            <pubDate>Wed, 28 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip&gt;</p></blockquote><blockquote><p>Well, I&#39;m sure that lots of webloggers will fall into that trap.</p></blockquote><blockquote><p>Not me.</p></blockquote><blockquote><p>&lt;/snip&gt;</p></blockquote><blockquote><p>[<a href="http://radio.weblogs.com/0001011/2003/05/28.html#a3123" target="_blank" rel="noreferrer">The Scobleizer Weblog</a>]</p></blockquote><p>D&#39;oh!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[HashConfigCs]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-23-HashConfigCs</link>
            <guid>https://chris.pelatari.com/posts/2003-05-23-HashConfigCs</guid>
            <pubDate>Fri, 23 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just made a change to some code I wrote a while back that generates a text file with strong encryption/decryption keys for use in a machine.config or web.config.</p><p>The change was minor, but when I first used it I didn&#39;t intend to tell anyone about it, but nor did I have a blog. Basically, all I did was add a little code to the MSDN example that walks you thru the process of defining strong &lt;machineKey/&gt; elements for inter-host forms authentication (among other things).</p><p>It&#39;s a command-line exe that takes 3 arguments:</p><ol><li>number of bytes to make the decryption key</li><li>number of bytes to make the validation key</li><li>output file name.</li></ol><p>The example given by MSDN is great, and there aren&#39;t any code changes as far as the logic for creating the keys go. I wanted to be able to copy/paste the results tho, so I added some pretty trivial filestream code to it. If one of you two is interested, ping me. Oh yeah, the code is in C#.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[RegExValidator Tester]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-21-RegExValidator-Tester</link>
            <guid>https://chris.pelatari.com/posts/2003-05-21-RegExValidator-Tester</guid>
            <pubDate>Wed, 21 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just had to do a test for a RegExValidator.</p><p>Wow! Interesting, no? Keep reading.</p><p>A while back, I had to do a few tests to check if certain regEx&#39;s would work in a regex validator. Since said validator uses JavaScript RegExp&#39;s, I couldn&#39;t test for validation on <a href="http://www.regexlib.com/" target="_blank" rel="noreferrer">Steve Smith&#39;s RegexLib.com</a>. Great resource there, Steve - but I&#39;m a web developer primarily. So I rolled my own.</p><p>You can find it on my little aspalliance web space <a href="http://www.aspalliance.com/christopher/experiments/RegExValidator.aspx" target="_blank" rel="noreferrer">here</a>. I&#39;ve used it quite a few times, but it&#39;s been a private deal - so there&#39;s no UI, no design went into it, it&#39;s simply a utility that works much like the tester on RegexLib; I simply made it work with a regexValidator so it requires one more postback. If any of my 2 readers enjoys this or finds it useful, please let me know. As always, feedback is appreciated - I&#39;m still learning, here folks.</p><p>HAND.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[dmrader]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-20-dmrader</link>
            <guid>https://chris.pelatari.com/posts/2003-05-20-dmrader</guid>
            <pubDate>Tue, 20 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Welcome to my pal Devin Rader who has just started a blog on dotnetweblogs.</p><p>&lt;snip/&gt;</p><p>[Julia Lerman Blog]</p><p>Subscribed.</p><p>[Listening to: Two Tabs Of Mescaline - Glassjaw - Worship And Tribute (06:12)]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The Bridge Whatsis?]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-20-The-Bridge-Whatsis</link>
            <guid>https://chris.pelatari.com/posts/2003-05-20-The-Bridge-Whatsis</guid>
            <pubDate>Tue, 20 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>The Bridge pattern. All I have to say is...&quot;huh?&quot;. Is it me or does this pattern seem like more of an abstract idea than the others I&#39;ve seen so far? I think I&#39;m going to have to read this chapter again. I don&#39;t mind, I&#39;ll come back to it.</p><p>So why am I reading DPE? Well, it occurs to me that a lot of developers I respect and think of as well-refined in their skills use these terms to not only communicate but also think about development in a higher order. I want that. I&#39;m hungry. I want to collaborate with developers who are much better versed than I am and not just think, &quot;huh?&quot;. I&#39;ve got a lot of work to do.😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[WYSIWYG 4 Opera]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-15-WYSIWYG-4-Opera</link>
            <guid>https://chris.pelatari.com/posts/2003-05-15-WYSIWYG-4-Opera</guid>
            <pubDate>Thu, 15 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Just wondering; has anyone figured out how to do rich text editing in other browsers, i.e. Opera?[<a href="http://objective.mine.nu/archive/2003/5/14.aspx#when:15:02:52.9048272" target="_blank" rel="noreferrer">Objective</a>]</p></blockquote><p><a href="http://www.google.com/search?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=UTF-8&amp;q=Opera+rich+text+edit+&amp;btnG=Google+Search" target="_blank" rel="noreferrer">http://www.google.com/search?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=UTF-8&amp;q=Opera+rich+text+edit+&amp;btnG=Google+Search</a></p><p>returned a couple of java applets that claim to do this.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[developerLabs]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-13-developerLabs</link>
            <guid>https://chris.pelatari.com/posts/2003-05-13-developerLabs</guid>
            <pubDate>Tue, 13 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>By far, the most interesting aspect of the windows 2003 launch event came from someone who is NOT employed by m$...Stephen &quot;7 of 9&quot; Fulcher.</p><p>Why &quot;7 of 9&quot;? Well, I often see some of the &quot;<a href="http://objective.mine.nu/" target="_blank" rel="noreferrer">&#39;softies</a>&quot; refer to <a href="http://www.gotdotnet.com/team/dbox" target="_blank" rel="noreferrer">themselves</a> as &quot;the b0rg&quot; or &quot;assimilated&quot;. Following that scheme, Stephen used to work for m$, but now holds the title &quot;Principal&quot; for a company he started called <a href="http://www.developerlabs.net/" target="_blank" rel="noreferrer">developerLabs</a>.</p><p>I saw Stephen there at the Reliant Center, and said hey to him. He shook my hand and pretended to know me. Or rather, he treated me with the respect of someone he knew. That was cool. Believe me, I&#39;m a nobody - so when someone treats me like that, I remember. It&#39;s important.</p><p>So of course, I&#39;ll definitely be looking into taking a course or two at <a href="http://www.developerlabs.com/" target="_blank" rel="noreferrer">developerLabs</a>, and if I can&#39;t benefit from taking the courses there, I&#39;ll do whatever I can to give Mr. Fulcher a hand over there. Yep. It&#39;s that important.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Lessons learned.]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-13-Lessons-learned</link>
            <guid>https://chris.pelatari.com/posts/2003-05-13-Lessons-learned</guid>
            <pubDate>Tue, 13 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Just got back from the windows server 2003 launch event. Got some cool toys to play with, but I learned some interesting things...here&#39;s the gist.</p><p>First, the Reliant Stadium...the event was held at the Reliant Center, about 100 ft from Reliant Stadium, and all I have to say is Geez, that thing is huge. It stands next to the &#39;Dome, and believe me when I say that it literally dwarfs the &#39;8th wonder of the world&#39;. Oh yeah, thanks Uncle Billy for making me pay $7 to attend your &#39;free&#39; event.😛</p><p>I only stayed for the first half, b/c this is pretty much all I could handle, but here are a few things that I gleaned from this morning:</p><ul><li>[insert technology here] Evangelist ~ high-falutin&#39; sales person. (No offense I hope, Scoble;) Don&#39;t get me wrong, they know their stuff...but perhaps &#39;evangelist&#39; is the correct title for these folks (in the Gulf Coast area, anyway.)</li><li>Why were almost all of the benchmark tests done against NT4.0 as opposed to win2k? In their defense, there were also graphs shown where they went against RH linux/Apache v. IIS6. That was interesting.</li><li>I didn&#39;t really see anyone &#39;new&#39;, barring the VP of M$. That was cool.</li><li>The &#39;sessions&#39; covered the same topics that I&#39;d been seeing at developercare , which is okay despite the fact that some of this stuff I do know, so let&#39;s not go over basics for a bunch of people who came to see a new technology launch, okay? Thanks.</li></ul><p>more to come...</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Delimma]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-13-</link>
            <guid>https://chris.pelatari.com/posts/2003-05-13-</guid>
            <pubDate>Tue, 13 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p> Delimma: What the heck am I? I get to the launch event and there are three &#39;tracks&#39; you can take: </p> 1. Developer 2. Architect 3. IT Pro. <p>Obviously, IT Pro is out the window for me. That&#39;s fine, I can handle that (for now:P)...the problem? I consider myself neither a developer nor an architect; I&#39;m kind of 1.5 in that respect. Let&#39;s say I&#39;m a code munkey aspiring to be a simian architect.</p><p>So, I decide to go the Architect route as this is the area I need direction in...the developer track was all about the goodies that you&#39;ll find in VS.NET 2003, which I&#39;d honestly like to get my hands dirty with to learn about, thanks.</p><p>Topic: SOA, and the platform to deliver it. I took a few notes, but the first thing on the first page says:</p><p>&quot;Patterns and Practices&quot;.</p><p>Can anyone else see where this is going? This was the first time I had seen this particular &#39;evangelist&#39; (Architect Evangelist TBE...explain THAT one:) speak, so I figured what the hey, I&#39;ll check him out.</p><p>The speaker&#39;s name was John Opalko, and AFAIK, he&#39;s the lead for the developercare guys out here in Houston. Interesting topic, interesting points, unfortunately about 89% of the speech seemed stripped from the pages of [insert design pattern book here]. There was plenty of DP jargon flying around this conference room. Wow.</p><p>A couple of the key concepts that I heard in this session:</p><ul><li>&quot;Just because you&#39;re using Web Services doesn&#39;t mean you&#39;ve got Service Oriented Architecture.&quot;</li><li>Each service handles its own state information, usually persisted to a Database.</li><li>SOA is Message centric, wherein the message contains context you wouldn&#39;t expect to have from a simple method call.</li><li>Msg != function call.</li><li>Service Arch. is similar to component arch, the main difference being how state info is handled.</li><li>He pronounced WSDL &quot;Whiz-duhl&quot;...does everybody do this?</li><li>Each step in SOA is a transaction.</li><li>Services should practice &quot;Healthy Distrust&quot;...neat buzzword, makes sense.</li></ul><p>Okay, more than a couple.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Functional Decomposition]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-12-Functional-Decomposition</link>
            <guid>https://chris.pelatari.com/posts/2003-05-12-Functional-Decomposition</guid>
            <pubDate>Mon, 12 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Functional Decomposition: A method of breaking down a problem into smaller and smaller functions. Each function is subdivided until it is manageable.</p><p>So does anybody recognize the above? Yeah, I&#39;m finally reading this book - <a href="http://www.amazon.com/exec/obidos/ASIN/0201715945/qid=1052765647/sr=2-3/ref=sr_2_3/103-2227132-1011001" target="_blank" rel="noreferrer">Design Patterns Explained</a> - in an effort to design better applications. Honestly, I&#39;m tired of hearing about patterns spouted here and there between various lists that I frequent and not knowing what it means. Couldn&#39;t be a bad thing, could it? Hopefully, reading this book will take me one step closer from being a general asp.net code munkey to earn some wings as a code-warrior. Who knows? It is not poorly written so far, so I suppose I have nothing to lose.</p><p>Pointless post, I guess - but I wanted to catalog that I&#39;ve finished chapter one of this book, so in the coming weeks if I start sounding real heavy on the pattern jargon, ping me and tell me to pimpslap myself. Thanks.</p><p>BTW - I&#39;m a slow reader. Expect a chapter 2 reference in about 6 weeks 😛</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[From one of the funniest blog titles department...]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-06-From-one-of-the-funniest-blog-titles-department</link>
            <guid>https://chris.pelatari.com/posts/2003-05-06-From-one-of-the-funniest-blog-titles-department</guid>
            <pubDate>Tue, 06 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>How <a href="http://dotnetweblogs.com/danac/" target="_blank" rel="noreferrer">ubiquitous</a>...😛</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Effective Linking]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-05-Effective-Linking</link>
            <guid>https://chris.pelatari.com/posts/2003-05-05-Effective-Linking</guid>
            <pubDate>Mon, 05 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip&gt; If I&#39;m referring to a person, I&#39;ll link directly to the home page of that persons blog, preferably identifying them however they choose to identify themselves on their blog. This way, people who look for them using search engines find them the way they want to be found. For example, If you search for Chris Hollander or ScottGu, we respectively show up the way we want to, without revealing extra information. &lt;/snip&gt;</p></blockquote><p>Consequently, I gave my own name a shot (egotistical megalomaniac) with darn fine results I think - <a href="http://www.google.com/search?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=UTF-8&amp;q=Chris+Frazier" target="_blank" rel="noreferrer">Chris Frazier</a>. Cool. Thanks, dotnetweblogs.com!</p><p>[Listening to: Over The Hills And Far Away - Led Zeppelin - Houses Of The Holy (04:52)]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[My favorite Exception.]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-04-My-favorite-Exception</link>
            <guid>https://chris.pelatari.com/posts/2003-05-04-My-favorite-Exception</guid>
            <pubDate>Sun, 04 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>&quot;Object reference not set to an instance of an object&quot;</p><p>I&#39;m not usually one to make my ignorance publicly known.</p><p>Okay, if you&#39;ve seen any amount of my posts <a href="http://www.chrisfrazier.net/phoenix" target="_blank" rel="noreferrer">here</a> or <a href="http://www.dotnetweblogs.com/CFrazier" target="_blank" rel="noreferrer">there</a> then you know that&#39;s pretty much a lie. I&#39;m learning, right? Well, this is a learning experience for me, and the lesson for today is that the error message at the top of this post is probably one of the few things I hate about .NET.</p><p>Sure, it&#39;s my code. I&#39;ve got an error somewhere, and the runtime is telling me &quot;Yo, instantiate the object over here, you moron!&quot; But sometimes I want to pack 5 or 6 objects into a method call because it&#39;s easier and I&#39;ve made something similar work before. &quot;Object reference not set to an instance of an object&quot;. Which one, dammit?!?</p><p>I would really like it if comments could be posted on my little spin of InfiniBlog(web). But I can&#39;t. Why? &quot;Object reference not set to an instance of an object&quot;. What a putz I am. <em>grumble</em></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[To CommentAPI, or not to CommentAPI?]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-02-To-CommentAPI-or-not-to-CommentAPI</link>
            <guid>https://chris.pelatari.com/posts/2003-05-02-To-CommentAPI-or-not-to-CommentAPI</guid>
            <pubDate>Fri, 02 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve decided to take an approach based very loosely on the <a href="http://wellformedweb.org/story/9" target="_blank" rel="noreferrer">CommentAPI</a>. I&#39;m not adding the ability to post from outside of the base site yet, but I&#39;m trying to factor this to be as extensible as possible while remaining within the bounds of the original code drop I have.</p><p>We&#39;ll just have to see how this one goes.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Hyperlink This!]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-02-Hyperlink-This</link>
            <guid>https://chris.pelatari.com/posts/2003-05-02-Hyperlink-This</guid>
            <pubDate>Fri, 02 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip/&gt; Most developers do not put much thought into hyperlinks. Most of what I&#39;ve covered today is common sense, but it does pay to look back at your sites and see how you&#39;ve structured your links. I&#39;ve done this and been confused myself at times. Here is my best tactic: Although I design from a persona and goal oriented perspective, with hyperlinks I generally try to create links that my mother would understand. This keeps me safe 90% of the time 😃</p></blockquote><blockquote><p>[Dana Tries Blogging (non) Blonde Style]</p></blockquote><p>Great stuff, Dana. I&#39;m finding that even tho visitors usually won&#39;t read descriptions of links/navigation, I usually come up with some inane blurb as a sort of &#39;c.y.a.&#39; measure...I want my web apps to be intuitive, true, but at the same time I tend to believe that the intelligent user will at least skim thru the instructions on the first pass thru.</p><p>Well, I hope, anyway!😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Comments...help?]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-02-Comments-help</link>
            <guid>https://chris.pelatari.com/posts/2003-05-02-Comments-help</guid>
            <pubDate>Fri, 02 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Does anyone have any pointers / links / resources I could look at for supporting comments in a blog system? I think I&#39;m ready to implement this over @ the infiniblog space.</p><p>I think the general way to go about this in asp.net is to use a web service? I&#39;m trying to keep this as extensible as possible...just a nudge in the right direction should suffice. Thanks in advance to my 2 readers.</p><p>[Listening to: Behind The Wheel - Depeche Mode - Disconet Mix (06:57)]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Comment Storage]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-02-Comment-Storage</link>
            <guid>https://chris.pelatari.com/posts/2003-05-02-Comment-Storage</guid>
            <pubDate>Fri, 02 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This comment stuff is proving to be harder than I thought.</p><p>The problem is not the API, which seems pretty straightforward. It&#39;s in the way that I will store the comment data on the server. I think that I will follow the model that I have, but it&#39;s still proving a bit more involved than I was ready for today on this Friday.</p><p>This is going to be one of those things I think that I will end up figuring out in my sleep, waking up and saying &quot;Ah, ha!&quot;. Don&#39;t lie, you&#39;ve done it before.😃</p><p>[Listening to: Gimme Some more - Busta Rhymes - (04:06)]</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Win2k Terminal Services.]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-01-Win2k-Terminal-Services</link>
            <guid>https://chris.pelatari.com/posts/2003-05-01-Win2k-Terminal-Services</guid>
            <pubDate>Thu, 01 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m pretty sure no one was paying attention (even me:), but I made a post a while back about using Terminal Services as a sort of Software KVM.</p><p>Well, I&#39;ve been using it to administer webservers at work and it works great. Getting it to work over the internet is a different topic -&gt; I haven&#39;t even scratched the surface of using the Advanced Client, but I may have to look into that option.</p><p>At any rate, I found this great document on &quot;<a href="http://nsa1.www.conxion.com/win2k/guides/w2k-19.pdf" target="_blank" rel="noreferrer">Securing Microsoft Windows 2000 Terminal Services</a>&quot;...if you&#39;re using termServ. at all, it&#39;s at least worth a quick run-thru. Plus all the pages that say &#39;Unclassified&#39; make it kind of interesting.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Last ping w/o post...]]></title>
            <link>https://chris.pelatari.com/posts/2003-05-01-Last-ping-w-o-post</link>
            <guid>https://chris.pelatari.com/posts/2003-05-01-Last-ping-w-o-post</guid>
            <pubDate>Thu, 01 May 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Okay, the last one didn&#39;t go thru - still trying to sort the logic. <em>sorry again, Scott</em>.</p><p>This is great stuff, tho. I&#39;ve learned more about xml-rpc/webservices (and the difference b/t them)/rss in the past couple of weeks than I&#39;ve learned over the past year or two in dealing with all things .NET. And it&#39;s not someone just telling me how great it is (read: marketing)...if I can see it, rather or do it myself, then I can make the decision of whether or not I like it.</p><p>Verdict? Cool beans.😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Success.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-30-Success</link>
            <guid>https://chris.pelatari.com/posts/2003-04-30-Success</guid>
            <pubDate>Wed, 30 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Why didn&#39;t I see these &#39;ping&#39; posts earlier? Looks to me like I&#39;ve got some integration to clean up! HA!</p><p>So the posts below that say something like &#39;ping&#39; were made from checking off a checkbox at <a href="http://www.chrisfrazier.net/phoenix" target="_blank" rel="noreferrer">my other blog</a>, which means this stuff worked. 😄 Good. Now this also means that I have to figure out which one works...I tried quite a few different iterations (got up to 15 before I stepped away from it:S). So this is something you can do with webservices, eh? Spiffy.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Almost.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-30-Almost</link>
            <guid>https://chris.pelatari.com/posts/2003-04-30-Almost</guid>
            <pubDate>Wed, 30 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m getting close...Trying to figure out what&#39;s going wrong here....must ping more.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The new Look, feel, and function of dotnetweblogs.com]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-28-The-new-Look-feel-and-function-of-dotnetweblogs-com</link>
            <guid>https://chris.pelatari.com/posts/2003-04-28-The-new-Look-feel-and-function-of-dotnetweblogs-com</guid>
            <pubDate>Mon, 28 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Great job, Scott. I&#39;ve decided to clean up my dotnetblogspace a little bit, so I&#39;ve moved my story links <a href="http://dotnetweblogs.com/cfrazier/story/6143.aspx" target="_blank" rel="noreferrer">here</a>. Mucho cleaner, IMHO.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[More Integration.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-28-More-Integration</link>
            <guid>https://chris.pelatari.com/posts/2003-04-28-More-Integration</guid>
            <pubDate>Mon, 28 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Also, thanks <a href="http://www.aspnetweblog.com/" target="_blank" rel="noreferrer">Scott</a> for the simpleblogservice...I think this will be the way to go, of course using post to put new entries in based on an infiniblog bit. I&#39;ve got to check with <a href="http://objective.mine.nu/" target="_blank" rel="noreferrer">Chris</a>, but I think I will make the code available for download on my site...once I get more than just a blog working there, of course:P!</p><p>The modifications I&#39;ve made are simple yet important [to this geek anyway] and include identifying a blog by virtual directory (which is what must be happening in this here blogspace) and geoUrl service via geo.blah meta tags - it works, it&#39;s cool, and I saw my personal blog show up on the map over there. Too cool. I have other plans here, too - I just got this damn day job thing that makes me put on my thinking cap sometimes. Maybe it&#39;s time to get into the zone.😉</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[The logic (or lack thereof) behind xhtml:body]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-25-The-logic-or-lack-thereof-behind-xhtml-body</link>
            <guid>https://chris.pelatari.com/posts/2003-04-25-The-logic-or-lack-thereof-behind-xhtml-body</guid>
            <pubDate>Fri, 25 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>When Sam started a small revolution last month by using <a href="http://www.intertwingly.net/blog/1299.html" target="_blank" rel="noreferrer">&lt;xhtml:body&gt; </a> in his rss-feed, &lt;snip/&gt;</p></blockquote><blockquote><p>On top of that, it seems like every rss feed that uses xhtml:body, uses tags like &lt;body xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank" rel="noreferrer">http://www.w3.org/1999/xhtml</a>&quot;&gt; for every item ,</p></blockquote><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>[<a href="http://www.hutteman.com/weblog/2003/04/23.html#000074" target="_blank" rel="noreferrer">Luke Hutteman&#39;s Weblog</a>]</p></blockquote><p>So am I missing something, or would an RSS feed be considered valid xhtml if using the &lt;body&gt; element in its items collection? As I&#39;m typing this I&#39;m thinking no - no &lt;html&gt; element, yadda yadda...</p><p>Okay, then - some more research is in order then. Two items - a filter for xhtml, and a way for extensible comments to bake in to the infiniblog. I&#39;ve been looking thru some other&#39;s ideas on a <a href="http://wellformedweb.org/story/9" target="_blank" rel="noreferrer">CommentAPI</a>, but I&#39;m not sure how I should implement it - if what I&#39;m thinking is true, an aspx page which uses a server-side form won&#39;t accept a POST from an outside script. I could use a webservice, but what about an .ashx?</p><p>The xhtml filter will require a bit more insight as to how HttpHandlers/HttpModules are handled in the runtime. We are implementing the rss feed thru an HttpHandler that accepts requests for .rss files. (We, well - <a href="http://objective.mine.nu/" target="_blank" rel="noreferrer">Chris Hollander</a> and my hi-jacking of his code:) So I need to find out if the HttpModules are still called when a Handler is implemented. Haven&#39;t really checked out the TraceLog yet.</p><p>Okay, enough blabbing - time to find out. cya!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[GeoBlog.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-25-GeoBlog</link>
            <guid>https://chris.pelatari.com/posts/2003-04-25-GeoBlog</guid>
            <pubDate>Fri, 25 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>I really, really like various tools that mix blogspace with meatspace. GeoBlog is frickin cool. real time map of blog postings, as they happen. In theory, I should see myself popup on a map, a few minutes after posting this. Very, very cool.[Objective]</p></blockquote><p>I wonder if it will really work? we&#39;re about to see....</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A sexy UI]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-25-A-sexy-UI</link>
            <guid>https://chris.pelatari.com/posts/2003-04-25-A-sexy-UI</guid>
            <pubDate>Fri, 25 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>The world must be about to end. <a href="http://www.zeldman.com/daily/0403a.shtml#fed" target="_blank" rel="noreferrer">Jeffrey Zeldman has an RSS feed</a> and <a href="http://chris.pirillo.com/secret/" target="_blank" rel="noreferrer">Chris Pirillo has a weblog format without a stupid font.</a> Now if we could only get Chris to do a weblog without a stupid font and without a totally sexy photo as the background. I find the photo more distracting than the font. Just don&#39;t tell my wife, OK? Oh, hi Maryam! 😃</p></blockquote><blockquote><p>[<a href="http://radio.weblogs.com/0001011/2003/04/24.html#a2858" target="_blank" rel="noreferrer">The Scobleizer Weblog</a>]</p></blockquote><p>Chris, I&#39;ve got to hand it to you for creating a <a href="http://chris.pirillo.com/secret/" target="_blank" rel="noreferrer">UI that will keep users interested</a>.</p><p>Oops, was that supposed to be secret?😉</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Pingbacks/trackbacks]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-23-Pingbacks-trackbacks</link>
            <guid>https://chris.pelatari.com/posts/2003-04-23-Pingbacks-trackbacks</guid>
            <pubDate>Wed, 23 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Just &#39;fixed&#39; the incoming links control over to your right there--&gt;</p></blockquote><blockquote><p>This is great stuff - I was going to roll my own type of deal here, but decided against it based on someone&#39;s advice. Thanks.</p></blockquote><blockquote><p>[phoenix]</p></blockquote><p>Whew! I&#39;ve been uploading files for a minute over on the gotdotnet workspaces! It&#39;s kind of cool, tho - this is the first project that I&#39;ve worked on with other .NET developers. It&#39;s cool to see others&#39; code and see how they approach problems and attempt to solve them.</p><p>I&#39;m enjoying it a lot, and I&#39;ve even had a couple of things to contribute, believe it or not. This is also a good way to integrate my dotnetweblogs blog [this] with a different, personal blog that I can just blab on.</p><p>I&#39;m guessing that most of the posts I make will be on both, seeing as I don&#39;t have a lot of interesting things to say that don&#39;t have to do with .NET -&gt; I&#39;m still building the other one for those few cases 😃 I just hope that ScottW doesn&#39;t change what a &#39;BlogPost&#39; is too much - I&#39;m stoked to get this stuff integrated. My other blog will be located above - just thought I&#39;d share even tho you probably don&#39;t care. Whateva;)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Need Logo]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-18-Need-Logo</link>
            <guid>https://chris.pelatari.com/posts/2003-04-18-Need-Logo</guid>
            <pubDate>Fri, 18 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>I am getting pretty close to having a downloadable version ready for public consumption.</p></blockquote><blockquote><p>One thing I am still lacking is a nice &quot;powered by ASPNetWebLog&quot; image/button. Without help, this is what I came up with :ASPNetWeblog Logo</p></blockquote><blockquote><p>Anyone skilled with Fireworks/Photoshop hanging around here? Want to whip something up real quick?</p></blockquote><blockquote><p>[<a href="http://aspnetweblog.com/posts/5834.aspx" target="_blank" rel="noreferrer">ScottW&#39;s ASP.NET WebLog</a>]</p></blockquote><p>If you have PSD files, send them to me and I&#39;ll give it a whirl. If not, let me know and I&#39;ll start from scratch. While I wouldn&#39;t call myself &#39;skilled&#39; at photoshop, I know my way around it.</p><p>Can you give me a clear concept of what you want (like, do you want the current color scheme, only flashy, um, er? do you want the words &#39;Powered By: ASPNetWeblLog&#39; to remain exactly as they are - considering CaPs and all? do you want to keep the gecko in the image?) Let me know.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[BlogThis - Thanks Simon]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-17-BlogThis-Thanks-Simon</link>
            <guid>https://chris.pelatari.com/posts/2003-04-17-BlogThis-Thanks-Simon</guid>
            <pubDate>Thu, 17 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Added new Story on using Reflection to make dynamic about pages.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-17-Added-new-Story-on-using-Reflection-to-make-dynamic-about-pages</link>
            <guid>https://chris.pelatari.com/posts/2003-04-17-Added-new-Story-on-using-Reflection-to-make-dynamic-about-pages</guid>
            <pubDate>Thu, 17 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Check it out <a href="http://dotnetweblogs.com/Cfrazier/Story/5794.aspx" target="_blank" rel="noreferrer">here</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[xhtml.xsd?]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-15-xhtml-xsd</link>
            <guid>https://chris.pelatari.com/posts/2003-04-15-xhtml-xsd</guid>
            <pubDate>Tue, 15 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Where the heck do I get my grubby developer hands on this little beast if I can&#39;t browse, save in IE? My other browsers (Opera 6.04/Mozilla 1.0) can&#39;t really handle it - opera just chokes and mozilla gives me a lot of text...maybe I could still save it as an xsd...I&#39;ll be back!</p><p><strong>UPDATE:</strong> You betcha. I browsed to <a href="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd" target="_blank" rel="noreferrer">XHTML-STRICT</a> and selected &#39;save page as&#39; in Mozilla - bam! I&#39;ve got it on the Punisher(my dev box:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[dotnetweblogs integration.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-14-dotnetweblogs-integration</link>
            <guid>https://chris.pelatari.com/posts/2003-04-14-dotnetweblogs-integration</guid>
            <pubDate>Mon, 14 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I already have this blog on <a href="http://www.dotnetweblogs.com/CFrazier" target="_blank" rel="noreferrer">dotnetweblogs.com</a>, but I feel kind of bad using someone else&#39;s server to post random crap on the web. Therefore, I was going to build my own blog system...that is until I spoke with ScottW about it.</p><p>He convinced me that instead of &#39;reinventing the wheel&#39;, as we like to say, I should focus on doing something new. Herein lies the delimma. I want to keep my blog at dotnetweblogs.com, because I believe I&#39;ll be able to help more people there with .NET centric content. Maybe not help a lot, but pay it forward as much as I can. I also want to be able to post random thoughts that come to me at 3 am when I can&#39;t go to sleep. What to do, what to do?</p><p>Start a new blog. My goal is to use the webservice that comes with my dotnetweblogs.com web space and post from what will be my new blog optionally to dotnetweblogs.com, because a lot of my thoughts have to do with .NET anyway:) So, instead of writing my own from scratch (which I wouldn&#39;t do anyway), I&#39;m going to use ChrisAn&#39;s blogx software for the time being, because I can integrate and upgrade it as I see fit...win/win situation.</p><p>I&#39;m still going to build a web-based aggregator, because I do want to learn more about these &quot;cool xml technologies, but I&#39;m already comfortable with web applications - and I was kind of looking forward to throwing my hand into windows forms. One thought I did have tho was to use ChrisAn&#39;s blogx software as an href exe, b/c that&#39;s a neat stuff IMHO. I don&#39;t know where else I should go from here...upgrading or extending well-written code shouldn&#39;t be that difficult, but difficulty is not my desire. I just wanted to do a side project that would give me a chance to learn some of the other cool technologies .NET has to offer.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[asp.net user control to display scrollable rss2.0 feeds]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-12-aspnet-user-control-to-display-scrollable-rss20-feeds</link>
            <guid>https://chris.pelatari.com/posts/2003-04-12-aspnet-user-control-to-display-scrollable-rss20-feeds</guid>
            <pubDate>Sat, 12 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>Whad&#39;ya all think?</p></blockquote><blockquote><p>&lt;/snip&gt;</p></blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/JLerman/posts/5526.aspx" target="_blank" rel="noreferrer">Julia Lerman Blog</a></p></blockquote><p>Sweet! I like the inter face, looks very similar to <a href="http://dotnetweblogs.com/Cfrazier/posts/5495.aspx" target="_blank" rel="noreferrer">something I have in mind</a>. I&#39;m going to probably use <a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=0dc6fa70-7f22-4c19-9b77-cf8774dc2f17" target="_blank" rel="noreferrer">some other people&#39;s controls</a>, and use xslt on the feed items because it just makes sense to me. I mean, this stuff is all xml, right? I&#39;m not sure if this particular control will accomodate rss2.0 or not, but it should not be that hard to modify the xslt if not.</p><p>I don&#39;t really know a lot about these cool xml technologies, but that&#39;s the main reason to do it, innit? I&#39;m also going to put together not an aggregator, but a blog-postin windows form, ala ASPNetWebLog - but to post to a different blog. Just have to wait till ScottW gets the bits worked out for the latest, greatest version of <a href="http://www.aspnetweblog.com/" target="_blank" rel="noreferrer">ASPNetWebLog</a> and the accompanying webservice...can&#39;t hardly wait!</p><p>BTW, I&#39;ve got to say another big ole thank ya to Scott for giving me the means as well as the base to learn this stuff from - what a cool cat!😉</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Where is everybody?]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-12-Where-is-everybody</link>
            <guid>https://chris.pelatari.com/posts/2003-04-12-Where-is-everybody</guid>
            <pubDate>Sat, 12 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>Where is everybody? You can&#39;t all leave me here alone...it&#39;s not fair! So if you are actually sharing my boredom here, tell me what you&#39;re doing. I am chatting with Cory, posting this, and wondering what I&#39;m going to do next.</p></blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/Dstone/posts/5489.aspx" target="_blank" rel="noreferrer">David Stone&#39;s Blog</a></p></blockquote><p>Don&#39;t know what time you posted this, but I&#39;m just bloggin, chattin w/ Paul, and trying to think of a way to make a thin client aggregator for home and the dial up. BTW - 2:30 here.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Scobleizer vs Dvorak]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-12-Scobleizer-vs-Dvorak</link>
            <guid>https://chris.pelatari.com/posts/2003-04-12-Scobleizer-vs-Dvorak</guid>
            <pubDate>Sat, 12 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Who are most people in the industry going to believe? Dvorak or Scoble?</p></blockquote><blockquote><p>[<a href="http://radio.weblogs.com/0001011/2003/04/11.html#a2757" target="_blank" rel="noreferrer">The Scobleizer Weblog</a></p></blockquote><p>One hardcore .net developer for Scoble, right here!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[More on aggregators...]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-12-More-on-aggregators</link>
            <guid>https://chris.pelatari.com/posts/2003-04-12-More-on-aggregators</guid>
            <pubDate>Sat, 12 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Added Dare&#39;s RssBandit 1.0d, 1.1beta to the home machine...couldn&#39;t get it to work right away 😦</p><p>Added Chris&#39;s Harvester to the home machine...couldn&#39;t get it to work (as expected) right away. 😦</p><p>Have had SharpReader on the home machine for a few days now. Has anyone tried to use this one over a dial-up connection? Don&#39;t.</p><p>Also added dotnetfxv1.1.4322RTM/SDK to the home machine tonite, along with RssBanit and Harvester&#39;s accompanying .exe.config files for SxS execution via the &lt;startup/&gt; attribute. No dice.</p><p>Conclusion: Synderella works, I just wish she wouldn&#39;t arbitrarily update - takes up a lot of resources. Possible solution: web-based aggregator that will behave as I expect it to b/c I&#39;m building it. If nothing else, it should be a good learning experience, right?</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Clippy]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-11-Clippy</link>
            <guid>https://chris.pelatari.com/posts/2003-04-11-Clippy</guid>
            <pubDate>Fri, 11 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>By the way, I know some of you folks played around with this a little... any stories? [<a href="http://dotnetweblogs.com/rreese/posts/5339.aspx" target="_blank" rel="noreferrer">Rachel Reese&#39;s Blog</a>]</p></blockquote><p>I showed it to the bossman...he loved it! We used it to play a joke on a coworker. Funny stuff. Too bad I shouldn&#39;t post it here:)</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[the Scoble says...]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-09-the-Scoble-says</link>
            <guid>https://chris.pelatari.com/posts/2003-04-09-the-Scoble-says</guid>
            <pubDate>Wed, 09 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p><a href="http://radio.weblogs.com/0001011/2003/04/08.html#a2728" target="_blank" rel="noreferrer">If the FrontPage team wants some consulting, you know where to find me.</a></p><p>Will you be charging your normal dollar rate?😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[MBSA]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-09-MBSA</link>
            <guid>https://chris.pelatari.com/posts/2003-04-09-MBSA</guid>
            <pubDate>Wed, 09 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Yes I have heard of it, and yes I do use it - although probably not as often as I should :S. I personally prefer the GUI, but that&#39;s just me. I like to click. I&#39;ve been using this tool for a little while - there isn&#39;t some new version/update I should know about, is there?</p><p>-Christopher</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[devenv.exe /setup]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-08-devenv-exe-setup</link>
            <guid>https://chris.pelatari.com/posts/2003-04-08-devenv-exe-setup</guid>
            <pubDate>Tue, 08 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This was a switch I didn&#39;t even know existed from the command line. I was having some issues with VS.NET 2002 and custom Add in tools. I couldn&#39;t figure out why I could see the name of the tool in the Add in manager list, but I couldn&#39;t see the tool in the Tools menu.</p><p>Enter Dave Wanta, one of the coolest developers I know. I asked him, &quot;What&#39;s the deal?&quot; and without even missing a beat, he gave me the suggestion that is the title for this entry, and WOOT! There it is! If you haven&#39;t seen <a href="http://www.123aspx.com/" target="_blank" rel="noreferrer">Dave&#39;s Site</a> you&#39;re either living under a rock, or you could care less about .NET and aren&#39;t reading this anyway. Dave is also responsible for such components as <a href="http://www.aspnetemail.com/" target="_blank" rel="noreferrer">aspNetEmail</a>, <a href="http://www.aspnetdns.com/" target="_blank" rel="noreferrer">aspNetDns</a>, among other really useful tools for .NET.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Ok, I'll try one more time...]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-08-Ok-Ill-try-one-more-time</link>
            <guid>https://chris.pelatari.com/posts/2003-04-08-Ok-Ill-try-one-more-time</guid>
            <pubDate>Tue, 08 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Chris wrote a <a href="http://objective.mine.nu/archive/2003/3/2.aspx" target="_blank" rel="noreferrer">while back</a> about the source/binaries for his blog engine that his site uses. Count me way in! I&#39;m looking to do something similar to use as a go-by, now that I have a server for my site which will still remain unlinked 😛 content. I need it.😉</p><p>-Chris</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I love this stuff.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-08-I-love-this-stuff</link>
            <guid>https://chris.pelatari.com/posts/2003-04-08-I-love-this-stuff</guid>
            <pubDate>Tue, 08 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>As a developer, I consider myself more of a problem solver. One of my least favorite problems: Com Interop. I can&#39;t shake it. It seems that no matter how hard I try, all of my apps to date have included interop.</p><p>That said, it&#39;s kind of fun revisiting one of my first asp.net endeavors and trying to remember why I architected it so poorly. Oh yeah, I&#39;m a programmer - and at the time it was written, I remember having to make a few changes from .net beta 2 to RTM. Added to the fact that the only readily available examples that I had were in asp.old, looking back at the code has made me realize just how much I&#39;ve grown over this time.</p><p>I was trouble shooting a new application that someone else is writing based on my previous code and com interop. Probably not the best idea, but the point is gotten across. I think. The developer in question just asked me &quot;Where do you get the knowledge of how to deal with the worker process?&quot;. Well, the short answer is messing with it. Sometimes the resources that you need when debugging are locked up by a worker process that still thinks it&#39;s debugging - so Kill it! I&#39;m not up to date on the niceties of IIS 6 and the refinements of the worker process there, but the one that ships with v1.0.3705 is just well built. I can kill it in task manager and a new one pops right up!</p><p>&lt;/rant&gt;</p><p>red or green pill, you live and you learn.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[SharpReader]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-07-SharpReader</link>
            <guid>https://chris.pelatari.com/posts/2003-04-07-SharpReader</guid>
            <pubDate>Mon, 07 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>UPDATE: I am having problems add more than one feed to a category (which kind of defeats the purpose). Anyone else notice this behavior?</p></blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/TMarman/posts/4952.aspx" target="_blank" rel="noreferrer">Loosely Coupled</a>]</p></blockquote><p>Yep. Got the same deal. Of course, I&#39;m going back and forth b/t SharpReader and Synderella, cuz I can post thru Synderella! (thanks, Scott!😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Aggrrregator Overload! ---- SharpReader.]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-07-Aggrrregator-Overload-SharpReader</link>
            <guid>https://chris.pelatari.com/posts/2003-04-07-Aggrrregator-Overload-SharpReader</guid>
            <pubDate>Mon, 07 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>ok. Harvester is fun. RssBandit is better. SharpReader Owns. Its just really, really slick; the threaded posts functionality is killer; the ability to see all of the posts under a given folder is awesome, the handling of OPML is great. The aggregation engine itself seems blazing.</p></blockquote><blockquote><p>I would strongly suggest the author download the Magic UI library, and get some VS.NET UI goodness going on.</p></blockquote><blockquote><p>[<a href="http://objective.mine.nu/archive/2003/4/6.aspx#when:14:04:24.9511568" target="_blank" rel="noreferrer">Objective</a>]</p></blockquote><p>Okay, I now have 3 winform aggregators on my desktop at work. Boo!!!! Talk about a productivity killer! My short and sweet reviews:</p><p>Synderella: 3 panes. Easy to operate. I like seeing a different color for a feed that has been updated. Plus, I can blog from this one!</p><p>SharpReader: 3 panes. I like the way I can define an arbitrary amount of folders, and I can browse pingbacks/trackbacks/referrals with ease in a tree-like format. Now only if I could blog from it!</p><p>Harvester: UI gone nuts! I really like the tabbed interface/magic components w/ IDE look and feel. I cannot figure out how to import settings from OPML (on my box) but that just means I&#39;m a moron.</p><p>I haven&#39;t gotten around to RSSBandit yet, tho I&#39;ve seen it for download...I just loaded 2 more aggregators on my box - give me some breathing space! For now, it looks like SharpReader is the winner, but I&#39;ll have to keep going back and forth b/t that and Synderella, unless of course I just blog from the web...nah! I like doing it from this winform...That&#39;s got to be my favorite feature, read a feed, respond in my blog.😛</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Aggregator integration]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-07-Aggregator-integration</link>
            <guid>https://chris.pelatari.com/posts/2003-04-07-Aggregator-integration</guid>
            <pubDate>Mon, 07 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>What do you all think? Is aggregator integration into Outlook a good thing? Is it a &quot;must have&quot; feature for you? Comment or blog and let me know.</p></blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/GAD/posts/4956.aspx" target="_blank" rel="noreferrer">A Blog for Graymad</a>]</p></blockquote><p>A big, fat, hairy, resounding NEGATIVE! I&#39;m all for connectivity and all, but as Andrew points out, what a productivity killer! My day usually starts out going thru a bunch of emails, writing some code, opening my aggregator, writing some code, repeat. No way. VS.NET would never get opened if I had a single spot for information transaction.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[In need of direction...(was:Don...you're doing it again :|)]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-06-In-need-of-direction-was-Don-youre-doing-it-again</link>
            <guid>https://chris.pelatari.com/posts/2003-04-06-In-need-of-direction-was-Don-youre-doing-it-again</guid>
            <pubDate>Sun, 06 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>P.S. - Chris, if you&#39;re reading this...I sent you an e-mail. 😃 [<a href="http://dotnetweblogs.com/Dstone/posts/4904.aspx" target="_blank" rel="noreferrer">David Stone&#39;s Blog</a>]</p></blockquote><p>I sent over a similar email...I guess I should have blogged about it, but I&#39;d be surprised if there was anybody subscribed to my blog.😛 Very surprized. I wanted to see what I could do to implement a blog on my site which I probably should link to but won&#39;t b/c it has a cheezy &quot;coming soon...&quot; default page up now and is begging for me to add content. How &#39;bout it, Chris? I need direction....😃</p><p>Update - You&#39;re 100% right, Andrew. My bad - consider it snipped.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Starter Kits Rule!]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-03-Starter-Kits-Rule</link>
            <guid>https://chris.pelatari.com/posts/2003-04-03-Starter-Kits-Rule</guid>
            <pubDate>Thu, 03 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>If you&#39;re looking to get a site up in a hurry, with a minimum of fuss, then you owe it to yourself to check out the ASP.NET Starter Kits, downloadable from where else but <a href="http://www.asp.net/" target="_blank" rel="noreferrer">http://www.asp.net/</a>. These kits, which are currently in beta, are offered in the following flavors:</p></blockquote><blockquote><p>&lt;snip/&gt;</p></blockquote><blockquote><p>They&#39;re also a very good way to see what other developers have done with ASP.NET, and perhaps come up with a few ideas of your own.</p></blockquote><blockquote><p>I had delayed playing with the starter kits out of beta overload. Now, I&#39;m just sorry that I didn&#39;t look sooner. It&#39;s cool stuff!</p></blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/GAD/posts/4731.aspx" target="_blank" rel="noreferrer">A Blog for Graymad</a>]</p></blockquote><p>I&#39;ve got to agree, these kits have given some pretty good refrence points that work. I&#39;ve gotten plenty of ideas from looking thru the starter kits and asking myself, &quot;Self, how can you improve this or make it fit the current solution?&quot;</p><p>Good stuff, those starter kits.😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[More! More! More! - It's Coming - Woohoo!]]></title>
            <link>https://chris.pelatari.com/posts/2003-04-01-More-More-More-It's-Coming-Woohoo</link>
            <guid>https://chris.pelatari.com/posts/2003-04-01-More-More-More-It's-Coming-Woohoo</guid>
            <pubDate>Tue, 01 Apr 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>In the coming week(s) the webservice(s) will be much improved. The current webservice is just a quick wrapper around my display objects (hence there is a lot data/members returned that are not necessary). This is very high on my to do list. The internals of the app are really starting to improve. This should lead of a much cleaner and robost set of services.</p></blockquote><blockquote><p>As far as them showing up in the aggregator.. well that is a different story. I do have plans for my own aggregator/admin application so day (although <a href="http://objective.mine.nu/" target="_blank" rel="noreferrer">Chris</a> seems to be on the same track I was thinking about), but it won&#39;t be Syndirella. Syndirella is a nice tool, but I have some of my own ideas (and I am not a big fan of Syndirella&#39;s licence). I have been chatting with a few people recently about this, and I would really like to see what the &quot;community&quot; can come up with. I have also implemented the metablog/blogger api&#39;s. Not sure what to do with them...but I guess they will go live with the next build as well (don&#39;t hold me to this. They seem to work, but I don&#39;t think they are something I really want to support)</p></blockquote><blockquote><p>[<a href="http://aspnetweblog.com/posts/4583.aspx" target="_blank" rel="noreferrer">ScottW&#39;s ASP.NET WebLog</a>]</p></blockquote><p>Even Better! Thanks, Scott!</p><p>-C</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[More! More! More!!]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-31-More-More-More</link>
            <guid>https://chris.pelatari.com/posts/2003-03-31-More-More-More</guid>
            <pubDate>Mon, 31 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Ya know, the site that&#39;s set up for us dotnetwebloggers is real cool. You can do everything there.</p><p>I&#39;d like to see similar functionality added to my aggregator - I want to post stories, admin my blog, add links that will show up on the site, etc in AspNetWebLog. Is that asking too much? If it is, how about more methods that I could use from the webservice that would let me build my own &#39;smart client&#39; (is that what this thing is called?) to go on top of AspNetWebLog - I want full control from my desktop. Plus, it would give me a chance to play with WinForms, which I have only dabbled a little bit in.</p><p>Maybe we&#39;ll see some of this in the next version. I&#39;m holding my breath!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Boy, am I glad to see you!]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-31-Boy-am-I-glad-to-see-you</link>
            <guid>https://chris.pelatari.com/posts/2003-03-31-Boy-am-I-glad-to-see-you</guid>
            <pubDate>Mon, 31 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Make that, girl am I glad to see you. ...</p></blockquote><blockquote><p>Which brings me to my next question, why aren&#39;t there more female Bloggers here? If there are of you out there thinking about it, please sign up! I&#39;d love to see more feminine faces around here, and we won&#39;t even make you blog in pink...</p></blockquote><blockquote><p>Datagrid Girl</p></blockquote><p><a href="http://weblogs.asp.net/DatagridGirl/posts/4555.aspx" target="_blank" rel="noreferrer">Datagrid Girl</a></p><p>Amen! More smart females, please! Blonde or not...whateva.</p><p>Great to see you, D.</p><p>-Christopher</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[10 hrs on the road and over 600 miles covered...and worth every second.]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-31-10-hrs-on-the-road-and-over-600-miles-covered-and-worth-every-second</link>
            <guid>https://chris.pelatari.com/posts/2003-03-31-10-hrs-on-the-road-and-over-600-miles-covered-and-worth-every-second</guid>
            <pubDate>Mon, 31 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I got back from seeing Ethan monster late Sunday afternoon...I&#39;m just too proud. My boy is walking like a champ! Talking, too. I was holding him, and he reached out, grabbed my nose, and said &quot;noshe&quot;.</p><p>I&#39;ve got to say, tho - the best part of the weekend was when I was taking him inside and he laid his head on my shoulder, gave me a squeeze and said, &quot;Daddy&quot;. That says it all.</p><p>-C</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Have YOU ever heard of Detroit....TX? No one else has, either]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-28-Have-YOU-ever-heard-of-Detroit-TX-No-one-else-has-either</link>
            <guid>https://chris.pelatari.com/posts/2003-03-28-Have-YOU-ever-heard-of-Detroit-TX-No-one-else-has-either</guid>
            <pubDate>Fri, 28 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>but, that&#39;s where I&#39;m going tomorrow. My son lives there with his brother, their mom (baby&#39;s momma:), and Nana and Papa (the Grandparents). It&#39;s going to be a 5 hour drive, but I&#39;m more concerned about the lack of sleep I think I&#39;m gonna get tonight - I haven&#39;t seen Ethan or any of them for 2 months now.</p><p>Wish me luck.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[A Blessing in disguise? (follow-up to 'Boo! on Validators')]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-28-A-Blessing-in-disguise-follow-up-to-Boo-on-Validators</link>
            <guid>https://chris.pelatari.com/posts/2003-03-28-A-Blessing-in-disguise-follow-up-to-Boo-on-Validators</guid>
            <pubDate>Fri, 28 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is what I love about blogging here. I not only got to work out the problem in a different way than I would have alone, but I also got some great perspective from others before I go and make a decision. After I got to step away from the problem, I decided that my initial gripe may have a silver lining. Here&#39;s what I mean:</p><p>First, let&#39;s put ourselves in the user&#39;s position. The user in this case will most likely be a Geophysicist that could talk you into a hole about Checkshot velocities, wavelets, etc, but has limited useage of the internet or web applications. I want the user to feel like she has complete control over the data that they can manipulate, but at the same time, I want that data to be valid. Personally, I think it would be counter intuitive to have a &#39;delete value&#39; button by every textbox (and there are a lot of them), so if I were the user and I wanted to get rid of a previous value, would I automatically think, &quot;Oh, gee, this started off as N/A - I better change it back.&quot;? No. No I&#39;m not. I&#39;m gonna highlight whatever I typed in before, hit backspace, and click the update button. That&#39;s what I&#39;m used to, and I fear change.:S</p><p>I guess my initial gripe was simply the fact that the Regular Expression Validator does not validate the Regex strictly. It validates the Regex and an empty string. Does this make sense to anyone else? If I want to validate something as (\d{1}), I&#39;m looking for something b/t 0 and 9, not something b/t 0 and 9 OR oh yeah, an empty string will work, too. Thanks to everyone who helped me think this problem thru - I&#39;m sure we all know what the real answer is, don&#39;t we? IT&#39;S CLIPPY!!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Boo! on ASP.NET Validators!]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-27-Boo-on-ASP-NET-Validators</link>
            <guid>https://chris.pelatari.com/posts/2003-03-27-Boo-on-ASP-NET-Validators</guid>
            <pubDate>Thu, 27 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>So I&#39;m trying to get a regular expression validator to work - ya know, validate my data. I&#39;m a reeeeal novice when it comes to regex, so with a little help and tweaking, this is what I come up with:</p><p><code>ValidationExpression = &quot;(\d{1,8}(\.\d{1,2})?)|(\d{0,8}(\.\d{1,2}))|(N\/A)&quot;</code></p><p>Because I want a decimal number OR N/A, which is the default value that each of my textboxes (in this case) are populated with. This regular expression works. Almost. I could <em>not</em> figure out why I could add an empty string or a bunch of spaces and it validates as true. So I took a look at the WebUIValidation.js that the validators use.</p><p><code>function RegularExpressionValidatorEvaluateIsValid(val) { var value = ValidatorGetValue(val.controltovalidate); if (ValidatorTrim(value).length == 0) return true; var rx = new RegExp(val.validationexpression); var matches = rx.exec(value); return (matches != null &amp;&amp; value == matches[0]); }</code></p><p>The important bit is the if(ValidatorTrim) part. It&#39;s valid if there is nothing there! Maybe I&#39;m just dense...wait...it&#39;s <em>probably</em> because I&#39;m dense, but I want my regular expression validator to match my regular expression <em>only</em>. I know I could add a required field validator, but that is not correct. It&#39;s <em>not</em> a required field - that&#39;s why N/A is a valid value. But a space/no entry is not. I want the value in my field to be :</p><p>a decimal number OR &quot;N/A&quot; ONLY!</p><p>grrrrrrr...I don&#39;t know if I should modify the WebUIValidation.js or write my own control that will strictly match a Regular Expression. Sucks on empty strings.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Happiness is getting...]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-18-Happiness-is-getting</link>
            <guid>https://chris.pelatari.com/posts/2003-03-18-Happiness-is-getting</guid>
            <pubDate>Tue, 18 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[added custom config section handler story.]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-17-added-custom-config-section-handler-story</link>
            <guid>https://chris.pelatari.com/posts/2003-03-17-added-custom-config-section-handler-story</guid>
            <pubDate>Mon, 17 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I just added a story describing how I&#39;ve made my ImageLink control jump thru some more hoops for an application-specific purpose. If anyone is interested, you can find it <a href="http://weblogs.asp.net/Cfrazier/Story/3912.aspx" target="_blank" rel="noreferrer">here</a>.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Remote Desktop]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-16-Remote-Desktop</link>
            <guid>https://chris.pelatari.com/posts/2003-03-16-Remote-Desktop</guid>
            <pubDate>Sun, 16 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Just a quick post - I&#39;ve been toying w/ the idea of a software KVM - using terminal services. Keith gave me a link for the client which he says works great. I&#39;ll have to check it out tomorrow.</p><p>Link - <a href="http://www.microsoft.com/windowsxp/pro/downloads/rdclientdl.asp" target="_blank" rel="noreferrer">http://www.microsoft.com/windowsxp/pro/downloads/rdclientdl.asp</a></p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I've taken the plunge...]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-16-Ive-taken-the-plunge</link>
            <guid>https://chris.pelatari.com/posts/2003-03-16-Ive-taken-the-plunge</guid>
            <pubDate>Sun, 16 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I finally did it. I &#39;upgraded&#39; my home pc to XP. It took forever, probably b/c I have a pretty slow processor - 400mhz, but it&#39;s up, it&#39;s running, and I didn&#39;t lose any of the file structure.</p><p>I did have to start over 1 time, b/c I ran into a registry problem on setup, but barring that and how long it took, it was pretty painless! Now, all I have to do is convince the higher ups at work that I should do the same on my dev boxes there - and Bob&#39;s your uncle, Chris is finally a part of the 21st century!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Stupid [fill in the blank]]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-14-Stupid-fill-in-the-blank</link>
            <guid>https://chris.pelatari.com/posts/2003-03-14-Stupid-fill-in-the-blank</guid>
            <pubDate>Fri, 14 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Taking Custom Configuration Sections A Step Further]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-12-Taking-Custom-Configuration-Sections-A-Step-Further</link>
            <guid>https://chris.pelatari.com/posts/2003-03-12-Taking-Custom-Configuration-Sections-A-Step-Further</guid>
            <pubDate>Wed, 12 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p><em>Yup, it&#39;s cool, but it gets <strong>even cooler</strong> when you start writing your own configuration section handler implementations. The beauty of the configuration architecture is that it&#39;s completely extensible.</em></p></blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/dmarsh/" target="_blank" rel="noreferrer">From Drew&#39;s Blog</a>]</p></blockquote><blockquote><blockquote><p>Thanks Drew.  I kinda figured I&#39;d only scratched the surface with this stuff.  Thanks, I&#39;m gonna check out IConfigurationSectionHandler stuff</p></blockquote></blockquote><blockquote><blockquote><p>[Currently Playing: Rancid - Life Won&#39;t Wait]</p></blockquote></blockquote><blockquote><blockquote><p>[<a href="http://dotnetweblogs.com/DBrowning/posts/3708.aspx" target="_blank" rel="noreferrer">.NET Brain Droppings</a>]</p></blockquote></blockquote><p>BAM! I did it - I knew it could be done, but I had no idea how simple the framework makes it. I&#39;m talking about hydrating a list of the hyperlink controls I recently created from a config file using a custom config section handler - I&#39;ll write a story on how I got it done here shortly. Well, tonight anyway.</p><p>Basically, I used a method near what Drew described, but I took an attribute-based approach - so the web.config has a section that looks like a list of server controls without the &lt;asp: at the beginning.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Custom configuration sections]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-11-Custom-configuration-sections</link>
            <guid>https://chris.pelatari.com/posts/2003-03-11-Custom-configuration-sections</guid>
            <pubDate>Tue, 11 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>Something I&#39;ve found infinitely useful is custom configuration sections. By using custom configuration sections, you are allowed to store a richer amount of information in the application config file, than when you simply add values to the &lt;appSettings&gt; section. To add a custom config section, you must do 2 things: 1) declare the section group and section in the &lt;configSections&gt; portion of the app.config file, and 2) add the new sections to the config file. ... [Currently Playing: Rage Against the Machine - Self-titled] [.NET Brain Droppings]</p></blockquote><p>Too cool Don! Honestly, something like this is going to be my <em>very</em> next endeavor - I&#39;m adding a &#39;list&#39; type container for my &#39;QuickLink&#39;/&#39;ImageLink&#39; control. My plan isn&#39;t to use a NVC, but rather to hydrate a set amount of controls in an application/page using a custom config handler...this will have to wait a couple of days tho, since I&#39;ve got to get my Risk app going into an installer by tomorrow 😦</p><p>Oh well, keep &#39;em coming, bloggers!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Added 'Extending the MetaBuilder's RollOverLink' Story]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-11-Added-Extending-the-MetaBuilders-RollOverLink-Story</link>
            <guid>https://chris.pelatari.com/posts/2003-03-11-Added-Extending-the-MetaBuilders-RollOverLink-Story</guid>
            <pubDate>Tue, 11 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Added Editing a custom icon to a web server control story]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-11-Added-Editing-a-custom-icon-to-a-web-server-control-story</link>
            <guid>https://chris.pelatari.com/posts/2003-03-11-Added-Editing-a-custom-icon-to-a-web-server-control-story</guid>
            <pubDate>Tue, 11 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Added HTTP Request code snippit]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-10-Added-HTTP-Request-code-snippit</link>
            <guid>https://chris.pelatari.com/posts/2003-03-10-Added-HTTP-Request-code-snippit</guid>
            <pubDate>Mon, 10 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p>I&#39;m adding a new category of posts to my blog; <em>code snippits</em>. I was looking for a tool to manage code snippits when it hit me, why not post them to my blog. I hope you find them useful. I&#39;ll just randomly post stuff up there as I work on it.</p></blockquote><blockquote><p>There are a couple problems with this. One - the editor forces each line of code to have a </p><p></p> break, so the code looks unweildy. Two - Some of the code spans methods within a class, and I&#39;m not quite sure how to post that yet. I&#39;ll give this stuff some thought and hopefully have a fix soon.</blockquote><blockquote><p>For now, the first one is self-contained and was easy to post, it&#39;s an example of how to do a HTTP request and you can find it here.</p></blockquote><blockquote><p>[Currently Playing: Ministry - Animositisomina]</p></blockquote><blockquote><p>[.NET Brain Droppings]</p></blockquote><p>Good idea, Don. I recently asked <a href="http://www.aspnetweblogs.com/" target="_blank" rel="noreferrer">ScottW</a> if I could post kind of psuedo-articles to the story section of my blog, and his response was, &quot;Yes. Definitely&quot;. I haven&#39;t gotten around to it yet, but only b/c of my hoakie dial-up connection (28.8 kbps) I have at the heezie [trans.:house, residence] So, hopefully if things go my way today, I&#39;ll have a little sumthin-sumthin to post up in my story section later today. If not, I&#39;ll just haveta settle for tomorrow.</p><p>Procrastination? Na, I&#39;ll procrastinate later.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Stupid Cookie.Domain]]></title>
            <link>https://chris.pelatari.com/posts/2003-03-05-Stupid-Cookie-Domain</link>
            <guid>https://chris.pelatari.com/posts/2003-03-05-Stupid-Cookie-Domain</guid>
            <pubDate>Wed, 05 Mar 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve spent about 1 1/2 hours trying to figure out why I couldn&#39;t get a persistent cookie set from codebehind in ASP.NET...I tried a lot of different things but of course not the correct solution. The domain. rrrrrrgh!</p><p>The worst part is that I sorted this out a few weeks ago, but since then it hasn&#39;t been a big issue, I&#39;ve been letting the framework of each application handle the details of www.mydomain.net communicating with demo.mydomain.net.</p><p>Today I&#39;ve been back on the originating app&#39;s side, making sure things are ready to get set, then I got all sweaty and whatnot about the &#39;cookie not being set properly&#39;, which was kind of true - my browser didn&#39;t think the code was coming from the same host. localhost != www.mydomain.com. There&#39;s my &#39;D&#39;oh!&#39; for the day.</p><p>btw, it works still (whew!😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[I am the Framework.  I run managed code.  I am without flaw.]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-28-I-am-the-Framework-I-run-managed-code-I-am-without-flaw</link>
            <guid>https://chris.pelatari.com/posts/2003-02-28-I-am-the-Framework-I-run-managed-code-I-am-without-flaw</guid>
            <pubDate>Fri, 28 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Get a heads up on running multiple versions of the Framework. <a href="http://dotnetweblogs.com/DNeimke/posts/3204.aspx" target="_blank" rel="noreferrer">ShowUsYour-Blog!</a></p><p>I read Darren&#39;s post, and subsequently the referenced <a href="http://www.3leaf.com/default/articles/ea/SBS.aspx" target="_blank" rel="noreferrer">article by Early &amp; Adopter</a>, and I must say that both were extremely helpful.</p><p>I haven&#39;t yet applied v1.1 of the Framework at the office, but I am using SxS execution at home, and I have run into a similar problem the Darren outlined - I just kind of moved on to the next thing I could try out - didn&#39;t really think it over too much.</p><p>So does this mean that you&#39;re kind of bound to the version of VS.NET that you have loaded? Not according to the article. I wonder if the hard-coded framework issue applies also to <a href="http://www.icsharpcode.com" target="_blank" rel="noreferrer">SharpDevelop</a> and <a href="http://www.asp.net/webmatrix/default.aspx?tabindex=4&amp;tabid=46" target="_blank" rel="noreferrer">WebMatrix</a>, which are the tools I use at home. It would be interesting to find out!</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Cool uses for DHTML]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-26-Cool-uses-for-DHTML</link>
            <guid>https://chris.pelatari.com/posts/2003-02-26-Cool-uses-for-DHTML</guid>
            <pubDate>Wed, 26 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><blockquote><p><a href="http://mph.homeip.net/journal/" target="_blank" rel="noreferrer">Mark</a> forwarded me a link today of a <a href="http://youngpup.net/" target="_blank" rel="noreferrer">site</a> that pushes DHMTL to the max. I&#39;ve gone on record before about my loathing for web development, but I know a lot of you out there are web dev&#39;s so maybe you can pick up a trick or two from <a href="http://youngpup.net/" target="_blank" rel="noreferrer">youngpup.net</a>.</p></blockquote><blockquote><p>Wha&#39;ts great is he has open sourced the entire site, and it has lots of cool goodies... [Currently Playing: Schreeching Weasel - My Brain Hurts]</p></blockquote><blockquote><ul><li>Disclaimer: Nothing aginst web developers, actually the opposite. I have an enormous amount of respect for you guys. I spent a few years in asp hell, and I&#39;m so done with cross browser incompatibilities, weak UI support and scripting languages. ugghhh... kudos to ya&#39;ll</li></ul></blockquote><blockquote><p>[.NET Brain Droppings]</p></blockquote></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Getting Started on some Controls Issues]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-22-Getting-Started-on-some-Controls-Issues</link>
            <guid>https://chris.pelatari.com/posts/2003-02-22-Getting-Started-on-some-Controls-Issues</guid>
            <pubDate>Sat, 22 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Jump into VB.NET - feet furst]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-21-Jump-into-VBNET-feet-furst</link>
            <guid>https://chris.pelatari.com/posts/2003-02-21-Jump-into-VBNET-feet-furst</guid>
            <pubDate>Fri, 21 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[.NET Brain Farts]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-18-NET-Brain-Farts</link>
            <guid>https://chris.pelatari.com/posts/2003-02-18-NET-Brain-Farts</guid>
            <pubDate>Tue, 18 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>Today Seems like an extended Moday as far as my development goes. I&#39;ve tried about 3 or 4 different tings on my current project that just don&#39;t seem to be working as I would expect them to. Of course, that&#39;s the point, isn&#39;t it? I&#39;ve had a few brain farts in my past development cycle, all of which ended up being just oversights on my end - you know, the type of thing that really bites you, and then when you figure it out, you let out a resounding &quot;d&#39;oh!&quot;.</p><p>Well, I guess the only thing I can really do is keep plugging away at it, maybe a solution will surface. Till next time - blog ya later.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[ReporT!!]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-13-ReporT</link>
            <guid>https://chris.pelatari.com/posts/2003-02-13-ReporT</guid>
            <pubDate>Thu, 13 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Nearing completion...]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-11-Nearing-completion</link>
            <guid>https://chris.pelatari.com/posts/2003-02-11-Nearing-completion</guid>
            <pubDate>Tue, 11 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;m getting to the clean-up phase of porting an asp.old project to .NET. It&#39;s about time! I finally tackled a problem I ran into with a vb6 component that was run thru VS.NET to be converted to VB.NET - I couldn&#39;t figure it out till I used a &#39;magik number&#39; hard coded into part of my application. 1 based arrays. Why?! Why I say!?! I&#39;ve always been accustomed to using 0-based arrays, and as I&#39;ve stepped thru the code I&#39;ve seen this behavior in some of the VB.NET arrays - they place an element into the element at 0 that says &lt;empty element used to adjust for 1 based array&gt;.</p><p>Well, in this case it didn&#39;t happen like that. Oh, well. Just one of those things I guess.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Generating Ideas...]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-11-Generating-Ideas</link>
            <guid>https://chris.pelatari.com/posts/2003-02-11-Generating-Ideas</guid>
            <pubDate>Tue, 11 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>I&#39;ve decided to try and make my life a little easier. Controls. I&#39;ve jumped into them a little in the past, but now I may have a little more time to put some extra thought into it. What I would like to do is encapsulate client-side behaviors like .htc&#39;s or javascript components and wrap it up in a drag-n-droppable asp.net server control. This leaves open a lot of possibilities...so I guess now is the time to generate ideas.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[Monday morning...]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-10-Monday-morning</link>
            <guid>https://chris.pelatari.com/posts/2003-02-10-Monday-morning</guid>
            <pubDate>Mon, 10 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[HELPING C VETERANS WITH .NET]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-08-HELPING-C-VETERANS-WITH-NET</link>
            <guid>https://chris.pelatari.com/posts/2003-02-08-HELPING-C-VETERANS-WITH-NET</guid>
            <pubDate>Sat, 08 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>My boss asked me to come into work today to explain accessing a database in .NET to one of our developers who mainly codes in C. It was pretty interesting - this guy is an amazing programmer, but as I said mainly codes in C so is a .NET novice. I was able to explain dataAdapters and dataSets in a way that a C programmer would understand - pretty neat-o if you ask me.</p><p>I&#39;ll be the first one to tell you that I have not reached a level of programming to be able to say - &quot;I am THE programmer!&quot;, but I know .NET fairly well anyway. Today I explained one of those cool .NET aspects to someone who probably can say he is THE programmer. Has anyone else done something like this?</p><p>-Respect.</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
        <item>
            <title><![CDATA[WOOT! FIRST POST!]]></title>
            <link>https://chris.pelatari.com/posts/2003-02-07-WOOT-FIRST-POST</link>
            <guid>https://chris.pelatari.com/posts/2003-02-07-WOOT-FIRST-POST</guid>
            <pubDate>Fri, 07 Feb 2003 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div style="position:relative;"><div><p>This is my first post on the blog...I hope that I&#39;ll have something interesting to say. Well, I guess the first post should have a little to do with history. I work for a company that deals with the oil &amp; gas exploration industry, you know - geophysicists and stuff like that. You cna find us on the web at <a href="http://velocitydatabank.com" target="_blank" rel="noreferrer">Velocity Databank, Inc.</a> . Of course, the site is written completely in ASP.NET, with only one little widget that I had to use interop in for the sake of brevity - you know, time constraints and such. I&#39;m 22, live in Houston, TX, and I&#39;ve been programming in C# since the public beta release of .NET. Personally, I was more than happy to pick it up - but before then I was doing C++ and using the Java SDK a little bit, but not for as long as some of these other bloggers out here. Before that, I really liked web development - but just DHTML, no fancy server-side stuff &#39;til ASP.NET came along. Basically, I just didn&#39;t - and still don&#39;t - like the idea of coding in VB...that&#39;s right - I said it - No VB for me! HA! Well, not if I can help it anyway. 😃</p></div></div>]]></content:encoded>
            <author>chris@bluefenix.net (Chris Pelatari)</author>
        </item>
    </channel>
</rss>