<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sup-a-Dillie-O</title><description>Coding, Pensee, Esoterica</description><link>https://dillieo.me/</link><language>en-US</language><item><title>A Little Less Theory, a Little More Action</title><link>https://dillieo.me/posts/growth/2026-07-09-a-little-less-theory-a-little-more-action/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2026-07-09-a-little-less-theory-a-little-more-action/</guid><description>Ship at 60% and grow through the rest</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It feels like I&apos;m stuck in second gear in the car &lt;em&gt;(to steal a phrase and potentially leave a handful of people scratching their heads)&lt;/em&gt;. So I&apos;m making the commitment today. A little less theory and a little more action. In particular, the feedback came in. I&apos;m a great people person, but building the accountability and flow of a strong team (or org) is something that I still need to improve and enforce. I&apos;ve known this for a while. As previously discussed the &quot;ruinous empathy&quot; I&apos;m growing out of can often give me analysis paralysis or even a fear of doing the thing. There is still a high level of imposter syndrome that kicks in when the skills that got me this far in my career are now the skills that get in the way of me improving. The 20+ year seasoned vet should be able to perform better and it feels very clunky.&lt;/p&gt;
&lt;p&gt;So what&apos;s going on here? Why the declaration? Am I going to actually &lt;em&gt;do&lt;/em&gt; a thing about it &lt;em&gt;(oh look, I&apos;m already making myself accountable)&lt;/em&gt;? Well... yes and here&apos;s why and how...&lt;/p&gt;
&lt;h2&gt;Orthodoxy means nothing without Orthopraxy&lt;/h2&gt;
&lt;p&gt;Whoops, big words there. Right living means nothing without right doing. Or potentially put a better way lots of great theory without actually putting words into action is meaningless. I can&apos;t &quot;study well&quot; into getting better practices in place. I actually have to do the practices and see if they work. If not, what good are they. Truth is, the &quot;one shot&quot; or &quot;perfect game the first time&quot; is nigh impossible, can sometimes be detrimental to finding something better and growing &lt;em&gt;(because if you did it perfect the first time then why go back to it?)&lt;/em&gt;. It will also slow you down. This is where I find myself frequently. I&apos;m so worried about getting the perfect thing out the first time that I will wait and refine and refine and refine and fret and when it launches it may be pretty good, but there are nevertheless things to fix and I would have done better to get the draft out early and gotten early feedback and small tweaks &lt;em&gt;(the 1% better)&lt;/em&gt; along the way. Just do the thing already! Sure don&apos;t do it blindly &lt;em&gt;(or maybe?)&lt;/em&gt; but don&apos;t wait for 100% ready. Don&apos;t wait for even 80% ready. I read an interesting post about learning and doing and unblocking yourself that said in effect to get 60% of your thoughts/learnings in place and then run with it. You&apos;ll get good feedback and interestingly enough your brain will naturally want to fill in the gap of your knowledge and help you move along even quicker.&lt;/p&gt;
&lt;h2&gt;How risky is it really?&lt;/h2&gt;
&lt;p&gt;I&apos;ve been on quite the creative tear this year. I revived my prayer app, rebuilt my breathing app, then created an agile pointing tool for work/devs in general and then put together a mini &quot;news dashboard&quot; of a slack feed at work that made some really interesting links and citations in a better format to read/consume. Not too shabby for a &quot;try easier&quot; year I started with not overloading myself. Aside from the tooling &lt;em&gt;(thank you Claude, Copilot, and Gemini/Antigravity, Firebase, Supabase)&lt;/em&gt; that made this go faster, the risk was so very low. Little money was lost. The time spent was learning regardless, and if people think it&apos;s lousy and don&apos;t use it there&apos;s a slight bruise to the ego but it motivates me a bit to make more improvements and food is still put on the table. So what&apos;s the risk with the &quot;bigger&quot; things I need to do at work?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;It will be the wrong way to do it and everything will crash and burn&lt;/em&gt; - Wow, that second half is pretty intense, but you have a good team and peers that care for the success of things and will let you know if something is going awry. Besides, we can&apos;t improve if we aren&apos;t actually working on the thing to improve. Also, you have been in this industry for 20 some odd years now, you have broken enough things that you have a good sense of what not to do.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I will get fired&lt;/em&gt; - Always legitimate, especially when taking care of family is the number one concern but you&apos;re at a place where inaction is more risky most times than &quot;bad&quot; action.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;People will lose respect for you because you&apos;ve been in this industry forever&lt;/em&gt; - Oof, well there&apos;s a lot to unpack on that one. Are things that fragile where you are at that people would lose that much regard for you even if you are actively trying? If a few people do, can they really hold that much control over your life? No!&lt;/p&gt;
&lt;h2&gt;What&apos;s it worth&lt;/h2&gt;
&lt;p&gt;Armed with that, let&apos;s just get out there and do it! There&apos;s so much to learn and tweak on when there&apos;s actually something in front of you (even if it is a bunch of paper outlining what you&apos;re putting into action) and you&apos;re not so reckless that you&apos;re going to explode the internet. Definitely don&apos;t &quot;run fast and break things&quot; but definitely ship that good thing and tweak it to make it great.&lt;/p&gt;
&lt;p&gt;Circling back, I have some very practical things I&apos;m implementing in my day to day to flex that accountability and flow muscle I need to be a better manager. I&apos;ve set up a couple morning check-in routines &lt;em&gt;(thank you todoist)&lt;/em&gt; that I walk through now to escalate gaps, take action, and identify what&apos;s next to be proactive. I&apos;m finalizing some new on-call and growth routines after feedback from the team and scheduling out the plan to make them happen, not just present it and hope everybody does it. It feels really awkward to start doing these, they&apos;re in that &quot;70% complete&quot; since I haven&apos;t seen if they work yet, but they will be out there and then I can tweak and grow.&lt;/p&gt;
&lt;p&gt;...and shoot, this entire blog post was done within the hour on a train without the 3 days of machinations that go through my head about the perfect. It&apos;s a bit sloppy, but maybe it also sparks some conversation to make it better.&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;What&apos;s holding you back. What can you start at 60%, cast a lot of fears to the side and just start doing things?&lt;/p&gt;
</content:encoded></item><item><title>The Ongoing Pull Request</title><link>https://dillieo.me/posts/growth/2026-05-14-the-ongoing-pull-request/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2026-05-14-the-ongoing-pull-request/</guid><description>Failing in Public (On Purpose)</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why am I blogging about engineering management in the first place? Simple question. It will be three years here in a couple of weeks since I took on the role, there are plenty of lessons learned, and it feels like a nice post to fill in the narrative.&lt;/p&gt;
&lt;h2&gt;The Struggle&lt;/h2&gt;
&lt;p&gt;I write the few sentences above when the mind and body rebel in sheer terror with the realization that &quot;Oh right, you&apos;ve been doing a &lt;em&gt;ton&lt;/em&gt; of failing in public and that would be a &lt;em&gt;great&lt;/em&gt; thing for all of your direct reports to read about on a Friday and then show up on a Monday to see you face to face. How &lt;em&gt;wonderful&lt;/em&gt; would it look for all of those peers and upper management to see just how much you&apos;re getting wrong on a day to day basis. You&apos;ve been in this industry for 25 years now and you want to let everybody know that most of that knowledge seems to have been not applicable to what you&apos;re doing now, &lt;em&gt;and&lt;/em&gt; people are paying you for it?! Yeah, go ahead and do that. I&apos;m going to grab some popcorn.&quot;&lt;/p&gt;
&lt;p&gt;I wipe out the intro. Try something new. The shouting gets louder. I try a new intro. The knot in the stomach gets tighter...&lt;/p&gt;
&lt;p&gt;...from somewhere I&apos;m reminded that life, all aspects of it, is quite messy. That cliche &quot;anything worth doing is going to be hard&quot; pops into my head. It&apos;s really, &lt;em&gt;really&lt;/em&gt; hard to embrace this in the middle of the suck, especially if it feels like a perpetual state of painfully hard experiences. That also then reminds me of all the previous states of suck in which amazing new discoveries were made, small victories were won and celebrated, and you could feel change and growth happening. Oh yeah, that second verse of my favorite U2 song... &quot;When you stop taking chances, you stay where you sit. You won&apos;t live any longer, but it&apos;ll feel like it.&quot; There&apos;s a lot to be found and discovered within the process that you miss if you wait until the end and just focus on the &quot;ending.&quot;&lt;/p&gt;
&lt;p&gt;I pause, I exhale heavily, and I say...&lt;/p&gt;
&lt;p&gt;&quot;Yes self, that&apos;s &lt;em&gt;exactly&lt;/em&gt; what we&apos;re going to do here.&lt;/p&gt;
&lt;p&gt;So here we are. Why do I want to blog about how to manage while I&apos;m building the vehicle of management &lt;em&gt;(hmm bad agile analogy, maybe we remove that)&lt;/em&gt;? I want to blog because a lot of what I&apos;ve learned to date has been different than what I expected to be learning in this role.&lt;/p&gt;
&lt;h2&gt;How It&apos;s Going&lt;/h2&gt;
&lt;p&gt;Here&apos;s the fun, awkward, and hopefully encouraging part for those that have worked or had one on one meetings with me for the past three years now. These are a couple of the active in progress things I&apos;m working on. You may have been on the receiving end of some of them going well, and definitely some of them going poorly.&lt;/p&gt;
&lt;p&gt;Some wise advice I found in a blog post has started to shift my perspective from determining how to climb the mountain to determining which mountain is worth climbing. It&apos;s no longer about going deeper or wider on how we integrate with our data platform. It&apos;s more about what should we build that leverages our tech and empowers our users. As I start looking more to the mountains and less at the trails, it&apos;s affecting how I look at other things as well. I find myself looking more at who has the right skills or growth opportunity to discover and build a solution instead of designing and directing the solution.&lt;/p&gt;
&lt;p&gt;This shifting is affecting a lot of the day-to-day things too. I am realizing that critical feedback needs to be given sooner rather than later and it &lt;em&gt;needs&lt;/em&gt; to be done, contrary to this conflict avoidant, ruinous empathy, oriented person&apos;s nature. I do a severe disservice if I leave people in the dark on this kind of feedback. Besides, I know that I deeply care about their growth and I will learn to frame it properly. That winds up also shifting into giving more specific feedback and not just general yay&apos;s or nays. &quot;Your communication could have been smoother&quot; should be replaced with &quot;You spent too much time covering the technical background of the project that by the time you came to the why the team was a little lost and it didn&apos;t land well.&quot; Diamonds and spades are the cards to deal, another post for later on.&lt;/p&gt;
&lt;p&gt;When I lead in this manner, it feels quite refreshing to instill value into others.  Reality check: I&apos;m consistent about 13.68% in performing said duties above. That&apos;s 1% better than last month, and yes, I&apos;m aware that some of you reading this have experienced the other 86.32%. I see you. Let&apos;s talk during our next O3. In the meantime I take a breath, make a note of the wins and fixes, then take another lap around the track.&lt;/p&gt;
&lt;p&gt;Writing this on a train commute, in a very messy space in my head, is exactly where this belongs. It needs a place to get sorted out. This also gives me a little &quot;documentation&quot; for my future self to track the journey. Hopefully it also becomes a welcome space for other people struggling and growing: somewhere to fail in public, rubber duck the hard stuff, and find out you&apos;re not alone in the 86.32%.&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;This is the part where I typically hit publish on other posts and immediately fret about the credibility and accuracy of my words and wonder if I made a mistake. This one definitely feels different, less like sharing a completed work, and more like leaving a large draft mode pull request posted available for all to comment and critique. This is genuinely how it looks inside the process, even after 25 years running around this technical track. I&apos;d rather you see that than wonder or get false impressions.&lt;/p&gt;
&lt;p&gt;I would love to hear about your &quot;fabulous fails&quot; in management. I&apos;m likely to repeat those same mistakes a few times so I&apos;ll have some empathy but I also want to learn. Oh, and thanks for reading this one, particularly if you see me at a one on one meeting next week. Ask me anything. I want those conversations.&lt;/p&gt;
</content:encoded></item><item><title>Bootstrap on the Cheap - 2026 Edition</title><link>https://dillieo.me/posts/projects/2026-04-30-bootstrap-on-the-cheap-2026-edition/</link><guid isPermaLink="true">https://dillieo.me/posts/projects/2026-04-30-bootstrap-on-the-cheap-2026-edition/</guid><description>An overview of how I built a new app for less than my coffee subscription. You can too!</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Back in 2019, I &lt;a href=&quot;/posts/development/2019-01-16-bootstrap-your-app-for-free-part-1-tools-and-resources/&quot;&gt;wrote a series&lt;/a&gt; on how to build your side project without spending any  money, or very little. Times were tight, there were kids to support, and yet there was still an itch to get something creative out into the world! The landscape has changed a lot since then. Some tools are gone, new ones have taken their place, things are still tight, but the core idea hasn&apos;t changed at all.&lt;/p&gt;
&lt;p&gt;I joke that this is the &quot;golden age&quot; of software development, only because I&apos;ve said it about 3 times previously. But it&apos;s true! There has never been a better or cheaper time to build something and put it in front of people.&lt;/p&gt;
&lt;p&gt;&quot;Prove it!&quot; you&apos;ll shout at me because you see that fancy tooling and deploy pipeline at work and figure it took forever to setup and/or cost a fortune. It&apos;s not as intimidating as you think. Here&apos;s what I built recently, step by step, cost by cost.&lt;/p&gt;
&lt;h2&gt;The Excuse That Started It&lt;/h2&gt;
&lt;p&gt;I was in a sprint planning meeting a few weeks back, and since the team was remote that day, someone recommended we use one of those online &quot;poker planning&quot; type tools. It went well, remote sprint planning can be a little chaotic, and having a proper tool beats everyone holding up fingers to the camera. I casually recommended it and thought nothing of it until a dev on my team mentioned that their team had used the same tool until they got paywalled after &quot;too much use&quot;.&lt;/p&gt;
&lt;p&gt;What?! Really?! A nice and valuable, but simple, tool that is used every two weeks by fewer than a dozen people for 2 hours before it goes back to sleep for two weeks... people have to pay for that?!&lt;/p&gt;
&lt;p&gt;My brain immediately says &lt;em&gt;(and out loud too)&lt;/em&gt; &quot;You know... this is something that a little guidance from AI could hack together on a train ride.&quot; Oh.. and I &lt;em&gt;love&lt;/em&gt; to do some train hacking during my commute these days.&lt;/p&gt;
&lt;p&gt;Oh yeah, what did I build? It&apos;s &lt;a href=&quot;https://github.com/Dillie-O/agile-arcade&quot;&gt;Agile Arcade&lt;/a&gt;: a real-time agile story pointing game, that needs no accounts, no fuss, can be run locally, or deployed as a single Docker container, with a fun Zelda-inspired UI. The project is beside the point. What matters is the barrier from &quot;I have an idea&quot; to &quot;I have a thing that the world can see and use&quot; is smaller and cheaper than before.&lt;/p&gt;
&lt;p&gt;Here&apos;s how it all came together.&lt;/p&gt;
&lt;h2&gt;Building&lt;/h2&gt;
&lt;p&gt;So I built it. It took me maybe a week. Oddly enough I iterated more on the UX part of things than the logic side of things. I enjoyed talking with Gemini to evaluate platform choices because I wanted this to be as simple and self contained as possible so a dev could run it from their machine or through a small server in-house with Docker. No database, no login services, no nothing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architecting Cost: &lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Infrastructure Cost: &lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I put this together using the &quot;planned agentic&quot; approach using Visual Studio Code and Copilot. Technically I had purchased a Github Copilot license earlier to experiment with other work, so we&apos;ll prorate at &lt;code&gt;$.33&lt;/code&gt; a day and say it cost me &lt;code&gt;$1.65&lt;/code&gt; - just 5 days of work (no weekends)!&lt;/p&gt;
&lt;p&gt;By Monday I had a working prototype. By the end of the week it was live. The following Monday I hosted a session from my laptop and it got some joy..&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My bill so far: &lt;code&gt;$1.65&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wait, when running the app on my local machine, I need to ensure that other people can get to me! My IP address is a little wonky to share, plus I&apos;m at home and have to update my wireless router to forward traffic to my machine. What I really need is a proxy service to handle this routing for me. Cloudflare seems a little pricey for a quick situation and there is setup. Oh wait, there&apos;s ngrok. It&apos;s been around for a while! You can sign up and get a free token. They have a great NextJS library so all you do is provide your token in the app, wait a minute, and now you have a sharable URL for all of your remote friends. Easy peasy!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cost: &lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;My bill so far: &lt;code&gt;$1.65&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Hosting&lt;/h2&gt;
&lt;p&gt;Oh, I also want to host this somewhere for people to take a quick test drive on! Since this app is a NextJS server based application, some of your more standard hosting like Vercel or Netlify won&apos;t do. Fortunately, there is still a service called &lt;a href=&quot;https://render.com&quot;&gt;Render&lt;/a&gt; that will give you a free Docker hosted container. It&apos;ll be a little limited on the functionality side since it will spin down after some inactivity but this is just a demo site. I signed in, granted access to my repo, and Render did the rest in minutes!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cost: &lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;My bill so far: &lt;code&gt;$1.65&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Admittedly we have a bit of a side quest here regarding hosting. During the first demo, there was a snag where the container timed itself out due to inactivity (we were discussing some nuances of a story) and then waiting for the demo server to start up and create the room again was a little bit of a speed bump. So digging around a little bit I decided to spin up an instance on Google Cloud Run that was a bit more stable and they have a generous free tier for usage as long as I stay under the cap and for a demo project like this, I&apos;m far from hitting it. I also get the auto deploy goodness I had with Render as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cost: &lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The final bill: &lt;code&gt;$1.65 + no recurring charges&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Free Tier Landscape in 2026&lt;/h2&gt;
&lt;p&gt;The beautiful thing that you might not realize is that all the major cloud platforms are in a quiet arms race for developer attention, and the casualty of that war is your dev and hosting bill. There are a ton of tools I look at/use when I&apos;m building something new:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;li&gt;Windsurf&lt;/li&gt;
&lt;li&gt;Antigravity (Google&apos;s version of VSC)&lt;/li&gt;
&lt;li&gt;Azure&lt;/li&gt;
&lt;li&gt;Firebase&lt;/li&gt;
&lt;li&gt;Google Cloud&lt;/li&gt;
&lt;li&gt;Vercel&lt;/li&gt;
&lt;li&gt;Render&lt;/li&gt;
&lt;li&gt;Netlify&lt;/li&gt;
&lt;li&gt;Supabase&lt;/li&gt;
&lt;li&gt;Github&lt;/li&gt;
&lt;li&gt;CodeMagic&lt;/li&gt;
&lt;li&gt;...and more!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agile Arcade was very simple and lightweight, but stateless and ephemeral isn&apos;t right for every project. My other side projects - &lt;a href=&quot;https://oneminutetobreathe.com&quot;&gt;One Minute to Breathe&lt;/a&gt; and &lt;a href=&quot;https://prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt; - have databases, auth, notifications, and more moving parts. The &quot;bootstrap on the cheap&quot; calculus looks different for those, but even those are costing me less than my monthly coffee subscription and I&apos;ll write about each of them separately and you&apos;ll see how I put that list above to use.&lt;/p&gt;
&lt;h2&gt;Et Vous? What&apos;s Your Excuse?&lt;/h2&gt;
&lt;p&gt;If there&apos;s a tool your team uses that feels rickety, or a workflow you keep doing manually because &quot;there&apos;s no good solution,&quot; or a paywall you&apos;re quietly annoyed about, or a fun idea you&apos;ve been wanting to play around with just to explore new tech more, there&apos;s a train hack or weekend project hiding in there for you!&lt;/p&gt;
&lt;p&gt;The barrier for getting something live has never been lower. The free tiers are real. The deployment tools are genuinely good. The main cost is a few hours and a &quot;train&quot; of thought you can&apos;t stop &lt;em&gt;(see what I did there? 8^D)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;What would you build if you knew it wouldn&apos;t cost anything to ship? [:: seriously, I want to know ::]&lt;/p&gt;
</content:encoded></item><item><title>O3s: The Most Underrated Tool in an EM&apos;s Kit</title><link>https://dillieo.me/posts/growth/2026-03-26-o3s-the-most-underrated-tool-in-an-ems-kit/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2026-03-26-o3s-the-most-underrated-tool-in-an-ems-kit/</guid><description>My one-on-ones had quietly become standups in disguise. Here&apos;s what I landed on and why each one earns its place.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There was a point where my one-on-ones had quietly become standups in disguise.&lt;/p&gt;
&lt;p&gt;My team had grown and been divided into three squads. I was tech lead of one of them, and somewhere in the shuffle of more meetings, more decisions, and less time in the actual code, I drifted into &quot;bean counter&quot; mode. Every week, same three questions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What did you get done? What&apos;s next? What&apos;s blocking you?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Efficient. Predictable. Useless.&lt;/p&gt;
&lt;p&gt;It took me a while to name what was wrong. My role as a manager isn&apos;t measured in lines of code anymore. It&apos;s measured in the clarity I provide, the obstacles I remove, and the growth of the people I lead. Status updates don&apos;t move any of those needles. What does? Questions that surface insight, friction, and momentum. Sometimes that&apos;s technical. Sometimes it&apos;s relational. Sometimes it&apos;s just finding out that someone is quietly drowning, &lt;em&gt;or quietly bored&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I call these meetings O3s. And after a lot of iteration &lt;em&gt;(I&apos;m on version five of this question list, if you&apos;re counting)&lt;/em&gt; here&apos;s what I&apos;ve landed on and why each one earns its place.&lt;/p&gt;
&lt;h2&gt;What&apos;s top of mind for you right now?&lt;/h2&gt;
&lt;p&gt;This is a great open ended question that can surface a variety of things. It could be a technical challenge, a personal challenge, a team challenge, a project challenge, etc. I make sure to nudge people that this doesn&apos;t have to be directly work related as well. There&apos;s one person on my team working on a masters degree. Another has three young children and is working out what the next vacation is or how to balance family and work. It&apos;s a great way to start the conversation and get a sense of what&apos;s going on in their world, and it often opens to some deeper conversations of how I can support.&lt;/p&gt;
&lt;h2&gt;What’s something that felt harder than it should have this week?&lt;/h2&gt;
&lt;p&gt;This question sometimes leaves the impression that something is wrong, but often it surfaces something more ordinary: a dependency that blocked progress, a library that fought back, a hard problem that just took longer than expected. It could have been a nuance in a library being used &lt;em&gt;(good &apos;ol Murphys law)&lt;/em&gt; that made things take longer to be completed. It could have been a genuine challenge to a hard problem. The nice thing about this question is that it then follows back up with how the solution was found (with a kudos for learning/solving a thing) or it helps communicate something I can go and unblock for them. Sometimes it also surfaces learning opportunities that become a great growth catalyst.&lt;/p&gt;
&lt;h2&gt;Where do you feel under-supported or under-utilized right now?&lt;/h2&gt;
&lt;p&gt;This question was recommended to me and it seemed odd, but has been rather insightful. Something like this is often not raised voluntarily by a person, for potential fear of looking like they are complaining, so it is a sign of care when you bring it up. This question has a great way of surfacing who is quietly drowning, who is bored and ready for more, or where skill gaps or role clarity issues exist. It can open up some great long term discussions. On the flip side, I have one engineer spending half their time on two different squads with varying responsibility so I make sure to ask the opposite: are you being over-utilized right now?&lt;/p&gt;
&lt;h2&gt;What’s one thing you learned this week, technical or otherwise, that you want to build on?&lt;/h2&gt;
&lt;p&gt;I really like the &quot;or otherwise&quot; part of this question. I have one engineer who is quite the handyman and I get to learn about their latest home improvement projects. I have another who is doing a deep dive into Claude for a hobby project and I get a few pointers from them. They also bring those pointers back to the active project work we have. Asking this question helps reinforce a growth mindset, which is something I try to encourage daily in my team. It also builds long‑term capability and &quot;fungibility&quot;, as my CTO calls it.&lt;/p&gt;
&lt;h2&gt;A few more worth keeping...&lt;/h2&gt;
&lt;p&gt;Admittedly these four questions can fill up an entire meeting and often just one of them becomes a huge catalyst for discussion. However, I have a couple of other ones I like to pepper in [:: note to self, maybe make them standard again ::] if it has been a notably quiet meeting.&lt;/p&gt;
&lt;h2&gt;What&apos;s the one thing you&apos;re most proud of this past week?&lt;/h2&gt;
&lt;p&gt;It&apos;s easy to focus on the negatives or blockers, or to even just consider work accomplished as &quot;par for the course.&quot; However, a problem solved, a new resource found, a crazy week that was balanced without going insane, those are things to be proud of and work reminding oneself of as a small means of self care. It can often tease out something they are excited about as well, which unlocks a lot of conversational doors.&lt;/p&gt;
&lt;h2&gt;What&apos;s one thing you can do 1% better?&lt;/h2&gt;
&lt;p&gt;This is one of my absolute favorites. I should just keep this one in there permanently. The way I embrace a growth mindset on a daily basis is to ask myself this very question because we often think about growth in these massive steps but through reading Darren Hardy&apos;s &lt;em&gt;The Compound Effect&lt;/em&gt; and other resources, I&apos;ve learned that growth is more successful when it is small and incremental. You won&apos;t see it immediately, but it will compound over time and be much bigger than the &quot;big push&quot; you made for a short amount of time. It also &quot;softens the blow&quot; of how to change. You may think &quot;Wow, I really need to be much better at code reviews.&quot; but not know where to start or try to come with a comprehensive strategy that gets overwhelming. The &quot;1%&quot; approach might just be spending five extra minutes on a code review, being slower and more deliberate. That&apos;s all. Stack enough of those and you become a master reviewer.&lt;/p&gt;
&lt;h2&gt;Double Bonus: Table Talk Cards&lt;/h2&gt;
&lt;p&gt;Sometimes that opening &quot;How is it going&quot; just isn&apos;t cutting the ice or helping foster the deeper conversations. I had been through quite a spell of those meetings. Interestingly enough, one day the office was doing a &quot;clear out&quot; of random things it found in cabinets and there was a cube of &quot;Table Topics&quot; ice breaker questions sitting there. I had seen similar things before and figured it wouldn&apos;t hurt to try them out. We&apos;d either get a chuckle over the cheesy questions they asked or have some really insightful answers that let us get to know each other better and segue into the other topics as well. This has been a WONDERFUL addition to my O3s and I highly recommend giving it a try.&lt;/p&gt;
&lt;h2&gt;Et vous?&lt;/h2&gt;
&lt;p&gt;There&apos;s my current toolkit: four core questions plus a few I keep in rotation for when things go quiet. Will they look exactly like this in another six months? Probably not. That&apos;s kind of the point. Every version taught me something the last one couldn&apos;t.&lt;/p&gt;
&lt;p&gt;If your O3s have drifted into standup territory, I hope this gives you something to work with. And if you&apos;ve got a question that reliably opens a door, one you keep coming back to week after week, &lt;a href=&quot;/contact/&quot;&gt;I&apos;d genuinely love to hear it&lt;/a&gt;. I&apos;m always looking for version six.&lt;/p&gt;
&lt;p&gt;What&apos;s the one O3 question you&apos;d never give up?&lt;/p&gt;
</content:encoded></item><item><title>I Was Being Kind. I Was Also Being Cowardly</title><link>https://dillieo.me/posts/growth/2026-03-12-i-was-being-kind-i-was-also-being-cowardly/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2026-03-12-i-was-being-kind-i-was-also-being-cowardly/</guid><description>One Preposition. A Lot of Unlearning.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m nearly three years into being an engineering manager and I&apos;m still regularly surprised by how much of this job is about unlearning.&lt;/p&gt;
&lt;p&gt;I came into this role having spent the better part of two decades as a developer and technical lead. Giving feedback on code, architecture, technical tradeoffs, that was just part of the job: clean, technical, and easy - low stakes emotionally.&lt;/p&gt;
&lt;p&gt;But zut alors! Feedback for people?! Telling the most technically astute person in the room they are being rude to a client and demeaning their team?! The way they show up in a meeting and suck the energy out of the room?! The habits that are quietly limiting their growth?! The conversation about not performing at the level the role requires?! That&apos;s a different animal entirely. And truth be told, I was avoiding it as much as I could.&lt;/p&gt;
&lt;p&gt;As Kim Scott describes it, I suffer from &quot;ruinous empathy.&quot; [:: which is a more diplomatic way of saying I care so much about not hurting someone&apos;s feelings that I end up doing them a quiet disservice ::] It&apos;s really painful because I see it showing up in so many ways.&lt;/p&gt;
&lt;p&gt;The voice in my head was saying things like...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Things were looking a &lt;em&gt;tiny&lt;/em&gt; bit better after two weeks so maybe we&apos;re on a good path and I don&apos;t need to have that conversation anymore.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;I can&apos;t offer a direction to take if I&apos;m not willing to do the thing myself.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;What if things were misunderstood and they got really mad?!&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;d tell myself I was being kind by letting things get better on their own in the long run. In the short term, it felt like kindness. But underneath that, I think I was mostly just uncomfortable and the person on the other side had no idea they were missing something they needed to hear. What makes it worse is that I actually was doing a disservice to them as their leader. How can they grow if they don&apos;t know the things that need improving?&lt;/p&gt;
&lt;p&gt;Then one day a profound nugget of wisdom dropped in my lap [:: actually a couple of times ::] from a John Maxwell podcast I was listening to on my commute home:&lt;/p&gt;
&lt;p&gt;&quot;You are not responsible FOR the people you lead. You are responsible TO the people you lead.&quot;&lt;/p&gt;
&lt;p&gt;Something really clicked for me with the change of just one word.&lt;/p&gt;
&lt;p&gt;Being responsible FOR someone sounds like a parent. It implies protection, management of outcomes, a kind of benevolent control. If I&apos;m responsible for someone, then withholding uncomfortable feedback is an act of care. I&apos;m shielding them. While I care for my team, there&apos;s a level of personal attachment that can cloud my judgment and provide a level of empathy that is ruinous. [:: see what I did there? ::]&lt;/p&gt;
&lt;p&gt;By contrast, being responsible TO someone is something different. It implies a commitment. An obligation to give them what they actually need, not just what feels comfortable to hand over. If I&apos;m responsible to someone, then withholding honest feedback isn&apos;t kindness at all. It&apos;s a failure to show up for them.&lt;/p&gt;
&lt;p&gt;That&apos;s when I realized: my ruinous empathy wasn&apos;t protecting anyone. It was protecting me.&lt;/p&gt;
&lt;p&gt;I applied this recently in a review I had to write. There were some issues with communication style, overengineering solutions, and a tendency to work in isolation instead of collaborating more.&lt;/p&gt;
&lt;p&gt;It would have been easier for me to avoid these issues, find small wins, and let the problems fester. But that wouldn&apos;t have been responsible TO this person. I took the extra time to be thoughtful in my feedback, point out how the issues or actions, not the person, impacted the team, and offer specific suggestions for improvement. I read it over probably too many times, received some feedback from my manager, and then discussed it during our review.&lt;/p&gt;
&lt;p&gt;I expected awkwardness. Maybe some defensiveness. What I got instead was a pause, and then: &quot;I can see where you&apos;re coming from and I always want to improve. I&apos;m glad you brought it up.&quot;&lt;/p&gt;
&lt;p&gt;I sat with that for a moment after the meeting. All that time I&apos;d spent not saying something, and the person had been half-aware of it and waiting for someone to acknowledge it and provide suggestions to improve. We had one of the best conversations we&apos;d had in months. It didn&apos;t fix everything,  that&apos;s a longer journey, but we took a step, and a door opened for future conversations.&lt;/p&gt;
&lt;p&gt;I&apos;m telling you right now that I&apos;m far from cured of my ruinous empathy. I still feel the pull to soften, to hedge, to avoid, to wait for a better moment. But I&apos;ve started leaning into that pull a little more: not being afraid of it, and treating that pull as a signal rather than a guide. When I feel the urge to protect someone from a hard truth, I try to ask myself: Am I being kind, or am I just being comfortable?&lt;/p&gt;
&lt;p&gt;I hope to have more conversations of a similar nature in the future to do better at being responsible TO my team&apos;s growth and success.&lt;/p&gt;
&lt;p&gt;The Maxwell line gave me something I didn&apos;t know I needed: permission. Not permission to be harsh, but permission to trust that the people I work with are adults who can handle honest feedback, and that they deserve it. Being responsible to someone means believing they can grow. That&apos;s a form of respect.&lt;/p&gt;
&lt;p&gt;Et Vous? Do you struggle with the line between empathy and honest feedback? Has there been any other insights that help you be responsible to your team and not for your team? Drop me a line and let me know. I need all the insights I can get!&lt;/p&gt;
</content:encoded></item><item><title>Try Easier</title><link>https://dillieo.me/posts/life/2026-01-28-try-easier/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2026-01-28-try-easier/</guid><description>...wow, that seems a little odd.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello 2026!&lt;/p&gt;
&lt;p&gt;I&apos;m writing this post from the train where I can focus on more things that matter and for which I didn&apos;t have the margin to work with in recent years. It&apos;s been rather refreshing and given me a bit more space to think about things.&lt;/p&gt;
&lt;p&gt;In particular, I&apos;ve noticed how much I&apos;ve been doing &quot;the grind&quot; for months, years, &lt;em&gt;[gasp, decades?]&lt;/em&gt; now and to some extent the results have not been what I fully expected. Don&apos;t get me wrong, I&apos;m a big fan of focus, hard work, and showing up consistently day over day (the compound effect) in order to be successful. At the same time, how much have I gotten out of the 2 dozen podcasts I balance, the lengthy stack books I smush in between those, and oh, the nuggests of social media posts that are scattered in through it all. It gets pretty overwhelming!&lt;/p&gt;
&lt;p&gt;Starting to feel that more acutely the last few weeks, I stumbled upon a great article that came to the jist of...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You&apos;ve tried harder, and that hasn&apos;t worked. Did you ever thing about trying easier?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The point there wasn&apos;t to give up, but more to the effect that we can over-index on the effort and in the process not give ourselves the time to reflect and adjust our approach. Maybe put in a simpler fashion, &quot;Yes there is too much of a good thing.&quot;&lt;/p&gt;
&lt;p&gt;Around this time I was listening to the Daily Stoic morning podcast and learned an interesting fact. Originally, the term &quot;well read&quot; was to indicate somebody who read deeply from a handful of authors, not widely. Read beyond pure knowledge and dig deeper into wisdom.&lt;/p&gt;
&lt;p&gt;This one-two punch has knocked around my mindset a bit for this year. It&apos;s time to &quot;try easier&quot;. That podcast list will drop down to 3 or 4 of my favorites that I want to really dive into. I&apos;ll pick one or two authors and read multiple books from them. I already made a plan to go back to my favorite/most influential books (Les Miserables, Lord of the Rings) and see what I can glean from them as I&apos;m reading them with more perspective and knowledge on life.&lt;/p&gt;
&lt;p&gt;As I write this, the FOMO in me is already trying to keep that list super long and scold myself for daring to miss a nook or cranny that may be overlooked this year. But alas, if I encourage myself and others to work smarter and not harder, why not apply it in the quantity space as well.&lt;/p&gt;
&lt;p&gt;I&apos;ll keep you posted. Let me know if you&apos;ve had any experience in this realm.&lt;/p&gt;
</content:encoded></item><item><title>The Year In Photos 2025</title><link>https://dillieo.me/posts/life/2025-12-29-the-year-in-photos-2025/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2025-12-29-the-year-in-photos-2025/</guid><description>Another year, another collection of my favorite pics</description><pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Love.&lt;/p&gt;
&lt;p&gt;Loss.&lt;/p&gt;
&lt;p&gt;Laughter.&lt;/p&gt;
&lt;p&gt;All the simple, yet important, things &lt;a href=&quot;https://photos.app.goo.gl/sjopNtvmfNa2hqqRA&quot;&gt;filed under &apos;L&apos; for life&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m excited for what 2026 will bring!&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2025</title><link>https://dillieo.me/posts/life/2025-11-27-thankful-tree-2025/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2025-11-27-thankful-tree-2025/</guid><description>A few things Im thankful for in 2025</description><pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Wow -- another year is swiftly coming to an end and while the blog has been quiet this year, there is still time to stop and reflect. I&apos;m thankful for a lot of things, but a few that trickle to the top of my mind would be...&lt;/p&gt;
&lt;h2&gt;Margin&lt;/h2&gt;
&lt;p&gt;I&apos;ve really been trying to live into having more &lt;a href=&quot;https://app.thestorygraph.com/books/344825e0-3fdc-4d56-8d0b-28ac8ef5349b&quot;&gt;margin&lt;/a&gt; in my life and it has been something I&apos;m extremely thankful for. Those morning coffees with Jen on Mondays and Fridays. Enjoying some reading and a sunrise when I arrive early to the office. Taking &lt;a href=&quot;https://oneminutetobreathe.com&quot;&gt;a minute to breathe&lt;/a&gt;. These small things have added up to something big.&lt;/p&gt;
&lt;h2&gt;Rituals&lt;/h2&gt;
&lt;p&gt;The family&apos;s winter &lt;a href=&quot;/gaming-done-right-angband/&quot;&gt;Angband&lt;/a&gt; challenge. The bottle of &lt;a href=&quot;https://www.wineclubgroup.com/beaujolais-nouveau-thanksgiving-dinner/&quot;&gt;Beaujolais Nouveau&lt;/a&gt; with Thanksgiving dinner. The Friday night pizza and a movie. It&apos;s these things that we lean into and look forward to week over week, or year over year, that can add some familiarity, stability, and fond memories in crazy times.&lt;/p&gt;
&lt;h2&gt;Text Messaging&lt;/h2&gt;
</content:encoded></item><item><title>The Year In Photos 2024</title><link>https://dillieo.me/posts/life/2024-12-31-the-year-in-photos-2024/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2024-12-31-the-year-in-photos-2024/</guid><description>A few highlights through photos of the year</description><pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Graduations...
Turning 18...
A Wizarding Trip...
MORE Pokemon Go...
Family...
Friends...
Another RAGNAR...
...and so much more&lt;/p&gt;
&lt;p&gt;Another packed year and I&apos;m forced &lt;em&gt;(oh what a curse)&lt;/em&gt; to distill a huge chunk of photos &lt;em&gt;(grandpa would be proud)&lt;/em&gt; to a few favorites.&lt;/p&gt;
&lt;p&gt;Here is &lt;a href=&quot;https://photos.app.goo.gl/2whTiYSQoSaxD6f18&quot;&gt;my take on the year 2024&lt;/a&gt;, filed under &apos;L&apos; for Life.&lt;/p&gt;
&lt;p&gt;Look out 2025, here we come!&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2024</title><link>https://dillieo.me/posts/life/2024-11-28-thankful-tree-2024/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2024-11-28-thankful-tree-2024/</guid><description>Reflecting on what Im thankful for in 2024</description><pubDate>Thu, 28 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A lot of this year has been reflection and resetting. As I do, three things trickle up to the top that I&apos;m thankful for, albeit there are plenty more...&lt;/p&gt;
&lt;h2&gt;Friends&lt;/h2&gt;
&lt;p&gt;This has been the year of reunions. I&apos;ve reconnected with a group of friends from high school that I spent four years learning French with. I&apos;ve made sure to keep in touch with some of my friends from my previous job. Finally after about 5 years I was able to see my best friend face to face and give him a big hug. Those morning breakfasts or lunchtime hangouts were priceless. There so much to be said about a good gab fest, I highly encourage it.&lt;/p&gt;
&lt;h2&gt;Breathing&lt;/h2&gt;
&lt;p&gt;The speed and chaos of the month or week &lt;em&gt;(or even day)&lt;/em&gt; continues and I realized that oddly enough the biggest way to nullify the stress of this was to simply stop and breathe for a minute. A minute seems so short and yet can be so long and beneficial when you&apos;re able to stop and gain some perspective through breathing or prayer. It has become so helpful that I even made an &lt;a href=&quot;https://oneminutetobreathe.com/&quot;&gt;app to support me&lt;/a&gt; to do this. Sure this is a bit of a shameless plug but I truly am thankful for embracing this.&lt;/p&gt;
&lt;h2&gt;Pokemon Go&lt;/h2&gt;
&lt;p&gt;Pokemon Go has been a source of fun and joy for our family this past year. Nearly every Friday after I wrapped up work we&apos;d hop in the car, drive to our favorite location and go wild. Sometime this was catching, sometimes this was driving all around down to finish a special challenge, sometimes it was joining a massive raid. A lot of times it was ALL of the above. Oh yeah, then there were the weekend community days too 8^D. It was simple, cheap fun that always had something new going on.&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;What are you thankful for this year? It is more important than ever to find even the small things in your life and name them as we approach the grey of winter and cold it brings. There&apos;s also plenty of evidence to show how a mindset of thankfulness does wonders. &lt;a href=&quot;/contact/&quot;&gt;I’d like to hear them!&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How To Grow As A Developer</title><link>https://dillieo.me/posts/development/2024-10-25-how-to-grow-as-a-developer/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2024-10-25-how-to-grow-as-a-developer/</guid><description>Three key principles to use year over year to grow as a developer.</description><pubDate>Fri, 25 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a really good conversation with a member my team earlier this week during our one on one meeting who simply asked, &quot;How do I get to the next level as a developer?&quot; I continue to ask this of myself over the years and as I&apos;ve mentored others &lt;em&gt;(and admittedly myself as well)&lt;/em&gt; I&apos;ve found that are three principles that I apply year over year...&lt;/p&gt;
&lt;h2&gt;Grow Wider&lt;/h2&gt;
&lt;p&gt;Technology is constantly changing. Languages, tools, frameworks, systems, design approaches, everything is in flux. This is wonderful because there is an unlimited smorgasboard to choose from. I find something new to learn every year. It may not be directly related to my current work or project, but learning a new language shows you new approaches to solving a problem that you can broaden your mindset with. I also find it it refreshing to be able to start from scratch and have everything &lt;a href=&quot;/when-did-the-world-get-huge-for-you/&quot;&gt;&quot;new and big&quot;&lt;/a&gt; again. Learn native mobile development if all you&apos;ve done are WebAPIs. Dabble with CI/CD automation if you always let somebody else deploy your code. Learn to &lt;a href=&quot;/do-something-crazy-new/&quot;&gt;tap dance&lt;/a&gt;! You won&apos;t be disappointed.&lt;/p&gt;
&lt;h2&gt;Grow Deeper&lt;/h2&gt;
&lt;p&gt;While it may be tempting to always work with new things, there are certain challenges that require a depth of knowledge that you can&apos;t achieve without taking the time to really know your language/framework/tool/system. Take the time to grow deeper. Become the specialist in performance for your framework since there will be a time when every millisecond will count. Learn the design system for your stack so you can more readily build in depth user experiences. Find that thing that really excites or intrigues you and learn every facet about it. Going deeper in a few places will give you a greater appreciation for what you build and make you the &quot;go to&quot; person when something big comes up.&lt;/p&gt;
&lt;h2&gt;Get 1% Better&lt;/h2&gt;
&lt;p&gt;A few years back I was given a copy of Darren Hardy&apos;s &lt;em&gt;The Compound Effect&lt;/em&gt; and then subscribed to his &lt;a href=&quot;https://sparklp.co/afb41736/&quot;&gt;Darren Daily&lt;/a&gt; videos. This paired up nicely with a training course I was in that asked the question, &quot;What was something we could do 1% better with this course?&quot; The idea behind this is that we often think too much about the &quot;big picture&quot; changes that we want to make, feel like we don&apos;t have the time to actually do them, and thus get stuck in a rut. However, if we can find something today, tomorrow, and the next, that is just 1% better, and compound this over time, the changes will be amazing. Maybe the change is simply spending a little more time in those code reviews to understand things more. Maybe the change is asking a random question in your teams Slack thread to get a conversation going about adopting best practices. Maybe the change is listening to one 30 minute podcast while you&apos;re doing the dishes or on the drive to learn a bit more. You won&apos;t see these changes immediately, but when you look back in a year or two, you&apos;ll be suprised and what has happened.&lt;/p&gt;
&lt;h2&gt;Guess what?!&lt;/h2&gt;
&lt;p&gt;Guess what?! These tricks don&apos;t apply to just development, they apply to pretty much &lt;a href=&quot;/your-career-the-microcosm-of-your-life-part-1/&quot;&gt;everything else in life too&lt;/a&gt;. Give it a shot 8^D&lt;/p&gt;
&lt;h2&gt;What Else?&lt;/h2&gt;
&lt;p&gt;Any principles, tips, reseources that have helped you grow? Anything you think I could explain 1% better above? &lt;a href=&quot;/contact&quot;&gt;I&apos;d love to hear it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;| *...it&apos;s my &quot;Never stop learning or growing tree&quot; |&lt;/p&gt;
&lt;p&gt;I had a really good conversation with a member my team earlier this week during our one on one meeting who simply asked, &quot;How do I get to the next level as a developer?&quot; I continue to ask this of myself over the years and as I&apos;ve mentored others &lt;em&gt;(and admittedly myself as well)&lt;/em&gt; I&apos;ve found that are three principles that I apply year over year...&lt;/p&gt;
&lt;h2&gt;Grow Wider&lt;/h2&gt;
&lt;p&gt;Technology is constantly changing. Languages, tools, frameworks, systems, design approaches, everything is in flux. This is wonderful because there is an unlimited smorgasboard to choose from. I find something new to learn every year. It may not be directly related to my current work or project, but learning a new language shows you new approaches to solving a problem that you can broaden your mindset with. I also find it it refreshing to be able to start from scratch and have everything &lt;a href=&quot;/when-did-the-world-get-huge-for-you/&quot;&gt;&quot;new and big&quot;&lt;/a&gt; again. Learn native mobile development if all you&apos;ve done are WebAPIs. Dabble with CI/CD automation if you always let somebody else deploy your code. Learn to &lt;a href=&quot;/do-something-crazy-new/&quot;&gt;tap dance&lt;/a&gt;! You won&apos;t be disappointed.&lt;/p&gt;
&lt;h2&gt;Grow Deeper&lt;/h2&gt;
&lt;p&gt;While it may be tempting to always work with new things, there are certain challenges that require a depth of knowledge that you can&apos;t achieve without taking the time to really know your language/framework/tool/system. Take the time to grow deeper. Become the specialist in performance for your framework since there will be a time when every millisecond will count. Learn the design system for your stack so you can more readily build in depth user experiences. Find that thing that really excites or intrigues you and learn every facet about it. Going deeper in a few places will give you a greater appreciation for what you build and make you the &quot;go to&quot; person when something big comes up.&lt;/p&gt;
&lt;h2&gt;Get 1% Better&lt;/h2&gt;
&lt;p&gt;A few years back I was given a copy of Darren Hardy&apos;s &lt;em&gt;The Compound Effect&lt;/em&gt; and then subscribed to his &lt;a href=&quot;https://sparklp.co/afb41736/&quot;&gt;Darren Daily&lt;/a&gt; videos. This paired up nicely with a training course I was in that asked the question, &quot;What was something we could do 1% better with this course?&quot; The idea behind this is that we often think too much about the &quot;big picture&quot; changes that we want to make, feel like we don&apos;t have the time to actually do them, and thus get stuck in a rut. However, if we can find something today, tomorrow, and the next, that is just 1% better, and compound this over time, the changes will be amazing. Maybe the change is simply spending a little more time in those code reviews to understand things more. Maybe the change is asking a random question in your teams Slack thread to get a conversation going about adopting best practices. Maybe the change is listening to one 30 minute podcast while you&apos;re doing the dishes or on the drive to learn a bit more. You won&apos;t see these changes immediately, but when you look back in a year or two, you&apos;ll be suprised and what has happened.&lt;/p&gt;
&lt;h2&gt;Guess what?!&lt;/h2&gt;
&lt;p&gt;Guess what?! These tricks don&apos;t apply to just development, they apply to pretty much &lt;a href=&quot;/your-career-the-microcosm-of-your-life-part-1/&quot;&gt;everything else in life too&lt;/a&gt;. Give it a shot 8^D&lt;/p&gt;
&lt;h2&gt;What Else?&lt;/h2&gt;
&lt;p&gt;Any principles, tips, reseources that have helped you grow? Anything you think I could explain 1% better above? &lt;a href=&quot;/contact&quot;&gt;I&apos;d love to hear it&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The Year In Photos 2023</title><link>https://dillieo.me/posts/life/2023-12-26-the-year-in-photos-2023/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2023-12-26-the-year-in-photos-2023/</guid><description>thankful tree</description><pubDate>Tue, 26 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s easy enough to say &quot;this was the biggest year yet&quot; but this year really changed on how to define that. Family lost, new family arrived, reunions with family that haven&apos;t been seen in a long long time. Left a job after over a decade I didn&apos;t think I would ever leave; found a new job that&apos;s better than I ever thought possible. Stress lost, margin found. Laughter, tears, memories, experiences, new perspectives gained. I feel more refreshed than I have been in a while and excited to tackle 2024.&lt;/p&gt;
&lt;p&gt;Here are &lt;a href=&quot;https://photos.app.goo.gl/asdy2gQzHfP17tNK9&quot;&gt;a few highlights&lt;/a&gt; on the year.&lt;/p&gt;
&lt;p&gt;More writing to come ahead!&lt;/p&gt;
</content:encoded></item><item><title>Thankful 2023</title><link>https://dillieo.me/posts/life/2023-11-22-thankful-2023/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2023-11-22-thankful-2023/</guid><description>thankful tree</description><pubDate>Wed, 22 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been a good year to reflect. A lot of changes, even more growth, and I consider myself even more thankful for the things around me than I did the previous year. I believe it was Fr. Richard Rohr who mentioned that as you grow your perspective changes from &quot;having what you love&quot; to &quot;loving what you have&quot;. With that in mind, here are 3 things (of many) to which I&apos;m thankful for this year.&lt;/p&gt;
&lt;h2&gt;Home&lt;/h2&gt;
&lt;p&gt;I feel like this one alwayys shows up on my list but it is ever present on my mind. My home has continued to be my &lt;a href=&quot;/sanctuary&quot;&gt;sanctuary&lt;/a&gt;. A place to unwind, to escape, to serve others, to improve, to build memories within.&lt;/p&gt;
&lt;h2&gt;New Job&lt;/h2&gt;
&lt;p&gt;I still have a lot of unpacking to do around the shift, but in June I left my role at Fresh and started a new one as a Software Development Manager at &lt;a href=&quot;https://usafacts.org&quot;&gt;USAFacts&lt;/a&gt;. While the transition has been a bit crazier than I thought it would be, I find myself back to a place where I can breathe once again. Where I can get deeper with an amazing (and still growing) team of engineers, and I reprioritize the things that are most important to me.&lt;/p&gt;
&lt;h2&gt;Used Books&lt;/h2&gt;
&lt;p&gt;We&apos;ve really doubled down on this one as a family. Much like how we did coffee runs as a family last year (and continue to do so), we&apos;ve been leaning into finding used bookstores in the area, getting some boba tea, and shopping! Finding old treasures, new releases for dirt cheap, and enjoying the smell of paper oddly enough brings us together as a family and continues to make memories. The only problem it causes is increases my list on GoodReads. I suspect it&apos;ll never reach &quot;inbox zero&quot; 8^D.&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;What are you thankful for this year? It is more important than ever to find even the small things in your life and name them as we approach the grey of winter and cold it brings. There&apos;s also plenty of evidence to show how a mindset of thankfulness does wonders. I’d like to hear them!&lt;/p&gt;
</content:encoded></item><item><title>Fabulous Fail Friday Margin</title><link>https://dillieo.me/posts/growth/2023-02-17-fabulous-fail-friday-margin/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2023-02-17-fabulous-fail-friday-margin/</guid><description>bible margin notes</description><pubDate>Fri, 17 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy Friday! It&apos;s time for another issue of Fabulous Fail Fridays! Here&apos;s a chance to embrace the suck, celebrate mistakes, realizing that they lead to learning and growth. Maybe it&apos;ll even encourage you to find small &quot;experiments&quot; in which to potentially fail, learn, and make your project better. Here&apos;s another one to consider.&lt;/p&gt;
&lt;p&gt;It&apos;s hard to pin this one on to a specific event, but the past few years have had a growing trend in small technical fails: a clearly missed line in a pull request that results in a deployment bug (and more work to resolve), an estimate that is way off, outlining the solution to the wrong project, etc. This also trends into scheduling fails, personal followup fails, and even health fails (I&apos;m about a month behind on my RAGNAR training 8^D). There are plenty dimensions along which this applies: planning, execution, learning, seeing and doing &quot;all the thingz.&quot;&lt;/p&gt;
&lt;p&gt;The &quot;fabulous fail&quot; in all of this is that I haven&apos;t left room for &quot;margin.&quot; Faster machines, more advanced tools, and general progress enable me to do more better and faster, but in doing that I put more onto the plate. When the inevitable Chaos Monkey walks in with things, I&apos;m already working on the next thing and now it requires unnatural extensions of time and the universe to set things right. That &quot;one more thing&quot; winds up feeling like 10.&lt;/p&gt;
&lt;p&gt;Potentially even more impactful, I&apos;ve found that often the best ideas, impactful connections with people, and new exciting things often are found in these &quot;margins&quot; of time that are getting squished or removed in the name of progress or &quot;moving fast and breaking things.&quot;&lt;/p&gt;
&lt;p&gt;A lot of this isn&apos;t new, but a recent book I read (aptly named &lt;em&gt;Margin&lt;/em&gt; by Richard Swenson) is reminding me to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eat my lunch away from my desk&lt;/li&gt;
&lt;li&gt;Block out time in my day to focus and be able to think&lt;/li&gt;
&lt;li&gt;Honor my mental/physical health and do those runs&lt;/li&gt;
&lt;li&gt;Life Hack: Do those one on one meetings via a quick walk around the block if you can&lt;/li&gt;
&lt;li&gt;Prioritize sleep over the all nighter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not surprisingly, as I embrace putting margin into work and life, the inevitable chaos monkey becomes a much smaller and manageable issue, becaues there is time, energy, and head space in which to tackle it head on.&lt;/p&gt;
&lt;p&gt;How about you? When have you been able to embrace small experiments / lots of fails in order to succeed?&lt;/p&gt;
</content:encoded></item><item><title>Fabulous Fail Friday Daring Leadership</title><link>https://dillieo.me/posts/growth/2023-02-10-fabulous-fail-friday-daring-leadership/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2023-02-10-fabulous-fail-friday-daring-leadership/</guid><description>people talking</description><pubDate>Fri, 10 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy Friday! It&apos;s time for another issue of Fabulous Fail Fridays! Here&apos;s a chance to embrace the suck, celebrate mistakes, realizing that they lead to learning and growth. Maybe it&apos;ll even encourage you to find small &quot;experiments&quot; in which to potentially fail, learn, and make your project better. Here&apos;s another one to consider.&lt;/p&gt;
&lt;p&gt;A few years back I was in charge of a large project involving multiple teams and involved a large scale migration from a legacy system to our new one. We needed to continue to support the flow of data from the old system into the new as well as maintain the new systems data flow. We needed to identify a message streaming platform / distributed event system to last us now and into the future.&lt;/p&gt;
&lt;p&gt;I did a good thing. I said I don&apos;t know what would be best, we didn&apos;t have time to experiment in this case, and this was important enough that we should find some help. So we did! We were able to find a great person with decades of experience in this field and could easily be a contract to hire, since we were envisioning more projects of this scale on the horizon.&lt;/p&gt;
&lt;p&gt;We were able to come to the solution we needed, but it was a messy path there. Our contractor was used to massive requirements criteria, multi-month proof of concept builds, and lots of time gaps while to followup on analytics. We were used to quick (but sufficient) requirements identification, quick proof of concept builds, and frequent communication with tight timelines. Of course this led to a lot of tension between the contractor and our project manager as our decision milestone approached.&lt;/p&gt;
&lt;p&gt;I failed to manage this well. In an effort to placate the situation I often made myself the go between in the situation, filling in the gaps of knowledge/needs/space for each side. I couldn&apos;t resolve the conversations I wasn&apos;t there for and eventually it led to me trying to have a conversation one evening with the contractor where I failed to get my thoughts out clearly and wound up giving a rather ugly &quot;just do it&quot; type edict. We got our solution, but future projects together was not going to happen.&lt;/p&gt;
&lt;p&gt;It was shortly after that I stumbled upon Brene Brown&apos;s &lt;em&gt;Dare to Lead&lt;/em&gt; book and it really changed how I approached a lot of conversations. I still have a long way to go, but it has really helped me change my view to add vulnerability, trust, values (community and integrity are mine), and resilience as key principles that I take into my conversations.&lt;/p&gt;
&lt;p&gt;How about you? When have you been able to embrace small experiments / lots of fails in order to succeed?&lt;/p&gt;
</content:encoded></item><item><title>The Year In Photos 2022</title><link>https://dillieo.me/posts/life/2022-12-30-the-year-in-photos-2022/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2022-12-30-the-year-in-photos-2022/</guid><description>The Year In Photos 2022</description><pubDate>Fri, 30 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It has undoubtedly been the toughest and most grueling year for me and my family. And yet, we found little nuggets and new traditions to bring us closer together and celebrate along the way. Here’s a hat tip to 2022 and an excited jump into a muc&lt;/p&gt;
&lt;p&gt;See the rest here: &lt;a href=&quot;https://photos.app.goo.gl/vpWjiZs4vMBX8LMb9&quot;&gt;https://photos.app.goo.gl/vpWjiZs4vMBX8LMb9&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree Mmxxii</title><link>https://dillieo.me/posts/life/2022-11-23-thankful-tree-mmxxii/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2022-11-23-thankful-tree-mmxxii/</guid><description>thankful tree</description><pubDate>Wed, 23 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:image {&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:3954,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Without a doubt life 4.4 has been the roughest version/year I can think of. It during these times that keeping a sense of gratitude and thankfulness becomes even more important. With that in mind, here are the three things I&apos;m most thankful for in 2022.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:read-more /--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Coffee&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Yes! Beyond a simple morning wake up, the joe, bean cubed, jumpin&apos; beans has become a family thing. At the beginning of the year I came up with a &quot;ritual&quot; that I wanted to try. With so many coffee places in the Pacific Northwest, I wanted to find a new, local (or regional) coffee house every weekend to try out. This would be a great way to support local companies, enjoy new tastes, get out of the house, and explore.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What started as just a quirky and fun thing turned into a ritual that we have not missed, even when we had to have it delivered due to people under the weather. The girls look forward to the event with so much energy and even wind up finding the places for us! We have found some amazing places, but more importantly, we&apos;ve found some more time together. We&apos;ve even attempted to document our adventures a bit on &lt;a href=&quot;https://www.instagram.com/52shadesofjava/&quot;&gt;Instagram&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Running&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Running has been my &lt;a href=&quot;/serenity&quot;&gt;serenity&lt;/a&gt;, and even more so this year as we battle mental health issues and look for places to help defrag and wok our some of that stress. My intensity, length, and routine have fluctuated quite a bit over the years, but I&apos;ve always made sure to get out and do some kind of running, and was really fortunate to finally get to return to the RAGNAR trails this year with a group of 5 others in Oregon.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;My Wife&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I could easily take another hundred posts to unpack this further, but having that best friend, and lover, and schemer, who is willing to walk through the really dark times with you, celebrate the small wins with you, and still keep compassion for others, including relative strangers, is something so rare and valuable and I cannot be thankful enough for my beloved, and the growth we&apos;ve had together through this trying time. We&apos;ve become stronger through it all.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What are you thankful for this year? It is more important than ever to find even the small things in your life and name them as we approach the grey of winter and cold it brings. There&apos;s also plenty of evidence to show how a mindset of thankfulness does wonders. I’d like to hear them!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Year In Photos 2021</title><link>https://dillieo.me/posts/life/2021-12-29-the-year-in-photos-2021/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2021-12-29-the-year-in-photos-2021/</guid><description>The Year In Photos 2021</description><pubDate>Wed, 29 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I try to admire the little things, filed under L for &quot;life&quot; throughout the year. I record some of them in my photo blog, and here are the highlights. Here&apos;s to a better MMXXII!!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://picadillieo.wordpress.com/2021/12/29/best-of-2021/&quot;,&quot;type&quot;:&quot;wp-embed&quot;,&quot;providerNameSlug&quot;:&quot;pic-a-dillie-o&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://picadillieo.wordpress.com/2021/12/29/best-of-2021/&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>When Did The World Get Huge For You</title><link>https://dillieo.me/posts/growth/2021-12-14-when-did-the-world-get-huge-for-you/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2021-12-14-when-did-the-world-get-huge-for-you/</guid><description>When Did The World Get Huge For You</description><pubDate>Tue, 14 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I found this in some old recordings and it reminds me to make sure the world never loses it&apos;s &quot;hugeness&quot;, whether through people, or experiences, or things learned.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://youtu.be/MEXJffHi_AQ&quot;,&quot;type&quot;:&quot;video&quot;,&quot;providerNameSlug&quot;:&quot;youtube&quot;,&quot;responsive&quot;:true,&quot;className&quot;:&quot;wp-embed-aspect-16-9 wp-has-aspect-ratio&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://youtu.be/MEXJffHi_AQ&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Being And Doing</title><link>https://dillieo.me/posts/growth/2021-10-12-being-and-doing/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2021-10-12-being-and-doing/</guid><description>Being And Doing</description><pubDate>Tue, 12 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;As I continue to enjoy my time relaxing, recharging, and rebooting during my sabbatical, I came across some wise words by a wizard named Ged about keeping balance in our life...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:7162,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:quote --&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Try to choose carefully, Arren, when the great choices must be made. When I was young, I had to choose between the life of being and the life of doing. And I leapt at the latter like a trout to a fly. But each deed you do, each act, binds you to itself and to its consequences, and makes you act again and yet again. Then very seldom do you come upon a space, a time like this, between act and act, when you may stop and simply be. Or wonder who, after all, you are.&lt;/p&gt;
&lt;p&gt;The Archmage Ged, from The Farthest Shore by Ursula K. Le Guin&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!-- /wp:quote --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Only a couple of weeks in so far, I&apos;ve found an immense relief in just being. Time with family, time running, time enjoying a slower pace, it has refreshed my soul like no other. It also helps clear my mind for acts yet to be done, decisions that will come, and the continued course of life, wherever the good Lord will guide it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;That I have waited so long to give myself these gaps between acts seems rather baffling. It is something I will make sure does not take this long to occur again.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Relax Recharge Reboot</title><link>https://dillieo.me/posts/development/2021-10-01-relax-recharge-reboot/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2021-10-01-relax-recharge-reboot/</guid><description>Relax Recharge Reboot</description><pubDate>Fri, 01 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Today I mark off an item in my bucket list: I&apos;m taking a one month sabbatical! This caps 10 years working at Fresh Consulting and also making it through a particularly rough year. I have three simple goals for this: relax, recharge, and reboot.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:7154,&quot;sizeSlug&quot;:&quot;full&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by Stefan Stefancik on &lt;a href=&quot;https://www.pexels.com/photo/man-sitting-on-the-mountain-edge-91224/&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Relax&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It seems like for the longest time the day to day of work has been a sprint. A really hard sprint. Check in, reply to email, reply to slack, update a quote, meetings, meetings, meetings, meetings, review a little code, give a little advice, meetings, email, slack, email, slack, meetings, make list of things to do tomorrow that didn&apos;t finish today, stop. Then repeat. Wow, I got tired just typing that all out!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;This constant sprint gets exhausting. While I&apos;m fortunate to enforce a non-50 hour a week schedule, I&apos;m literally back to back in things with no time for breaks in between. The mental exhaustion is real, and it begins to trickle out into home life because the stress begins to wear you down. It is time to breathe, it is time to move slower. It&apos;s time to...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Recharge&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;All of that is going away. Slack has been uninstalled. Work email account has been removed from the phone. Travel with family will start soon. Sleeping in will commence. Books will be read. Runs will be had. Yard work will be enjoyed. Coding will maybe be done. I&apos;ll admit that my &lt;a href=&quot;https://www.prayerodyssey.com&quot;&gt;hobby project&lt;/a&gt; needs some work (and an iOS build dang it), and my python skills need some leveling, but if it doesn&apos;t happen, no sweat! But most importantly, it is time to...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Reboot&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The current operating mode for life is not going well. If one were to leverage the analogy that each decade of your life is a version of software, then the 4.2 and 4.3 versions had some algorithms that resulted in maxed out CPU and RAM usage, which is not beneficial to the long term health of the system. Sometimes the best way to do things is to reboot the system, since all the tasks in the queue simply get flushed out and you have capacity in which to start over.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;...and start over I will! I&apos;ll be more protective of my hour by hour time. I&apos;ll provide space to step back, analyze, evaluate, and create (thank you &lt;a href=&quot;https://www.linkedin.com/in/elladorband/&quot;&gt;Ella&lt;/a&gt; and &lt;a href=&quot;https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/?utm_source=pocket_mylist&quot;&gt;Bloom&apos;s Taxonomy&lt;/a&gt;!). I&apos;ll get those runs back into my calendar and actually stick to them! Balancing this will allow me to continue to work smarter, not harder, and most importantly, bring back some much needed peace and balance.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What things do you do to relax, recharge, and reboot? I&apos;m looking for all the advice I can find!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Know Your User Elvis Bean Hedy</title><link>https://dillieo.me/posts/development/2021-06-01-know-your-user-elvis-bean-hedy/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2021-06-01-know-your-user-elvis-bean-hedy/</guid><description>Know Your User Elvis Bean Hedy</description><pubDate>Tue, 01 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;While working on Project Moab, we encountered a really interesting, and nuanced problem that led us to expand our thinking and ultimately guide how multiple parts of the system operated. It also gave us a fun tool that I&apos;m applying to other projects as well: Elvis, Bean, and Hedy.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:7124,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://open.spotify.com/episode/0eli2DI5MQMiUCOHAsIG6w?si=e5apdFkxTVCNXECmXjCi6w&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;providerNameSlug&quot;:&quot;spotify&quot;,&quot;responsive&quot;:true,&quot;className&quot;:&quot;wp-embed-aspect-21-9 wp-has-aspect-ratio&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/episode/0eli2DI5MQMiUCOHAsIG6w?si=e5apdFkxTVCNXECmXjCi6w&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;The Challenge&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The challenge at hand was how we were going to allow users to upload their custom brain to the bot to test. That in turn raised even more questions about how the user was going to interact with the platform as a whole. We had a small LCD display, capable of basic text input, with two buttons and a small joystick controller for navigation. All of it is running on a Raspberry Pi, which gives us a lot of flexibility for providing dynamic updates. How were we going to let the user &quot;hack&quot; on the system?&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;A more important question arose from this: Who are we building this for in the first place?&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The quick answer is &quot;everybody&quot;, but the complexities and the timeline of the release made this impractical. We needed to identify what kind of user would be using this platform so we could setup our processes and interfaces accordingly. It&apos;s okay to be opinionated at times. In talking through these processes and interfaces, we came up with three fun user types to guide us through this process.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Elvis&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Our Elvis type has little to know technical knowledge. They want to come in, have some fun with the bot, grok some of the core concepts, and move on to the next thing. Supporting Elvis would require heavy documentation, potentially some how to videos. We would also want to provide a web interface or a well designed command line tool to allow Elvis to update things. This would reduce the complexity of the back end, since the infrastructure would be setup for one or two specific paths to execute.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Bean&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Did you know that the actor who plays Mr. Bean (Rowan Atkinson) has a masters degree in Electrical Engineering?! If Mr. Bean were to work with the system, aside from the potential mayhem, he would be quite familiar with the notion of secure copying a file over from another location. Some documentation would be nice, but detailed documentation wouldn&apos;t be necessary. Mr. Bean would likely be a light hacker as well, so having some powerful scripts or a configuration file to tweak things and see the result would be great. We would still need to put a few guard rails in place to prevent Mr. Bean from &quot;bricking&quot; their bot, such as making it difficult to update the firmware.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Hedy&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;More than just a famous actress, Hedy Lamarr co-invented an early version of frequency-hopping spread spectrum communication, amongst other things. For someone like Hedy, with a deeper knowledge and a knack for tinkering and inventing, she would want full access to the system. She would most likely know several ways to transfer a brain to the bot and while documentation would be nice, specifications (the power limits of the servos), access to the source code, and other &quot;low level&quot; features would be ideal. The greater challenge in this system would be in making sure it is &quot;open&quot; and structured enough to allow Hedy to do whatever she wants.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;The Verdict&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;For our initial release, we decided to target the Bean type user. We tried to support the Elvis users of the world by allowing them to attach a thumb drive to the bot an have the custom brain auto-updated, but there were too many security/process complications to smooth out. We also were a little hesitant to allow the Hedy users to &quot;brick&quot; their bot by experimenting with firmware updates, given the support needs it would raise.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;More importantly though, we decided that the Bean users were the perfect fit for this platform. We wanted to introduce hardware engineering types to the power of reinforcement learning. On the flip side, we wanted provide a simple use case with reinforcement learning that has an impact on an actual thing, not just simulators.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In the end it also helped shape our mindset for software infrastructure and process in light of the targeted user. I&apos;ve started to ask this question when I start other projects. Our UX people call these &quot;personas&quot; and while it always made sense from a user interface type perspective, it never really thought about it affecting the entire stack of a system until now, and I&apos;m all the better for it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>20 Years Of Code</title><link>https://dillieo.me/posts/development/2021-05-18-20-years-of-code/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2021-05-18-20-years-of-code/</guid><description>20 Years Of Code</description><pubDate>Tue, 18 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Sometime around now, some 20 years back, I had my first gig as a &quot;professional&quot; coder. A friend of mine put me in contact with somebody who wanted to allow those that had coding certifications (like a Microsoft MVP) to build a basic profile, upload the all important &quot;badge&quot; image they received, and have a nice looking single page &quot;resume&quot; to share and connect. Maybe I built the first LinkedIn, but I won&apos;t necessarily claim that &lt;em&gt;[:: smiles::]&lt;/em&gt;. However, I did learn the most important lesson that sticks with me today. It has also been a wild ride in software...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:7103,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by Markus Spiske on &lt;a href=&quot;https://www.pexels.com/photo/matrix-background-1089438/&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://open.spotify.com/episode/51JZHJfmkkWHPtd3ln0iqL?si=9d16bfb952984aa2&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;providerNameSlug&quot;:&quot;spotify&quot;,&quot;responsive&quot;:true,&quot;className&quot;:&quot;wp-embed-aspect-21-9 wp-has-aspect-ratio&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/episode/51JZHJfmkkWHPtd3ln0iqL?si=9d16bfb952984aa2&lt;/p&gt;
&lt;p&gt;Listen to this post as a podcast!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In reflection, it&apos;s hard to think about where to begin. Probably the most poignant thing that pokes at me daily is that we&apos;re still learning how to build software and what to use to build it. I like to joke &lt;em&gt;[:: or am I::]&lt;/em&gt; that by the time you&apos;ve gotten to this point in reading, two new JavaScript frameworks have just come out, both claiming to be the new paradigm in how to build things. The thing it reminds me most of (for any young budding programmers out there) is that the &quot;semantic&quot;s of coding (algorithms, data structures, processing, etc.) are the more fundamental aspects of coding that won&apos;t change. The &quot;syntax&quot; of coding (the language or framework used) is constantly in flux, but easier to adapt to once you know the &quot;semantics&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;When I first started coding, Web 2.0 hadn&apos;t even arrived yet. HTML and table layouts were the lay of the land. There was this thing called WAP which was supposed to give you web pages or content on your mobile phone &lt;em&gt;[:: supposed is the operative word here::]&lt;/em&gt;. I wrote some pretty sweet Perl scripts to handle form processing and image uploads in the cgi-bin of that first project. Heck, JavaScript was still a toddler and a beast to work with, but it was a heck of a lot better than Java Applets if you ask me. &lt;em&gt;[:: ugh, that Java...::]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s interesting to see how the &quot;fat client / thin client&quot; web page/app cycle continues. Early web forced a thin client, since you couldn&apos;t use JavaScript to do much and you needed the server processing to tell you what to do next. Then when JavaScript finally started getting decent, you could make the pages more interactive and rely less on the back end. Maybe this was the cause for the &quot;cram everything into a page with minimal spacing and 10 point Arial font: and it was a wild ride. The clients got fat because we could do more and bandwidth was still slow. I wrote an entire bible app with chapter navigation and verse searching (that preserved the verse&apos;s context by showing the entire passage) thanks to this.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Then AJAX came and we got thin again. Maybe you could consider the client fat still, but with AJAX, you could make a ton of small queries to the server to get what you needed. Your logic was reduced and early AJAX involved injected a huge blob of HTML rendered by the server into a div block you had earmarked for it. Things became nimble again and Google began to take over the world with suggested words as you type.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;AJAX and browser wars made the web ugly for devs. You had this awesome way to prevent a full page post back / render, but without standards, each browser decided to implement things differently enough. Except for Internet Explorer, they decided to do their own gig altogether. Now you had browser sniffing scripts and 3 to 4 different versions of some of your code depending on what you wanted to do. CSS was growing in popularity for making things look pretty and each browser had their own way of handling that too &lt;em&gt;[:: shakes angry fist::]&lt;/em&gt;. Then jQuery and Bootstrap came to the rescue by doing all that for you! Our thin clients could reign supreme by not having to worry about browser specifics. That also enabled clients to get fat again.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;jQuery allowed the web to get more sophisticated with its easy DOM manipulation, which led to more functionality getting packed in to your average page. This increase in data manipulation, partial results, animations, and more led the way to the modern single page application era we&apos;re in now thanks to React, Angular, and a growing VueJS. All your backend needed to do now was be a glorified database, thanks to the JSON format &lt;em&gt;[:: you can kick your DBAs to the curve too if you use GraphQL::]&lt;/em&gt;, with a little bit of rules enforcement. The prevalence of broadband made the amount of JS code the user downloaded largely irrelevant, especially since it was loaded (in theory) only once by the user. Fat clients will rule the day!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;But maybe there is a shift happening again &lt;em&gt;[:: are you still surprised?::]&lt;/em&gt; There have been enough concern with heavy rendering and SEO that React has a server side rendering option for components. Angular supports this too. Additionally, if your backend is nothing but a data store, you can work your away around some of the HTML shenanigans to show that admin button if you haven&apos;t done things right and nothing is protecting you on the backend. The rise of IoT and wearable with limited front end power may be pushing things back to a thin client again. At the same time, web assembly is looking to double down of the fat client by letting you use your favorite backend language (C#, Node Rust) to build even more functional apps in the browser. &lt;em&gt;[:: wait, did you just take the cycle within 1 paragraph?! -- yes, yes I did::]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Alas, I haven&apos;t even gotten into database technologies, mobile, IoT, cloud, containerization, ML/AI, and a plethora of other nuances of code that still fascinates me and gets me excited for the next day. Oh yeah, and bitcoin... &lt;em&gt;[:: smiles::]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Oh, and that most important lesson I learned way back when? Communication is key. Never stop doing it and never stop refining it. I was fired from that first gig because after delivering the 1.0 (agile was still growing) I went on vacation and never bothered to tell my client. He wasn&apos;t too happy given that he was ready to build more features. While one may be able to code in a vacuum, eventually that code will speak to others, and documentation, or collaboration, or hand-offs will require a conversation with somebody else and doing that consistently will lead to the best results. Learn to balance &quot;how much&quot; to communicate with your peers, mentors, advisors, or clients, but never stop doing it and never stop refining it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;So here&apos;s to 20 years of a wild ride in code and another 20 years more of it if my fingers will allow me. Then again, voice recognition and rapid application platforms will probably reduce that need, so I&apos;ll be safe. &lt;em&gt;[:: smiles::]&lt;/em&gt; Let&apos;s see what comes next!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2020</title><link>https://dillieo.me/posts/life/2020-11-26-thankful-tree-2020/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2020-11-26-thankful-tree-2020/</guid><description>thankful tree</description><pubDate>Thu, 26 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I realized that I haven&apos;t been posting entries in here for a few years now, but that doesn&apos;t mean my gratitude and thankfulness as dwindled at all. If anything, I believe it has increased. In lieu of having a thankful tree, I&apos;ll use a tree I am thankful for and move forward. Three things I&apos;m especially thankful this year are...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:7031,&quot;width&quot;:576,&quot;height&quot;:768,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;This is my very own tree (left) and tree to be (center)...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Gaming&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;...particularly of the Minecraft and Dungeons and Dragons persuasion. These two games have really given the family something to connect over, plan for, even without considering all of the self-quarantining we&apos;ve been doing due to COVID-19 (a year for the books). I have also seen my girls grow in their own unique gifts and personalities as they make custom characters, navigate tricky situations (both online and in print). Plus they&apos;re teaching me things, which is amazing to experience!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Health&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Admittedly this one may sound a bit odd. My girls continue to struggle with Tourettes and the OCD it brought. We&apos;re still finding the right balance of therapy and meds. My wife continues to find her own balance with her thyroid meds and deals with some ugly swings of fatigue when things get out of balance. And yet, we are all here together to celebrate today. Nobody is isolated in a hospital, nobody is completely debilitated, and that is huge because we can be together. After losing one family member this year and having a few friends get really sick, our continued health is especially relevant this year.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Our Home&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I won&apos;t bore you with the full details again, you can read the recap of our &lt;a href=&quot;/sanctuary&quot;&gt;home/sanctuary here&lt;/a&gt;. Last night, as we were cleaning up some mess from pie making, while also cooking dinner and running around in a Minecraft server the family likes to hang out in, things finally exited the realm of surreal and there was a long exhale of peace, contentment, and thankfulness. Our family has a home, a space truly ours to spend the upcoming holidays, and my thankfulness to God knows no bounds.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What are you thankful for this year? It is more important than to find even the small things in your life and name them as we approach the grey of winter and cold it brings. I&apos;d like to hear them!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Sanctuary</title><link>https://dillieo.me/posts/growth/2020-11-13-sanctuary/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2020-11-13-sanctuary/</guid><description>Sanctuary</description><pubDate>Fri, 13 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;...when we last left our adventurers.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Three years is an incredibly short and long period of time all at once. A lot of the struggles and challenges we faced during our &lt;a href=&quot;/arrival&quot;&gt;arrival&lt;/a&gt; here in Washington took new and more forms. Yet, we have finally found our place of sanctuary we have been seeking for so long.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:7012,&quot;width&quot;:384,&quot;height&quot;:512,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;media&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;I could drink coffee here forever...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The last time I wrote about one of these major chapter changes I focused a lot on the struggles we went through and it is tempting to walk through all of the continued struggles we had: several approaches to help with Haylee&apos;s tourettes, Rylee also being confirmed with tourettes, the continued balance of Jen&apos;s thyroid levels that often left her barely functioning at times. Then there were the financial struggles and adjustments of a move to a place that where even with our research and planning, was a lot pricier than anticipated. The several false starts of starting to do home shopping only to realize the timing and resources were not ready.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;This time, I think it is more important to outline the victories, the personal growth, and the divine intervention that came along the way. I had learned that God loves us no matter what, and no level of &quot;crafting&quot; of my prayers could change that. It was a little disingenuous as well. I had come to rely upon the daily bread God provided, but there was still a lot of &quot;whys&quot; running around in my head and some bitterness. My &quot;head&quot; knew that God continued to look out for me and my family, but my &quot;heart&quot; was questioning it. This created a struggle because I considered it a lack of faith to have such a thought in the first place. It was around this time the men&apos;s group I&apos;ve been meeting with started reading Job, ironically (or fortuitously) enough. And here it is... Job, devout man of God, is tearing his clothes in agony and later on calling God on the carpet for such injustices against him. It was healthy and natural. Interestingly enough we don&apos;t get the &quot;why&quot; answer either at the end of the book, and that just is. So it was okay for me to question, it was okay for me to wrestle, and it was _healthy _for me to wrestle as well. Jacob did so too.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;So progress stood still for a while longer, and the struggles grew, but I knew the struggle was healthy because I was still connecting to the God of the universe and growing deeper in my relationship with Him through that struggle.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Things began to change come the beginning of the year. We made one of those &quot;BHAPS&quot;: big hairy audacious prayers. We would be in a house by the end of the year. We felt a leading by the spirit and made some heavy commitments. The finances looked like they would line up, so we would cut back on many of the &quot;luxuries&quot; and put the money away. Some months we weren&apos;t able to put as much away due to life, and some months we put a little more. Though we were still getting a little behind the target.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Around this time a friend in my men&apos;s group shared an amazing story. He&apos;s a manager, pretty high up, at a large company where they were going through another round of layoffs. He was the person that had to collaborate to make some of the hard choices and then communicate that to those people. He had to let 5 people go, had the list, but said a prayer that God would intervene and waited for the next day. The following day, two people were spared from being fired. A position had opened up out of nowhere for a person to transfer to. Another volunteered an open slot they had. These things came completely out of the blue and was a testament to God&apos;s provision.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;This encouraged and inspired me to continue to strive towards this move. Things began happening. Our loan per-qualified us for more than we were budgeting and we had a very strong credit rating. A family member offered us a considerable gift if needed to help us get through the down payment. Although our original destination was not feasible, we were encouraged by the places we were seeing in an area that put us closer to Jen&apos;s family, and pulled us out of King County where cost of living went down.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;We put an offer on a house! It was a great place, on a third of an acre with an outside, fully remodeled shop that could be used as an office and a guest house. There was no garage, but we could purchase a nice shed for the extra things and leverage the &quot;chicken coop&quot; as well. A few extra small tweaks were needed but it looked great. The kids were excited for this place. Our offer was accepted! The home inspection was a great one.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Then, three weeks into the process, the appraisal fell through. It came back significantly lower than our offer. There was an issue about the quality rating of the house and also a conflict about the square footage of the house. There was a lot of hubbub about the quality rating. Our realtor attempted to have us change our loan type so we could still get the house, which gave us concern. We pushed harder and found out that the appraiser was right and the square footage was smaller than our town home. We walked. We let our realtor go. We were heart broken and in anguish.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;We were a week away from the deadline in which we needed a home. With escrow closing, moving schedules, and a deadline for our lease, we needed something or else we would be paying extra for a month to month lease. This was admittedly a very tight and tough spot. I was reminded of what God did for my friend and the leading of the spirit that we had, so we pressed forward, giving all worries over to Him.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Monday we let our realtor go.&lt;br /&gt;
Tuesday we had a new realtor.&lt;br /&gt;
Wednesday we had a list of houses. Our new realtor highly recommended we go see them since they could move fast.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Thursday morning we had the family in the car by 7:30 AM driving 30/40 minutes away, no small feat. The first house we saw had sooo much charm. The online photos didn&apos;t do it justice (in my mind at least 8^D). Our other visits didn&apos;t pan out. We made an offer by 5 in the evening.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Friday morning there was a text message to go check our email. The seller accepted our offer at 11PM Thursday night! On top of this, the seller sent a letter back to us (we had sent a small one introducing our family and love of the home) indicating how she had worked with special needs kids for many years, the neighborhood raised kids with special needs and they were very accepting. She was so excited to sell the house to us! The realtor had never seen a letter come back from a seller in their 34 years of experience.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;We have a garage that we can park both vehicles in, including the boxes that are there now. Our girls have their own room which space for them to spread out with their craftiness and dreams. We have a downstairs with its own separate door so that when family stays over their can have their own private suite. The yard is even bigger, fenced in, and lush with trees and plants, including a yellow rose bush, the favorite of Jen&apos;s grandmother. There&apos;s an &quot;herbie shack&quot; in the back we will finish off to make a great outdoor office for Jen in spring. There&apos;s no more master bedroom office for me. The dogs have room to run amok. We&apos;re even closer to Jen&apos;s folks than the other place was. All the appliances are here. We have not one, but two wood burning fireplace/wood stoves. It is all within a budget we can maintain month to month.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Does it get any crazier than that?! Our doubts and fears as to why the previous home fell through so late in the process was answered with &quot;watch this...&quot; Everything is so much better than we could have planned!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It is admittedly still a bit surreal, even though we&apos;re arriving at 2 weeks here now. There are still boxes to unpack, a few bookshelves and desks to put together, but it is home. It is ours. It is our sanctuary to laugh, cry, and dance without concern. We pray that we can be a sanctuary for others that may come across our path in the days and years to come. I don&apos;t think I would have appreciated (and realized the blessings) all of this as much as I do if there was an &quot;instant&quot; move in. Maybe that appreciation was the point. I like to hug my house. 8^D&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The dreams I had finally came true, even if they were 3.5 years in the making...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Sticky Note Leadership On The Lighter Side</title><link>https://dillieo.me/posts/growth/2020-08-21-sticky-note-leadership-on-the-lighter-side/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2020-08-21-sticky-note-leadership-on-the-lighter-side/</guid><description>Sticky Note Leadership On The Lighter Side</description><pubDate>Fri, 21 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve been away from my office desk for a few months now, but when I was bringing stuff home, I made sure take a snapshot of the sticky notes I refer to for daily insight and inspiration. This one reminds me about not taking my work too seriously.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6991,&quot;sizeSlug&quot;:&quot;large&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;This quote comes from great guy, and previous colleague of mine, &lt;a href=&quot;https://www.linkedin.com/in/yanickduchesne/&quot;&gt;Yanick&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:quote --&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The essence of machine learning involves learning from errors. It&apos;s funny that machines are allowed to work this way and that&apos;s a taboo for humans.&lt;/p&gt;
&lt;p&gt;~ Yanick Duchesne&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!-- /wp:quote --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;That is a bit ironic right? Also humorous lies in the fact that the fundamental operating components that play into our machine learning (data sets, algorithms to process through) were also created by the &quot;infallible&quot; humans as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In the end it reminds me not too take my job/career/self too seriously. Sure I&apos;m going to strive to do my best for others and myself, but in the end there exists a mindset where the machines that we envision driving us around all by themselves are allowed to make mistakes and myself, with far less accuracy and speed of thought, cannot.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Do you have any quotes that remind you not to take things too seriously?&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Sticky Note Leadership Core Values</title><link>https://dillieo.me/posts/growth/2020-08-18-sticky-note-leadership-core-values/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2020-08-18-sticky-note-leadership-core-values/</guid><description>sticky note with core values</description><pubDate>Tue, 18 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve been away from my office desk for a few months now, but when I was bringing stuff home, I made sure take a snapshot of the sticky notes I refer to for daily insight and inspiration. This one reminds me what matters most in my day to day.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6980,&quot;sizeSlug&quot;:&quot;large&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Last year a group of us got together to read a few books about leadership, growth, and a few things in between. The book that stood out most to me was Brené Brown&apos;s &lt;em&gt;&lt;a href=&quot;https://www.amazon.com/Dare-Lead-Brave-Conversations-Hearts/dp/1785042149&quot;&gt;Dare to Lead&lt;/a&gt;&lt;/em&gt;. There have already been tons of great reviews, so I won&apos;t mention that here, just go buy a copy and thank me later.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;One of the big exercises in the book is to identify your two core values from a rather &lt;a href=&quot;https://daretolead.brenebrown.com/wp-content/uploads/2020/02/Values.pdf&quot;&gt;big list&lt;/a&gt;. These values are the things most important to you and influence your work and non-work life in profound and subtle ways. Better said...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:quote --&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When I facilitate this work in organizations, I always get this question: “Do you want me to identify my professional values or my personal values?” Here’s the rub: We have only one set of values. We don’t shift our values based on context. We are called to live in a way that is aligned with what we hold most important regardless of the setting or situation.&lt;/p&gt;
&lt;p&gt;Brené Brown - Dare to Lead&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!-- /wp:quote --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;After some filtering, testing, and struggling, I came to the two values I consider my core:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Community&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s probably because I&apos;m a &quot;&lt;a href=&quot;https://www.16personalities.com/profiles/91d78d2ade954&quot;&gt;Protagonist&lt;/a&gt;&quot; type, but making sure the team, or the company, or the DnD group is in good shape, and working together, is something I really enjoy. Some people say I have a talent for it too. But I think most importantly, I see what amazing things can happen when the &quot;Super Friends&quot; unite, when Dumbledore&apos;s Army assembles, when Voltron assembles. It&apos;s a beautiful thing. And the growth and camaraderie that is fashioned through that lasts far beyond a piece of software that&apos;s shipped. If we&apos;re working 8 hours a day with people (sometimes more), I want to make sure these are people we trust and respect, and that&apos;s something I want to help build.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Integrity&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;A wise elephant once opened statements with &quot;I meant what I said and I said what I meant.&quot; That&apos;s what I strive to provide. If it&apos;s responding to an email, or completing some code for a a project amidst other demands, I want to make sure people can trust my word. When I say that a conversation is going to be private, it will stay that way. When I tell people they should go take a lunch break,&lt;a href=&quot;/thoughts-on-leadership-what-you-permit-you-promote&quot;&gt; I make sure to take one myself&lt;/a&gt;. It is this integrity that I see helping whether the storms of rocky projects, or tough talks with clients, and everything else.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What are your core values that you take to the office and home with you day in and day out? I encourage you to &lt;a href=&quot;https://daretolead.brenebrown.com/wp-content/uploads/2020/02/Values.pdf&quot;&gt;look at the list&lt;/a&gt; and find your two. Let me know here. Don&apos;t forget to read the book!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Sticky Note Leadership Balancing Time</title><link>https://dillieo.me/posts/development/2020-08-13-sticky-note-leadership-balancing-time/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2020-08-13-sticky-note-leadership-balancing-time/</guid><description>sticky note</description><pubDate>Thu, 13 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve been away from my office desk for a few months now, but when I was bringing stuff home, I made sure take a snapshot of the sticky notes I refer to for daily insight and inspiration. This one reminds me daily about balancing my time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6972,&quot;sizeSlug&quot;:&quot;large&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Day in and day out I have a lot of meetings. On top of that, there are always one-off discussions I wind up having with people regarding projects, or processes, or teams. It can get exhausting very fast. The sticky note above (&lt;em&gt;thanks to my &lt;a href=&quot;https://www.linkedin.com/in/elladorband/&quot;&gt;Productivity Yoda&lt;/a&gt;&lt;/em&gt;) helps guide me through my day (and my week) in two important ways:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Making Time&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Left to the wide open ebb and flow of the day, I&apos;d never get my individual work done. If there&apos;s an opening in my calendar, somebody will most likely send me an invite. To solve for that, I make time to get it done. Go ahead, make an appointment with yourself to work on that proposal, finish that small feature, or anything else you need to complete. I even block out the first hour of my week (Monday: 8-9) to look it over and do most of my &quot;time making&quot;. Don&apos;t forget that you often need prep time or follow up time from big meetings, so make sure you have the space to do that.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Managing Time&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Do you really need to be in that meeting? It may be worth reaching out to the organizer to check. Don&apos;t feel obligated to attend meetings marked as &quot;optional&quot; if you have other important things to do. Can you have a &quot;working meeting&quot; where you&apos;re available to answer a question, but are focusing on other things in the meantime. That is a very legitimate thing to do and if your colleagues know in advance, they&apos;ll typically be comfortable with it. The main point is to get you to focus your time on where it matters most. The overlapping meetings becomes a nightmare for your focus. The emails/slacks for another project while being engaged in the current project meeting can be disrespectful and fragmenting. By managing your time better, everybody wins.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Hay List / Day List&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;...oh yeah, that! That refers to some &lt;a href=&quot;/how-i-hack-productivity-google-calendar-trello-zapier&quot;&gt;productive task hacking&lt;/a&gt; I&apos;ve done in the past.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What tools or tricks are you using to help make and manage time? I’d love to know about them!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Sticky Note Leadership Mentorship</title><link>https://dillieo.me/posts/development/2020-08-11-sticky-note-leadership-mentorship/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2020-08-11-sticky-note-leadership-mentorship/</guid><description>Sticky Note Leadership Mentorship</description><pubDate>Tue, 11 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been away from my office desk for a few months now, but when I was bringing stuff home, I made sure take a snapshot of the sticky notes I refer to for daily insight and inspiration. This one I take to heart regarding mentorship.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6960,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;ampLightbox&quot;:false} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Sadly I don&apos;t remember which book &lt;em&gt;or books&lt;/em&gt; they come from, but they are nonetheless valuable on their own.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:quote --&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mentoring has a long term focus with a spotlight on the person&apos;s career path and future success.&lt;/p&gt;
&lt;p&gt;~ Unknown at the moment&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!-- /wp:quote --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:quote --&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As a mentor, leverage your own position in your organization and your expertise to sponsor others and transfer your knowledge to them.&lt;/p&gt;
&lt;p&gt;~ Unknown at the moment&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!-- /wp:quote --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;For me, both of these quotes remind me that I need to &quot;flip the script&quot; as outlined in the books &lt;a href=&quot;https://www.amazon.com/Leadershift-Essential-Changes-Leader-Embrace/dp/0718098501/ref=sr_1_2?dchild=1&amp;amp;keywords=leadershift&amp;amp;qid=1597169900&amp;amp;sr=8-2&quot;&gt;&lt;em&gt;Leadershift&lt;/em&gt;&lt;/a&gt; and &lt;a href=&quot;https://www.amazon.com/Be-Boss-Everyone-Wants-Work/dp/1626566259/ref=sr_1_2?crid=2QDJTOFE7GM73&amp;amp;dchild=1&amp;amp;keywords=be+the+boss+everyone+wants+to+work+for&amp;amp;qid=1597169937&amp;amp;sprefix=be+the+boss+ever%2Caps%2C230&amp;amp;sr=8-2&quot;&gt;&lt;em&gt;Be the Boss Everyone wants to Work For&lt;/em&gt;&lt;/a&gt; I&apos;ve read this past year. They really help emphasize the concept of servant leadership and how to orient your approach in a way that is focused on the unique needs of each person you mentor.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What quotes or books have influenced your leadership and/or mentorship of others? I&apos;d love to read them!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Late Night Family Dnd</title><link>https://dillieo.me/posts/growth/2020-03-16-late-night-family-dnd/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2020-03-16-late-night-family-dnd/</guid><description>Late Night Family Dnd</description><pubDate>Mon, 16 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Jen: The drow points at you :: Rylee :: snaps his fingers, and you turn into a mist...&lt;/p&gt;
&lt;p&gt;Rylee: Noooooo! You killed my character!&lt;/p&gt;
&lt;p&gt;Jen: No, it is just a ghost. That can be fixed...&lt;/p&gt;
&lt;p&gt;Haylee: ...by magic!&lt;/p&gt;
&lt;p&gt;Rylee: But we don&apos;t have any flippin&apos; spells!&lt;/p&gt;
&lt;p&gt;:: chaos ensues ::&lt;/p&gt;
&lt;p&gt;Me: Fine then. :: rolls dice :: a 17. I do a backflip and yell out M-I-S-T. There. There&apos;s your flippin&apos; spells...&lt;/p&gt;
&lt;p&gt;Family: o_O&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Tshaped Goals Deeper And Wider</title><link>https://dillieo.me/posts/development/2020-01-09-tshaped-goals-deeper-and-wider/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2020-01-09-tshaped-goals-deeper-and-wider/</guid><description>Letter T</description><pubDate>Thu, 09 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;As I continue to mentor new and seasoned developers in their growth... Scratch that... As I continue to grow in my own career, one thing I&apos;ve learned to embrace is the idea of the &quot;generalized specialist&quot; or the T-Shaped developer.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:6906,&quot;sizeSlug&quot;:&quot;medium&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What exactly does a T-Shaped developer look like?&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;When I line up all the skills I have, there&apos;s a pretty broad spectrum there. I&apos;ve coded in C#, PHP, Java, Perl, Visual Basic, JavaScript, Python, and a few others. Similarly I&apos;ve worked with a wide array of technologies, libraries, and platforms like MySQL, Oracle, D3, Azure, AWS, WinForms, Nativescript, React, PWA, and so on.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;For most of these, I have a good general knowledge of the technology at hand. This is a good thing. It helps me keep abreast of new (or returning) paradigms in software development. I can also do a better job at evaluating the right tool/platform/framework for a new project since I can compare and contrast. Technology is changing at such a rapid pace. When I first started programming professionally, there was no Azure, PostGIS, Jenkins, and other things I work with now. Generalization is a good thing to have in this industry.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;By the same token, having a specialty is important as well. Some projects require a deeper knowledge of the platform that you are working in to be successful. Having a specialty allows you to mentor others, &lt;a href=&quot;/the-power-of-mentoring-for-others-and-you&quot;&gt;which indirectly will help yourself&lt;/a&gt;. Often when you have a deeper knowledge of a given technology, it will help inform a decision or find a solution in a different technology, since it is often a matter of &lt;a href=&quot;/syntax-vs-semantics-or-career-advice-for-aspiring-programmers&quot;&gt;semantics over syntax&lt;/a&gt;. Being a specialist can also set you up nicely for the &quot;big project&quot; since you are the &quot;go to&quot; person for the framework targeted for it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;For me,.Net is my specialty. I&apos;ve been using that as my primary framework for building apps for nearly 20 years now. It is what helped me land the job at the company I&apos;ve been at for almost 10 years, and I&apos;ve been able to build some really cool stuff with it. I&apos;ve also been able to mentor others at our company that are growing in.Net, and write a few blog posts along the way to provide insights to others.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;When you map out your skills an measure your experience with them, most likely you&apos;ll start to see that you&apos;re a &quot;generalized specialist&quot;. This may be called a &quot;specialized generalist&quot;, but I always seem to get this mixed up 8^D. When you measure your depth of knowledge in each technology/framework, most will be shallow (or wide), and one (or more) will be deep. There you find the T-shape that maps out your skills.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:6911,&quot;sizeSlug&quot;:&quot;medium&quot;} --&amp;gt;&lt;img src=&quot;@assets/images/posts/2020-01-t-shaped-individual.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;As you think about goals for this coming year, I would encourage you do make two goals:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Grow Wide&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Find something new to learn, to widen your experience. This may be a new tool, a new platform, a new framework, maybe even a new skill. For myself, I want to learn Q#. I&apos;ve been very interested in the quantum computing realm for a while now and this will expose me to that.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Grow Deep&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Find something new to learn that will make you even more experienced in your skills. Maybe that&apos;s mastering Entity Framework Core or going through a book of Advanced C# techniques. For myself, I&apos;m still a little undecided. I believe I would be best suited to go deeper in my leadership and mentoring skills, but a practical way to do that still eludes me. Nevertheless, I&apos;ll figure out something.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Hopefully this gives you some insight and inspiration into how to grow personally and professionally. Over time you&apos;ll find that your T shape looks a little off, because you&apos;ll have several things you&apos;ve gone deep in. Then you get to repeat!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>A Decade Of Photos</title><link>https://dillieo.me/posts/growth/2019-12-30-a-decade-of-photos/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2019-12-30-a-decade-of-photos/</guid><description>A Decade Of Photos</description><pubDate>Mon, 30 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ten years ago my kids were just starting to expire the world and go on hikes. Ten years ago Instagram was just getting off the ground, with no Android support. Sunsets and clouds still caught my imagination. A new job opened up some amazing opportunities to grow. My God, my family, and my desire to see the beauty in the small things in life remained constant. I&apos;m not sure if I could adequately capture a decade of my favorite photos, but here&apos;s a glimpse and excitement about the decade to come…&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Ten years ago my kids were just starting to expire the world and go on hikes. Ten years ago Instagram was just getting off the ground, with no Android support. Sunsets and clouds still caught my imagination. A new job opened up some amazing opportunities to grow. My God, my family, and my desire to see the beauty in the small things in life remained constant. I&apos;m not sure if I could adequately capture a decade of my favorite photos, but here&apos;s a glimpse and excitement about the decade to come…&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Favorite Photos Of 2019</title><link>https://dillieo.me/posts/growth/2019-12-27-favorite-photos-of-2019/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2019-12-27-favorite-photos-of-2019/</guid><description>Favorite Photos Of 2019</description><pubDate>Fri, 27 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s amazing that another year has gone by. I try to keep dibs on all the small moments of life, and picking my favorite photos from over the years is hard. Nevertheless, here are my favorites of the year, in no particular order…&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Captions of the photos above...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The fall colors around here are so bold and vivid! I can&apos;t get enough!&lt;/li&gt;
&lt;li&gt;This woman! I think that captions it well enough…&lt;/li&gt;
&lt;li&gt;Our first con at NerdyFaire, complete with superhero lineup.&lt;/li&gt;
&lt;li&gt;The window structure at the Seattle Library is mesmerizing!&lt;/li&gt;
&lt;li&gt;Daddy and Daughter&lt;/li&gt;
&lt;li&gt;The intimate level of wood grain on a boat I made by hand.&lt;/li&gt;
&lt;li&gt;The jagged yet beautiful trail I fought uphill with during RAGNAR.&lt;/li&gt;
&lt;li&gt;The night sky from Crystal Mountain. City glow ignites the clouds and the vivid stars above. The photo does not do this moment justice.&lt;/li&gt;
&lt;li&gt;My precious family.&lt;/li&gt;
&lt;li&gt;Piper ponders Christmas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&apos;s to a new decade of more moments filed under &quot;L&quot; for life...&lt;/p&gt;
&lt;p&gt;If you&apos;re interested, you can track me on &lt;a href=&quot;https://www.instagram.com/dillieo/&quot;&gt;Instagram&lt;/a&gt; or on my photo blog &lt;a href=&quot;https://picadillieo.wordpress.com&quot;&gt;Pic-a-Dillie-O&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thoughts On Leadership What You Permit You Promote</title><link>https://dillieo.me/posts/development/2019-12-26-thoughts-on-leadership-what-you-permit-you-promote/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-12-26-thoughts-on-leadership-what-you-permit-you-promote/</guid><description>Thoughts On Leadership What You Permit You Promote</description><pubDate>Thu, 26 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;As I&apos;ve continued to grow as a leader and mentor over this past year, there&apos;s one phrase that surfaced over and over that has taken some effort to comprehend the impact of: &quot;What you permit, you promote...&quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6834,&quot;sizeSlug&quot;:&quot;large&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by &lt;a href=&quot;https://unsplash.com/@priscilladupreez?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Priscilla Du Preez&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/eating?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://open.spotify.com/episode/4cHAhs3H95E3enEbCuYdpX?si=zHL-l5qCSry_7sB_ahHMag\u0026amp;dl_branch=1&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;providerNameSlug&quot;:&quot;spotify&quot;,&quot;responsive&quot;:true,&quot;className&quot;:&quot;wp-embed-aspect-21-9 wp-has-aspect-ratio&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/episode/4cHAhs3H95E3enEbCuYdpX?si=zHL-l5qCSry_7sB_ahHMag&amp;amp;dl_branch=1&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Earlier this year I finished the book &quot;Be the Boss Everyone Wants to Work For&quot;, by William Gentry and one thing that really stuck out in that book (among a lot of things) is that people are always taking a peek at you, looking for how you do things looking for queues on the cultural pace of things at the office, which can have both good and bad consequences.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s a simple one, that I&apos;ve found myself guilty of.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Are you encouraging your colleagues that they should have a good work life balance? Are you helping them take breaks during the day to refresh the mind/body and let and their problems trickle into the sub-conscious so they don&apos;t burn out?&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Then why are YOU the person not taking a lunch break?&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Yup... me... guilty.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The profound thing is that by permitting this kind of non-stop ethic in myself, I&apos;m promoting it as the standard of doing things around the office. Being in the position that I am, that can have some pretty big ramifications.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;To be fair, there are days that meetings are crammed together, or a deadline has been shortened, and those are the days that you do need to buckle down and get things done. If possible I&apos;ll be right there with you to rubber duck or sling a little code if I can. But deep down I think most days are not like this, if we take a moment to step back from our situation, and having that balance is far more important.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Moving into next year, I&apos;m doubling down on my lunching efforts and also doubling down on my vacationing. I took far too little vacation this past year and telling others to do so feels a bit like lip service. I&apos;ll be blocking out my vacation times in advance on my calendar to make sure they happen. You should do likewise, even if they resort to a handful of 3 or 4 day weekends. The breaks are worth it, and you send a message that this balance is important.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What other leadership tips/nuggets do you have? I&apos;m trying to gather as many as I can!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Victory</title><link>https://dillieo.me/posts/growth/2019-08-28-victory/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2019-08-28-victory/</guid><description>Victory</description><pubDate>Wed, 28 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Some things take much longer than planned to come to fruition, but when they do, the joy tastes that much sweeter.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:6814,&quot;sizeSlug&quot;:&quot;large&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;The view from the top...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;A little over two years back, I hit probably the lowest point in my running career. I was tackling an immense challenge: the RAGNAR Trail Rainier Yellow Loop - 5 miles of nearly continuous uphill running on a trail that was treacherous at times covering a 2500 foot elevation climb. I lovingly refer to this as &quot;aggressive trail hiking&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I didn&apos;t bother to bring anything to hydrate with. I might have had a small water bottle but that was quickly consumed. I had nothing to keep my nutrition levels up during this run. I started out with a pace that was more reminiscent of my road pace than anything.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It utterly destroyed me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:core-embed/instagram {&quot;url&quot;:&quot;https://www.instagram.com/p/BYCOaAOBrJL/&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;providerNameSlug&quot;:&quot;&quot;,&quot;className&quot;:&quot;&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://www.instagram.com/p/BYCOaAOBrJL/&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:core-embed/instagram --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It also gave me a mission...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I wanted to come back and conquer this trail, and be a better runner. I used some birthday money and sold a couple things so I could by a proper hydration pack. I talked to some friends and family who do a lot of triathlon and other events. I did a lot of reading. I developed a better nutrition routine for before/during/after my runs. I learned to listen to my body even more while running and made sure not to start out at my college race pace. I continued to put in the miles and the hills.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Two years later I was brought back to the hill that had defeated me, with renewed determination. There was a little bit of fear. I did not want to revisit that level of pain and draining, but I wanted to push past it too.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I ran. I saw the points approaching where I had previously met obstacles and I pushed through them. I felt my body wanting to push hard but I reminded it we have further to go and settled back in to pace. I kept hydrated, I had my Gu shots at the proper times. I never gave up.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I UTTERLY CONQUERED THIS.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:6816,&quot;sizeSlug&quot;:&quot;large&quot;} --&amp;gt;&lt;img src=&quot;@assets/images/posts/2019-08-img_20190823_150730.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nearly to the top. I had to document this.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The top never felt more sweet and glorious. I was exhausted, but I was triumphant. I felt like a wall had been broken down and new horizons had opened up. It was gruelingly glorious.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I KNOCKED 24 MINUTES OFF MY TIME&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I leave this as a milestone to myself and a note of encouragement to anybody who stumbles across this. Keep fighting. Keep training. It may take 2 years (or more!) to reach that goal but it IS achievable in small steps. When you get there, when you break through, it will all be worth it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>How I Hack Productivity Google Calendar Trello Zapier</title><link>https://dillieo.me/posts/development/2019-05-29-how-i-hack-productivity-google-calendar-trello-zapier/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-05-29-how-i-hack-productivity-google-calendar-trello-zapier/</guid><description>Task Tools</description><pubDate>Wed, 29 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;These days, I practically live and die by my calendar. I have a ton of meetings for projects, interviews, mentorship, and even a little coding. Being able to manage this and still feel productive has been a struggle as of late. Fortunately, I have my own &lt;a href=&quot;https://www.linkedin.com/in/elladorband/&quot;&gt;Productivity Yoda&lt;/a&gt; here at the office! She&apos;s been giving me a few guidelines and tricks and I have been running from there. I still have to work on the &quot;making time&quot; aspect of my work, but I have gotten a great handle on &quot;managing time&quot; aspect of my work and here&apos;s how I&apos;m doing it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6807} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Google Calendar&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;There&apos;s no fancy magic here. It&apos;s just Google Calendar. However, I do make sure that it is up to date frequently so that people can schedule meetings accordingly. I use a Google widget on my phone to have my calendar visible at a glance to find out where I have to go next. We also have our conference rooms added into our Google Suite so they can be managed and viewed on the fly through &lt;a href=&quot;https://getjoan.com&quot;&gt;Joan&lt;/a&gt;, but I also keep a day view with all of the rooms available at t glance for a quick room scheduling. You&apos;d be amazed at how crazy it can get shuffling things around.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6808} --&amp;gt;&lt;img src=&quot;@assets/images/posts/2019-05-calendarview.png&quot; alt=&quot;Calendar View&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Trello&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m back on Trello! I&apos;ve had a long term off and on relationship with Trello, particularly during my &lt;a href=&quot;/introducing-trellodoro-trello-pomodoro-personal-kanban-bliss&quot;&gt;Kanban pursuits&lt;/a&gt;. However, things have changed up a little bit now. Thanks to some help from my Productivity Yoda, I know keep 5 lists in a task board that I work with daily:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:list --&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hay List: The big haystack of things that I have to do. I put things in as they come up, they aren&apos;t always due immediately, but I need a place to keep it all.&lt;/li&gt;
&lt;li&gt;Day List: This is what I&apos;m planning on doing for today. Note the word &quot;planning&quot; here 8^D&lt;/li&gt;
&lt;li&gt;Doing: Self explanatory, I hope. I do have to be mindful that I&apos;m not doing too many things at once, and this helps me become more focused on a single task.&lt;/li&gt;
&lt;li&gt;Waiting on Something: Sometimes I need feedback from somebody or I need to wait for a process to finish. That may take a day or two, so I need it to be mindful without interrupting my workflow. I&apos;ll leave a comment and put it there.&lt;/li&gt;
&lt;li&gt;Done: The best column! I&apos;m very much a &quot;need to check things off&quot; type person and so seeing all these things get done is encouraging, particularly on long days where technically only one thing gets done. I clear this out at the start of every week.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;!-- /wp:list --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I started using just these two things with a lot of success. However, I was still having problems with making/managing. To be specific, I would have days chock full of meetings and 4 items in my Day List and maybe one of those would get completed. This was frustrating and difficult to manage. After a bit of thinking, I realized that in a way, my meetings were tasks too and having those meetings needed to be accounted for just as much as my other work. The question was, how to be able to track both easier...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Zapier&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;If you haven&apos;t heard of it, &lt;a href=&quot;https://zapier.com&quot;&gt;Zapier&lt;/a&gt; is a cloud task automation service for your web apps, thankfully in large part due to the fact that Web APIs practically rule the world at this point. Want an e-mail when the weather forecast calls for rain? There&apos;s a zap you can build for that. Want to cross post your latest Instagram on your WordPress photo blog? There&apos;s a zap you can build for that. The possibilities are nearly endless.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I wound up building a Zap connecting my Google Calendar with Trello. It was really easy. I connected Google Calendar, and then I created a new trigger which was the start of an event. However, I &quot;hacked&quot; it a little and set it to trigger 10 hours before the event starts. I then connected to Trello and added an action. The action is to create a new card on my Tasks board in my &quot;Day List&quot; column. I setup the Event Summary to be the Name of the Card. I also had the position of the card to be at the bottom. That way the calendar events showed up in chronological order form top to bottom for a quick browse. Finally, since I&apos;m using labels to distinguish between projects, I went ahead and picked a free label color (Black) and gave it a name (Zaps) for a little bit of &quot;flair&quot; to show which items had been automatically added to my board. I saved it and turned it on.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Now, Zapier works hard for me at night (10 hours before my day ends) and gets all of my calendar events setup as work to be done for the day. I can glance at it first thing in the morning (even from my phone thanks to the mobile app) and better gauge how many additional items to add to my day list. The nice thing is that the zap seems to work with items &quot;up to 10 hours&quot;, so any new calendar items that I&apos;m invited to during the day show up as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6807,&quot;align&quot;:&quot;center&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Such a beautiful board!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been using my board for only a couple of weeks now and the management portion of my work is getting so much easier. I&apos;m able to better focus and prioritize my time through the day and tasks are not slipping through the cracks.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;How about you? Any productivity hacks worth sharing? I&apos;d love to hear them!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>How To Create Dynamic Environment Sequencing Columns In Net Core Ef Migrations With Postgresql Npgsql</title><link>https://dillieo.me/posts/development/2019-04-18-how-to-create-dynamic-environment-sequencing-columns-in-net-core-ef-migrations-with-postgresql-npgsql/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-04-18-how-to-create-dynamic-environment-sequencing-columns-in-net-core-ef-migrations-with-postgresql-npgsql/</guid><description>How To Create Dynamic Environment Sequencing Columns In Net Core Ef Migrations With Postgresql Npgsql</description><pubDate>Thu, 18 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Recently I&apos;ve been building out a.Net Core WebAPI microservice that talks to a PostgreSQL database. We&apos;re diving into the world of &lt;a href=&quot;https://en.wikipedia.org/wiki/HATEOAS&quot;&gt;HATEOS&lt;/a&gt; so we want to have a Url parameter that correlates to the Id of the record once it is created. Additionally, we&apos;re using Docker to better manage our deployments, so we want to be able to have this URL change when building the database in each environment as part of our Entity Framework migrations process.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s a bit tricky, but doable. Here&apos;s how you get your &quot;ducks in a row&quot; in order to make this happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6801} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step is to create your model that has all of your needed properties. While our &lt;code&gt;url&lt;/code&gt; field will be a required field, we will enforce it by setting a default value. Otherwise we won&apos;t be able to have the field autogenerated properly. Our model looks something like this:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class Duck&amp;lt;br&amp;gt;{        &amp;lt;br&amp;gt;   [Key]&amp;lt;br&amp;gt;   [Column(&quot;id&quot;)]   &amp;lt;br&amp;gt;   public int Id { get; set; }&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;   [Required]&amp;lt;br&amp;gt;   [Column(&quot;name&quot;)]&amp;lt;br&amp;gt;   public string Name { get; set; }&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;   [Column(&quot;url&quot;)]&amp;lt;br&amp;gt;   public string Url { get; set; }&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;   [Column(&quot;breed&quot;)]&amp;lt;br&amp;gt;   public string Breed { get; set; }  &amp;lt;br&amp;gt;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;!-- /wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Next, run &lt;code&gt;dotnet ef migrations add InitialSchema&lt;/code&gt; to create the initial migration script that will create this table. Make sure you build your ApplicationDbContext object to add the DBSet for and run &lt;code&gt;dotnet ef database update&lt;/code&gt; to run the migration script and create your table.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The next step is to verify that everything was created. I&apos;ve become a fan of &lt;a href=&quot;https://dbeaver.io&quot;&gt;DBeaver&lt;/a&gt; as my tool of choice to inspect my PostgreSQL database instances. Once you login and navigate down to your table, make a note of the Default value that was created as part of your sequence when the Key was generated for the ID. In my case, it was named &lt;code&gt;Ducks_id_seq&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;With info handy, we need to create another migration. We couldn&apos;t do this all in one step because simply referencing the &lt;code&gt;id&lt;/code&gt; column as a default value would in turn reference the sequence, which hadn&apos;t been created yet and would cause the migration to fail.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In your ApplicationDbContext, modify (or create) your &lt;code&gt;OnModelCreating&lt;/code&gt; override method to include the following code:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Autogenerate URL based on ID that has been generated.            modelBuilder.Entity&amp;lt;Duck&amp;gt;()&amp;lt;br&amp;gt;.Property(b =&amp;gt; b.Url)&amp;lt;br&amp;gt;.HasDefaultValueSql(&quot;&apos;&quot; + urlBase + &quot;&apos; || currval(&apos;\&quot;Ducks_id_seq\&quot;&apos;)&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;!-- /wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What this will do it grab the current value of the sequence and apply it to the Url field. Why do we use &lt;code&gt;currval&lt;/code&gt;? Calling &lt;code&gt;nextval&lt;/code&gt; would force the sequence to increment, and since the sequence is incremented and assigned to the Id before we update this value, everything synchronizes up.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;We need to set the &lt;code&gt;urlBase&lt;/code&gt; parameter really quick for our script. Since we want this configuration driven, it is easy enough to add a parameter called &lt;code&gt;ApplicationBaseUrl&lt;/code&gt; into our &lt;code&gt;appsettings.json&lt;/code&gt; file and set it&apos;s value to http://api.epicducks.test/v0/ducks/ (and it&apos;s subsequent Development/Staging/Production files), update our &lt;code&gt;ApplicationDbContext&lt;/code&gt; object to have our app&apos;s configuration injected and go from there.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;!-- /wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Now we can run &lt;code&gt;dotnet ef migrations add AddUrlDefault&lt;/code&gt; and we should be all set...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;...except that we aren&apos;t! If you open up the generated migration files for your project and look at our actions. You&apos;ll find something like this:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;migrationBuilder.AlterColumn&amp;lt;string&amp;gt;(&amp;lt;br&amp;gt;   name: &quot;url&quot;,&amp;lt;br&amp;gt;   table: &quot;Ducks&quot;,&amp;lt;br&amp;gt;   nullable: true,&amp;lt;br&amp;gt;   defaultValueSql: &quot;&apos;http://api.epicducks.test/v0/ducks/&apos; || currval(&apos;\&quot;Ducks_id_seq\&quot;&apos;)&quot;,&amp;lt;br&amp;gt;   oldClrType: typeof(string),&amp;lt;br&amp;gt;   oldNullable: true);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;!-- /wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Our migration code turned this into static text instead of a variable. This work fine locally, but the migration code isn&apos;t going to be updated in our other environments, so we need to do something to make this more dynamic.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Fortunately we can simply overwrite our generated script code to make it more dynamic. Unfortunately, it is much harder to get the application configuration injected into these low level migration scripts, so we will use environment variables instead. Update your &lt;code&gt;AddUrlDefault.cs&lt;/code&gt;, &lt;code&gt;AddUrlDefault.Designer.cs&lt;/code&gt;, and &lt;code&gt;ApplicationDbContextModelSnapshot.cs&lt;/code&gt; files to include code similar to this:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var urlBase = Environment.GetEnvironmentVariable(&quot;APPLICATION_URL_SERVICE&quot;); &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;b.Property&amp;lt;string&amp;gt;(&quot;Url&quot;)&amp;lt;br&amp;gt;.ValueGeneratedOnAdd()&amp;lt;br&amp;gt;.HasColumnName(&quot;url&quot;)&amp;lt;br&amp;gt;.HasDefaultValueSql(&quot;&apos;&quot; + urlBase + &quot;&apos; || currval(&apos;\&quot;Ducks_id_seq\&quot;&apos;)&quot;);&amp;lt;br&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;!-- /wp:preformatted --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Note: The code above will be slightly different for each file, but the key concept (getting the urlBase and updating the default value) will be the same.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Rebuild your project, run &lt;code&gt;dotnet ef database update&lt;/code&gt;, and check checkout the results. You should see that the `DefaultValue` for the url column has been updated and if you insert a new record, the url will be fully formatted for your needs!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;This nice thing about this is that you can expand this pattern to other fields as needed in the future. It is structured enough that you aren&apos;t doing too much custom coding of your architecture, and updating environment variables is much easier in.Net Core these days.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Leadership Finding Somebody New</title><link>https://dillieo.me/posts/development/2019-02-22-leadership-finding-somebody-new/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-02-22-leadership-finding-somebody-new/</guid><description>Leadership Finding Somebody New</description><pubDate>Fri, 22 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Finding somebody new can be a really tricky process. Recently I’ve been through a wave of interviews with various candidate, and I have a renewed respect for recruiters and HR personnel that handle this process on a day to day basis. How can you evaluate skill, character, fit, and so much more in such a short time span? Here is what I’ve started applying to my own evaluations.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6793} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://open.spotify.com/episode/1JFac6PDby51O4sI5qDOcC?si=gNUhRkceQmy0dSyRvEJiDQ&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;providerNameSlug&quot;:&quot;spotify&quot;,&quot;responsive&quot;:true,&quot;className&quot;:&quot;wp-embed-aspect-21-9 wp-has-aspect-ratio&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/episode/1JFac6PDby51O4sI5qDOcC?si=gNUhRkceQmy0dSyRvEJiDQ&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Word on the street is that Jeff Bezos sent out a memo early on during the founding of Amazon as three key questions for hiring new people:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Will you admire this person?&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;If you think about the people you’ve admired in your life, they are probably people you’ve been able to learn from or take an example from. For myself, I’ve always tried hard to work only with people I admire, and I encourage folks here to be just as demanding. Life is definitely too short to do otherwise.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Will this person raise the average level of effectiveness of the group they’re entering?&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;We want to fight entropy. The bar has to continuously go up. I ask people to visualize the company 5 years from now. At that point, each of us should look around and say, “The standards are so high now — boy, I’m glad I got in when I did!”&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Along what dimension might this person be a superstar?&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Many people have unique skills, interests, and perspectives that enrich the work environment for all of us. It’s often something that’s not even related to their jobs. One person here is a National Spelling Bee champion (1978, I believe). I suspect it doesn’t help her in her everyday work, but it does make working here more fun if you can occasionally snag her in the hall with a quick challenge: “onomatopoeia!”&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;So far these questions have served me well. I believe asking these questions forces you to think beyond the immediate “required skills” listed on the job application and to see how they would fit in the big picture of your teams, and company as a whole. It also helps reinforce the notion that I don’t want to hire more people just like myself. Having a wide diversity of backgrounds and though processes makes tacking challenges even easier since more ideas can be brought to the table. There’s a good chance that the candidate that majored in foreign languages before coming into the realm of web development is going to bring perspective I never thought of before, and I LOVE that.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;If I were to distill it down even further, I might say don’t hire the people that impress you, hire the people that impress AND inspire you.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Use A Custom Domain For Your Angular App Running In Docker</title><link>https://dillieo.me/posts/development/2019-02-06-quick-tip-how-to-use-a-custom-domain-for-your-angular-app-running-in-docker/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-02-06-quick-tip-how-to-use-a-custom-domain-for-your-angular-app-running-in-docker/</guid><description>Quick Tip How To Use A Custom Domain For Your Angular App Running In Docker</description><pubDate>Wed, 06 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;So you&apos;ve used one of the default templates out there to build and deploy your Angular app using Docker. Fabulous! Now let&apos;s wire it up so that way you can use something more meaningful than localhost...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6566} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m a big fan of using a custom local domain for development work. It makes it much easier to enable SSL and can also eliminate certain headaches with platforms such as Google login that won&apos;t recognize localhost as a valid request source.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step is to update your &lt;code&gt;docker-compose.yml&lt;/code&gt; file to have your container listening for a specific hostname. Add this to your angular/services/web section (depending on what you named it):&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;hostname: epicsite.test&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Additionally, you&apos;ll want to map your local port 80 to the container port 4200, since this is what the default Angular project runs out of:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ports:&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;- 80:4200&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Finally, update your &lt;code&gt;Dockerfile&lt;/code&gt; command to ignore specific IP addresses and leverage the &quot;public host&quot; parameter to indicate your custom domain:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CMD ng serve --host 0.0.0.0 --public-host epicsite.test&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. Rerun your &lt;code&gt;docker-compose build&lt;/code&gt; and &lt;code&gt;docker-compose up&lt;/code&gt; commands and you&apos;re now running your site on a local domain without the localhost shenanigans!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Final note: make sure you update your hosts file so that your &lt;code&gt;epicsite.test&lt;/code&gt; domain points to your loopback IP address (127.0.0.1). Alternatively (and what I prefer nowadays) you can use &lt;a href=&quot;https://passingcuriosity.com/2013/dnsmasq-dev-osx/&quot;&gt;dnsmasq&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Bootstrap Your App For Free Part 3 Security And Naming</title><link>https://dillieo.me/posts/development/2019-01-30-bootstrap-your-app-for-free-part-3-security-and-naming/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-01-30-bootstrap-your-app-for-free-part-3-security-and-naming/</guid><description>Bootstrap Your App For Free Part 3 Security And Naming</description><pubDate>Wed, 30 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In my last few entries, I have outlined how I was able to build my &lt;a href=&quot;http://bookmarkinator.gq/&quot;&gt;Bookmarkinator&lt;/a&gt; app for free thanks to a &lt;a href=&quot;/bootstrap-your-app-for-free-part-1-tools-and-resources&quot;&gt;variety of tools and platforms&lt;/a&gt; out there (no credit card or limited time demo software either!). I followed it up with some resources that you could &lt;a href=&quot;/bootstrap-your-app-for-free-part-2-hosting&quot;&gt;host your app&lt;/a&gt; for free as well (no credit card either!). That takes us to the final step which helps polish our app and make it look bonafide: security and domain names.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:&quot;media-108&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by Pixabay on &lt;a href=&quot;https://www.pexels.com/photo/close-up-of-no-4711-258174/&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why Bonafide?&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;One thing you could be asking is &quot;why bother&quot;? This is just a beta version of my application and it isn&apos;t going to matter since I will blow it away two weeks later for my version 0.7. That&apos;s a valid point. If I have noticed anything over the years, there are a couple of important pieces to help get your beta app traction or even to help yourself support it long term.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Security&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Security is highly important nowadays. Even if you&apos;re using a basic e-mail address and password to login, that data could be sniffed through a connection at your local coffee shop. If your friend (or users) are using that same password elsewhere, you wouldn&apos;t want to be the one to accidentally open the door to have other accounts hacked. Having a SSL encrypting your traffic helps cover a lot of issues.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;To that extent, &lt;a href=&quot;https://letsencrypt.org&quot;&gt;Let&apos;s Encrypt&lt;/a&gt; has been around for a couple years now and offers free SSL certificates through their automated tools. It has been created by a consortium of trusted companies and also has been approved by all the major browser companies as a legitimate certificate authority. They have tools for nearly every platform and web server out there, as well as Docker solutions. The process is nearly painless and as long as you remember (there are tools for this as well) to renew your certificate every three months or so, you are set.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Domain Name&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Sure, this could be a bit of a vanity thing, but I find it far nicer to be able to say &quot;Hey, go check out my little hobby project at bookmarkinator dot gq&quot; than &quot;Hey, go check out my little hobby project at Bookmarkinator dot node25 dash thx1138 dot saas host dot com.&quot; I exaggerate a little in there, but not too much based on previous experiences I&apos;ve had. It should also be noted that some services, like SSL certificates or Google Authentication integration, can&apos;t work at the subdomain level, so having a TLD is important to getting that in place.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;To help with that, there are a handful of top level domains (TLDs) that are free and available. &lt;a href=&quot;http://www.freenom.com&quot;&gt;Freenom&lt;/a&gt; is a great tool that will check availability against.tk,.ml,.ga,.cf, and.gq domains. You can reserve them for a year, and they are free to renew after that. There&apos;s no weird hosting shenanigans either, you can create all the standard DNS entries (CNAME, A, MX) you need.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading --&amp;gt;&lt;/p&gt;
&lt;h2&gt;Be Fruitful and Codify!&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Armed with all of this, you can now build your new great idea, get hosted securely, and with a name that doesn&apos;t take 2 minutes to spell out! I hope this has been helpful to you and if you have any other resources that are similar for building apps out for free, make sure to leave them in the comments.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Bootstrap Your App For Free Part 2 Hosting</title><link>https://dillieo.me/posts/development/2019-01-23-bootstrap-your-app-for-free-part-2-hosting/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-01-23-bootstrap-your-app-for-free-part-2-hosting/</guid><description>Apple Laptop</description><pubDate>Wed, 23 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In my &lt;a href=&quot;/bootstrap-your-app-for-free-part-1-tools-and-resources&quot;&gt;last entry&lt;/a&gt;, I outlined how I was able to build my &lt;a href=&quot;http://bookmarkinator.gq&quot;&gt;Bookmarkinator&lt;/a&gt; app for free thanks to a variety of tools and platforms out there (no credit card or limited time demo software either!). Now that you&apos;ve built your app, then next step is to get it hosted out in the wild. Here are some of my &quot;go to&quot; places that are free for the life of the project (or until a service changes).&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:&quot;media-30&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by Pixabay on &lt;a href=&quot;https://www.pexels.com/photo/apple-laptop-notebook-office-39284/&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;One Benefit / One Requirement&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;One benefit I like about all of these platforms is that they are easily upgradable. One &lt;a href=&quot;https://john.do/&quot;&gt;wise person&lt;/a&gt; I&apos;ve followed a bit through the years has a motto of &quot;just ship&quot; and if you&apos;re going to do that, particularly early on, you don&apos;t need a full AWS T3.large server running beta 0.1 of the project. You want it in peoples hands and saving a few bucks along the way is wise. All of these platforms allow you to easily upgrade your hosting to a paid platform when (and if) you are ready.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;One requirement I had when setting up my hosting is that it needed to be 100% free. This included not requiring a credit card to be on file for &quot;overages&quot; or &quot;for when you&apos;re ready to upgrade.&quot; Indirectly linked to above, my project may never be ready for upgrade, or it is running sufficient with the resources it has. Also, a lot of places that require the credit card also do it in case your usage goes over a certain threshold, and then they&apos;ll charge you. I&apos;d rather have services stop than get an unexpected $3K hosting bill the following month.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;With that said, here are a few 100% free app hosting platforms I&apos;ve used (or am currently using) in alphabetical order (to prevent favoritism 8^D)&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;AppHarbor&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://appharbor.com&quot;&gt;AppHarbor&lt;/a&gt; is one the longest running platform as a service (PAAS) providers, and early on it was the only one I could find that focused on.Net technology.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Lots of additional services (such as SQL Server, RavenDB, MemCached, MailGun) that also have free tier platforms to integrate with your app.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;: The UI is a little outdated and difficult to manage. While setup is easy in the sense that you point it to your repo (or use theirs), if something goes wrong it can be a little difficult to triage. Custom hostnames cost extra too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Current Apps&lt;/strong&gt;: &lt;a href=&quot;http://trellodoro.apphb.com&quot;&gt;Trellodoro&lt;/a&gt; (Trello + Pomodoro = Kanban Bliss), &lt;a href=&quot;http://messagecube.apphb.com&quot;&gt;Message Cube&lt;/a&gt; (really old attempt at fusing social media platforms - use at your own risk)&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;GearHost&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gearhost.com&quot;&gt;Gearhost&lt;/a&gt; is an independent hosting company that has kept up with the major providers over the years and also does its own form of cloud hosting. They specialize in.Net, PHP, and Node.js hosting, which also includes MySQL and SQL Server hosting. They also provide domain and certificate services too.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Modern UI interface that makes it easy to create and work with your platforms. Up to 100 cloud sites/databases for free. Use custom domains with your sites for free.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;:.Net Core deployments have been difficult, even though they say it is fully supported. However, continuous deployment options through popular Git platforms may have resolved this. Free SQL Server in only 10MB, so tread lightly on your data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Current Apps&lt;/strong&gt;: &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Heroku&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.heroku.com&quot;&gt;Heroku&lt;/a&gt; labels itself as a &quot;Cloud Application Platform&quot; that works with all of your &quot;modern&quot; programming languages:.Net, Python, Scala, Go, and more. One of their biggest features is the ability to host Docker containers. With that you can have your environment completely isolated and verified, and then push to the cloud when ready.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Docker, Kalfka readily available. Easy to scale up apps when ready. Quickly deploy and create services from the console using their CLI tool.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; CLI and Git are the only means to deploy, sometimes you need a simple FTP deploy. Adding SSL is extra.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Current Apps:&lt;/strong&gt; &lt;a href=&quot;http://www.bookmarkinator.gq&quot;&gt;Bookmarkinator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Why not the &quot;Big 3&quot;??&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;By now you may be wondering why Azure, AWS, or GCP aren&apos;t in the mix here. All three of these require a credit card to get started even if you&apos;re working with your free credits or your free sized systems. To date I haven&apos;t found a way to &quot;throttle&quot; my usage to make sure I don&apos;t accidentally go over my free tier bounds and I just don&apos;t want to hassle with it. Once one of my apps gets really big, then I&apos;ll look to transfer, since deployments are getting smoother and smoother nowadays.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;What&apos;s Next?&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The final step to all of this is making your app &quot;bonafide&quot; through a domain name and a SSL certificate so you&apos;re not messing with a 15 character subdomain that won&apos;t fit into a single line to share.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Get that app out in the wild!&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;With all of these free (and reliable) hosting options out there, there&apos;s no excuse for you not to get your app out for the world to see. Multiple eyes is the best debug tool out there and since Google presented us with the &quot;perpetual beta&quot; that is Gmail, people are used to working with a 0.6 type release knowing there are better things on the way.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;If you know of any free hosting providers you like to use, let me know! I&apos;m always looking to check out something new.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Bootstrap Your App For Free Part 1 Tools And Resources</title><link>https://dillieo.me/posts/development/2019-01-16-bootstrap-your-app-for-free-part-1-tools-and-resources/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-01-16-bootstrap-your-app-for-free-part-1-tools-and-resources/</guid><description>Bootstrap Your App For Free Part 1 Tools And Resources</description><pubDate>Wed, 16 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph {&quot;align&quot;:&quot;left&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Last year, as a means of doing a deeper dive into .Net Core and to fill a personal need, I built the &lt;a href=&quot;http://www.bookmarkinator.gq&quot;&gt;Bookmarkinator&lt;/a&gt;. Simple, fun, and super helpful (at least for me). One of the requirements for this was that I could build a full-fledged app available to the public that cost me nothing (minus some elbow grease). It was a success, and I want to share the tools and resources that I used so that you can bootstrap your own app for free as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ll outline the &quot;why&apos;s&quot; in a later post, but first, let&apos;s get through some of the resources needed to build in the app in the first place. A lot of these may seem like &quot;no brainers&quot;, but it&apos;s worth mentioning, if only to refresh my forgetful brain a few more years down the line.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Editors / IDEs&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;My very first code editor was a Borland C/C++ compiler. It was 10 floppy disks copied from a friend/mentor because I was a lowly high school student without a high paying job and compilers were expensive. Nowadays you can easily get away with using a &quot;glorified text editor&quot; and command line or a basic IDE to build your app. Here are a few of my favorites:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:list --&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt; - It&apos;s really amazing at how fast Microsoft&apos;s Text Editor has taken form and established itself. Maybe they took a few queues from their predecessors like Sublime Text and Atom, but with the wide range of extensions available for nearly every programming language, basic Javascript / .Net debugging, and a built in terminal screen, you can get a LOT done for nothing. Bookmarkinator was built using this.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://visualstudio.microsoft.com&quot;&gt;Visual Studio Community Edition&lt;/a&gt; - The original Visual Studio is not to be left in the dust though. Community Edition is all of the best features of their long standing IDE and they make it free for personal or small business use. The only things you can&apos;t do with it are install extensions (though a few are given special access to be installed) and use some deep data mining / test suite type tools. There&apos;s no reason you can&apos;t build something with this. I used it for my &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt; app.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jetbrains.com/pycharm/&quot;&gt;JetBrains PyCharm&lt;/a&gt; - Are you doing Python development and need some extra code insights? PyCharm is the tool for you! It helped me out of a bind with an older project and the free community edition works amazingly well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;!-- /wp:list --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Isolated Environment Management&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It used to run into the biggest problems with my PHP apps. I needed multiple versions to support different applications being built since upgrading was difficult or unfeasible. Likewise, back when the Apache 2.2 to 2.4 transition happened I wound up using a tool called MAMP to handle all of these configurations. MAMP updated my configuration defaults, but you could still run into problems if things didn&apos;t work out right. I didn&apos;t have nearly the same issues with .Net, but they were a possibility as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I no longer have to worry about that thanks to &lt;a href=&quot;https://www.docker.com&quot;&gt;Docker&lt;/a&gt;. Docker allows me to build isolated environments to match up to my specific dev needs. For Bookmarkinator, I was able to get a .Net Core 2.1 environment running, including an isolated version of SQL Server for Linux that I could fire up on either a Mac or a PC for my dev needs. Docker containers are deployable as well to a growing number of locations out there, which further helps overcome the typical challenges of deploying to a new environment. Give Docker a whirl, I think you&apos;ll love it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;Graphics Tools&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a chance you may need to build a logo, tweak a screenshot, or resize an image. The Adobe suite it still considered the best in class and is pricey, but here are a few things I&apos;ve used to get by:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:list --&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.getpaint.net&quot;&gt;Paint.Net&lt;/a&gt; - Sorry Mac folks, you&apos;re out of luck on this one. Paint.Net has all the critical image editing tools out there for quick touchups. It also has the ability to work with image layers, giving you some advanced tools if you need to do something more in depth. I haven&apos;t really found a good Mac equivalent (GIMP, Seashore) so I&apos;d love one if you know of it&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inkscape.org&quot;&gt;Inkscape&lt;/a&gt; - Vector graphics are becoming more and more common for the web because they let you scale large or small without losing quality. I&apos;ve used Inkscape in the past to generate icons for my app and even &quot;trace&quot; my bitmap related images into SVG images for greater quality. This is a handy tool to have.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.favicon-generator.org&quot;&gt;FavIcon Generator&lt;/a&gt; - You still need that pretty icon at the top of the browser and the simplest way still is with an .ico file. This tool will take your logo (did you use a tool above? 8^D) and generate what you need.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pwabuilder.com/imageGenerator&quot;&gt;PWA Image Builder&lt;/a&gt; - Once you have that logo ready, you&apos;re going to want to have all the proper configurations and sizes ready to make them happy on mobile devices. This tool does all the heavy lifting for you and made my life easier than constantly resizing and testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;!-- /wp:list --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:3} --&amp;gt;&lt;/p&gt;
&lt;h3&gt;What&apos;s Next?&lt;/h3&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In the next post I&apos;ll outline the tools available to host your code, have a light CI/CD pipeline, and host your application online.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Do you have any free tools you use for your dev work?! I&apos;d love to hear about them.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Leadership Thoughts And A Tip</title><link>https://dillieo.me/posts/development/2019-01-11-leadership-thoughts-and-a-tip/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2019-01-11-leadership-thoughts-and-a-tip/</guid><description>Leadership Thoughts And A Tip</description><pubDate>Fri, 11 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been doing a lot of thinking now specifically asking myself, &quot;What does leadership look like? What does it mean to be a leader? I still don&apos;t have a ton of answers, but I have a few thoughts and something I&apos;m doing more consistently now.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by Sydney Troxell on &lt;a href=&quot;https://www.pexels.com/photo/assorted-color-nips-718759/&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:embed {&quot;url&quot;:&quot;https://open.spotify.com/episode/0oVW8lm5lP665UMAJUkcCR?si=EKt6QtzOTIaFtD4GvbiEPw&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;providerNameSlug&quot;:&quot;spotify&quot;,&quot;responsive&quot;:true,&quot;className&quot;:&quot;wp-embed-aspect-21-9 wp-has-aspect-ratio&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/episode/0oVW8lm5lP665UMAJUkcCR?si=EKt6QtzOTIaFtD4GvbiEPw&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:embed --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;As I start my third year with the title &quot;Software Development Director&quot; I look back and think about what I&apos;ve done in this role that has a leadership responsibility attached to it. At the project level I&apos;ve been the technical lead and architect on two of my largest projects ever, which involved a lot of decision making, discovery into tools/technology I wasn&apos;t intimately familiar with, and guiding the teams to success. I even was able to write a bit of code in there along the way. I am happy with these results, but I realize I still have a lot to grow with in regards to this role and responsibility.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I realize that there are many paths to success, and I&apos;m still looking for them. While the orthopraxy (correctness of action) still needs a lot of crafting, I think I have a handle on the orthodoxy (correctness of belief). At the moment these are the two precepts I&apos;ve been guiding my actions through.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;I want to inspire others to succeed...&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Software development is hard. While more and more scaffolding, tooling, and automation gets put into place, at the core what we do is &lt;a href=&quot;https://dev9.com/blog-posts/2015/1/the-myth-of-developer-productivity&quot;&gt;knowledge work&lt;/a&gt; - we take inexact problems and make exact solutions. Knowing this, I try to find ways to inspire others to push through the hard bugs, get excited when the opportunity arises to envision something new, and not take themselves too seriously. When that happens I see some amazing growth happen, just like it did for me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;I want to empower others to succeed...&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Keeping that inspiration alive and going can be difficult when your environment isn&apos;t conducive to making that happen. I try to find ways to empower others to succeed as well. Sometimes that means making the pitch to purchase some new software tools. Other times it means teaching / sharing about design patterns or frameworks that are available. A lot of times it means being the go between person that finds answers or raises awareness to the stakeholder so that the developers can continue to focus on their work.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;One quick tip...&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In the process of growing as a leader, I stumbled up on one quick tip that has served as a catalyst to these two principles. Admittedly I didn&apos;t even notice it at first until it was mentioned by one of the developers I have been mentoring and have worked with on a project:&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keep a bag of candy at your desk.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Last year I had a bag of Dove dark chocolates sitting on my desk as &quot;headache candy&quot;. From time to time I would get a headache, and when I took some Tylenol, I would take some dark chocolate and drink some soda to help speed up the process.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Something funny happened with that bag. Somewhere along the way the bag stopped being used for headaches. Somebody might come over for a question, and ask for a chocolate as well. Then I started passing them around arbitrarily because hey, its candy and a little bit of sweets (and sugar rush) come in handy after a hard day of problem solving. Then it would spark some random conversation. Sometimes about current project issues, sometimes about software development practices, often about life in general. Bonds were formed, the team grew closer together, and everything started to level up. It was a seemingly simple thing, but it had great results. Currently I have a tub of dark chocolate covered coffee beans at my desk, we&apos;ll see what I pick up next.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;How about you? Are you in some kind of leadership role? Have you thought about it? Do you have any books, tips, podcasts, something that might help me grow? If you try the candy tip let me know how it works for you! I&apos;d love to hear about it!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>If I Was Stuck On A Deserted Island The 5 Books I Would Want With Me Are</title><link>https://dillieo.me/posts/growth/2019-01-04-if-i-was-stuck-on-a-deserted-island-the-5-books-i-would-want-with-me-are/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2019-01-04-if-i-was-stuck-on-a-deserted-island-the-5-books-i-would-want-with-me-are/</guid><description>If I Was Stuck On A Deserted Island The 5 Books I Would Want With Me Are</description><pubDate>Fri, 04 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;In an effort to mix things up a bit, I&apos;m taking my &quot;Freeform Friday&quot; down a slightly different road and will answer random questions I find out there. For starters, if I was stuck on a deserted island, the 5 books that I would want with me are...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:&quot;media-45&quot;} --&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo by Mikes Photos on &lt;a href=&quot;https://www.pexels.com/photo/books-on-bookshelves-1166657/&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;The Little Prince, by Antoine de Saint-Exupéry&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;No, I don&apos;t say this because I&apos;m writing this while wearing my amazing Little Prince lithograph shirt either. 8^D This little book was an inspiration for me when I was younger and really helped me think outside the box in a lot of ways (is that a hat or an elephant that has eaten a snake). I was able to start reading it in French, which was equally enjoyable. There&apos;s a lot of good life lessons in there, and I think a bigger issue to cherish of being able to remain &quot;child like&quot; as you get older and not &quot;childish&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;Les Misérables, by Victor Hugo&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I was first introduced to &quot;Les Mis&quot; through the amazing musical back in high school. Later on in college I picked up the book and was able to finish it while living in France for a month. The characters, the heartache, the triumph, all function at so many levels and embrace truths that still apply today. It&apos;s been a while since I&apos;ve read the book, and I&apos;m adding it as a goal to read for this year.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;The Lord of the Rings, by J.R.R. Tolkien&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m going to cheat a little on this one and say that I have a copy (which I do) that includes all three stories (Fellowship, Towers, Return) into one large edition and that was the one I was stranded with. I blame my sixth grade teacher for getting me hooked on middle earth. I subsequently read the series on the long bus rides to school in 7th grade while geeking out during lunch over these amazing characters, world, and the ultimate quest to be undertaken. I find it a joy to see one of my girls slowly reading through it now.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;The Martian Chronicles, by Ray Bradbury&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;A lot of science fiction I&apos;ve read has been as a part of a general series or spans multiple books, so I couldn&apos;t pack all of them and I would want to have something Sci-Fi with me. The Martian Chronicles however, was a standalone book by itself, and got me hooked on &quot;multi-generational&quot; books that span beyond the life of one person to see how they would be affected. It&apos;s also a good look at &quot;humanity 2.0&quot; in that we made it to Mars, but the circumstances of life there give the children that are born on Mars a distinctly different view on life.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;The Bible&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;The Bible is my foundation. It points me to the creator of the universe and the savior of my soul. It gives me the foundational precepts on how I attempt to live each day. It&apos;s hard to form words around its impact at times, but I know it would provide daily strength, inspiration, and comfort.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:heading {&quot;level&quot;:4} --&amp;gt;&lt;/p&gt;
&lt;h4&gt;et vous?&lt;/h4&gt;
&lt;p&gt;&amp;lt;!-- /wp:heading --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;What 5 books would you want if you were stranded on a desert island. I want to know!&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Bienvenue Mmxix</title><link>https://dillieo.me/posts/growth/2019-01-02-bienvenue-mmxix/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2019-01-02-bienvenue-mmxix/</guid><description>Bienvenue Mmxix</description><pubDate>Wed, 02 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;It feels a bit like walking into one of those attic style workrooms, with a small layer of dust on things and lots of work abruptly halted. On one hand it feels a bit dusty, old, and frozen in time. On the other hand it feels refreshing to see some old things come to life again...&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:more --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:image {&quot;id&quot;:6760} --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:image --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Nevertheless, I&apos;m here and eager to start blogging again. There&apos;s too much to really recap in a short blog post, but 2018 was a year of extremes. On one hand, we had a brief scare with cancer returning with Jen, the been enough medical and outside incidents that the savings fund for the home is frankly non-existent, and my other daughter was diagnosed with Tourettes syndrome (lots could be unpacked there). On the other hand, we were able to take another huge family road trip, overall townhome life has been much better compared to apartment life, and we were blessed to have caught up with three friends who we haven&apos;t seen in literally decades. Christmas Advent was far more eventful and joyful than it has been in years past, and lots of simple downtime in the house was very nice indeed.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Life as a software development director was a large change as well. Minus a couple of brief updates here and there I haven&apos;t touched a substantial amount of code for an entire year as I take up more and more leadership responsibilities. I&apos;ve enjoyed the process of mentoring a few developers that have been assigned to me, but the whole process has been a lot of (and continues to be) growth and discovery for myself.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;Oh, and with Flickr recently changing up their plans and pricing I&apos;ve decided to pull out the &apos;ol &lt;a href=&quot;https://picadillieo.wordpress.com&quot;&gt;Pic-a-Dillie-O&lt;/a&gt; and get some of my &quot;purposeful&quot; photos there (and with full resolution). I hope you&apos;ll stop by.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- wp:paragraph --&amp;gt;&lt;/p&gt;
&lt;p&gt;I don&apos;t really have any &quot;resolutions&quot; to make this year. There are goals to name and claim and with all the twists and turns that happen it would seem odd to write them down here (yes, yes, I know what the other side of the coin would be for that). So for now I will say that 2018 has been resolved and that 2019 will be a work in progress. More things to come.&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- /wp:paragraph --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Tourettes Trex Video And Breaking Through</title><link>https://dillieo.me/posts/growth/2018-05-17-tourettes-trex-video-and-breaking-through/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2018-05-17-tourettes-trex-video-and-breaking-through/</guid><description>t-rextra_izzy_raleigh</description><pubDate>Thu, 17 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There&apos;s a longer post that will followup on this in the future, but a handful of things have happened recently that need sharing, particularly when it comes to something amazing my girls have made.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Earlier this year Haylee was diagnosed as having Tourettes after a year of us &lt;a href=&quot;/arrival&quot;&gt;trying to figure out&lt;/a&gt; exactly what was going on. This was a victory in that we now has a &quot;name&apos; to what was happening, but it created new challenges for us, especially for the girls.&lt;/p&gt;
&lt;p&gt;Soon after this they discovered &lt;a href=&quot;https://www.youtube.com/channel/UCpEWFO8Hm8SMI7sjIZxvsmA&quot;&gt;Don Hoiland&lt;/a&gt; and his T-Rex video series. Don has Tourettes himself and has made a series of short videos to help kids (and parents) work through some of the challenges Tourettes provides. These videos made an immediate impact on our girls, helping them (and us) move forward.&lt;/p&gt;
&lt;p&gt;They made SUCH an impact that they reached out to Don to see if they could contribute their own T-Rex video to share some of their experiences, victories, and tips with others. Don agreed. The girls then spent about a week planning the dialog, writing the scripts, and getting the video recorded (mom has a narrative role too 8^D). Don approved the video, added a little bit to the introduction and it was published last night!&lt;/p&gt;
&lt;p&gt;This video comes at a very significant milestone. The girls turned 12 yesterday. This month is &lt;a href=&quot;https://www.tourette.org/about-us/5-ways-raise-awareness/&quot;&gt;Tourettes Awareness Month&lt;/a&gt;. It also represents a &quot;leveling up&quot; in my girls dedication and creativity in themselves and something they deem important. I&apos;ve seen so much growth and small victories over the past few months that all of this really came together perfectly and I&apos;m amazed and the young women my girls are growing into.&lt;/p&gt;
&lt;p&gt;Enjoy this video and help share it around!&lt;/p&gt;
&lt;p&gt;https://youtu.be/poGrgl949Pc&lt;/p&gt;
</content:encoded></item><item><title>Fixed Building Android 23 Apps With Gradle In Jenkins Pipeline</title><link>https://dillieo.me/posts/development/2018-03-08-fixed-building-android-23-apps-with-gradle-in-jenkins-pipeline/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2018-03-08-fixed-building-android-23-apps-with-gradle-in-jenkins-pipeline/</guid><description>jenkins_android</description><pubDate>Thu, 08 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m working with a team who is building a mobile app using React Native. Everything builds nicely in our local environments (both Mac and PC) and now we&apos;ve been working on setting up our Jenkins pipeline to create a fresh build with each merge request, and publish that out to a location that allows our dev teams to install at anytime. Everything was working great for this... until it wasn&apos;t&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;After the initial configuration was in place, our Jenkins build continued to fail. Digging into the lengthy console log, there was one particular line in question that seemed to be the cause. Your paths may vary slightly:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.io.IOException: Cannot run program &quot;/opt/android-sdk-linux/build-tools/23.0.1/aapt&quot; (in directory &quot;/var/lib/jenkins/workspace/tt-suite-mobile-fe-MR-test/node_modules/react-native-config/android&quot;): error=2, No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&apos;ll avoid writing the next 50 paragraphs of head banging with various attempts to diagnose, track, google, and debug the issue and simply provide the answer in hopes that it is the root cause for you.&lt;/p&gt;
&lt;p&gt;It turns out that &lt;code&gt;aapt&lt;/code&gt; is a 32 bit application. The machine we&apos;re building with is a 64 bit RedHat/CentOS image in AWS. By default it wasn&apos;t installing the 32 bit resources, which included &lt;code&gt;aapt&lt;/code&gt; and that was causing our problem.&lt;/p&gt;
&lt;p&gt;The solution then was pretty simple. We ssh&apos;d into our Jenkins server and ran the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;​sudo yum install zlib.i686 ncurses-lib.i686 compat-libstdc++-33.i686
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replace &lt;code&gt;sudo yum install&lt;/code&gt; with the package manager that relates to the OS you&apos;re running. Additionally, you can replace the &lt;code&gt;-33&lt;/code&gt; with &lt;code&gt;-*&lt;/code&gt; in some environments to make sure you have the latest version of the &lt;code&gt;libstdc++&lt;/code&gt; library.&lt;/p&gt;
&lt;p&gt;Alternatively, you could add a similar command to your docker scripts (should you be doing some container fun) or any other image initialization process you go through.&lt;/p&gt;
&lt;p&gt;After that you should be set!&lt;/p&gt;
&lt;p&gt;Amazing kudos and HT to &lt;a href=&quot;https://www.linkedin.com/in/brian-duncan-932035a8/&quot;&gt;Brian Duncan&lt;/a&gt; for doing most of the heavy lifting with this!&lt;/p&gt;
</content:encoded></item><item><title>Dont Forget To Smile</title><link>https://dillieo.me/posts/growth/2018-01-10-dont-forget-to-smile/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2018-01-10-dont-forget-to-smile/</guid><description>IMG_4392-COLLAGE-2</description><pubDate>Wed, 10 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve already &lt;a href=&quot;/arrival&quot;&gt;outlined earlier&lt;/a&gt; how last year was a really hard year for me and my family. However, Google Photos reminded me the other day that 2017 was also a year of smiles, partially due to some wonderful friends we had and some much needed breaks along the way.&lt;/p&gt;
&lt;p&gt;As 2018 gets into full gear now, don&apos;t forget to smile. You might be surprised at how a small thing can make a big difference.&lt;/p&gt;
</content:encoded></item><item><title>How To Fix Path Conflicts In Wsl Bash On Ubuntu On Windows</title><link>https://dillieo.me/posts/development/2018-01-05-how-to-fix-path-conflicts-in-wsl-bash-on-ubuntu-on-windows/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2018-01-05-how-to-fix-path-conflicts-in-wsl-bash-on-ubuntu-on-windows/</guid><description>quicktip</description><pubDate>Fri, 05 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WSL (also known as Bash on Ubuntu on Windows) has been a game changer for me with my web development. For a lot of our front end related coding, we take advantage of certain tools such as npm, grunt, bower, and at this point they still run a little smoother in my Mac environment than they do in my Windows 10 environment (though they are getting better). Having WSL available allows me to use these tools effectively and still retain my Win10 goodies. I recently ran into a problem with some path conflicts and here is the trick to solve them.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h3&gt;The problem...&lt;/h3&gt;
&lt;p&gt;Certain bower / gulp / grunt commands (particularly those dealing with SASS) have dependencies on Ruby in order to do their magic. However, the build of Ruby on UNIX and the build of Ruby on Windows seem to have some variations, or at least enough to cause havoc within WSL. WSL appears to want to access the Windows version, and then it complains about having a.exe and missing support libraries.&lt;/p&gt;
&lt;h3&gt;The diagnosis...&lt;/h3&gt;
&lt;p&gt;What&apos;s happening is that when WSL starts up, the default environment setup adds all of the windows paths into the environment path. I suspect this is to help you get access to some of your tools (like Visual Studio Code) from both environments, but it can cause conflicts. if you type &quot;echo $PATH&quot; you&apos;ll see what I mean:&lt;img src=&quot;@assets/images/posts/2018-01-cursor_and_win10x64-fresh2018.png&quot; alt=&quot;Cursor_and_Win10x64-Fresh2018&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;The solution...&lt;/h3&gt;
&lt;p&gt;After poking around a bit, I discovered that the best solution would be to follow Mr. Miyagi&apos;s old saying of &quot;best block no be there&quot;. Thanks to the scripting powers of unix, I simply added the following line into my.zshrc (yes, running zsh) script that executes when I start up the environment:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/Dillie-O/1f8670b3f7ecc0a8c5f5a662919dcdd1&lt;/p&gt;
&lt;p&gt;You can just as easily run this in your.bashrc if you&apos;re using bash.&lt;/p&gt;
&lt;p&gt;The next time you start up your environment, you can check and verify that the Ruby path is gone:&lt;img src=&quot;@assets/images/posts/2018-01-cursor_and_win10x64-fresh20181.png&quot; alt=&quot;Cursor_and_Win10x64-Fresh2018&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Voila! The problem is solved. Everything should build nice and friendly for you now as before. You can easily update this statement to include other paths as needed.&lt;/p&gt;
&lt;p&gt;If you know any other shell script tricks, let me know. I&apos;m always on the hunt!&lt;/p&gt;
</content:encoded></item><item><title>Dynamically Updating Environment Variables In Postman</title><link>https://dillieo.me/posts/development/2018-01-02-dynamically-updating-environment-variables-in-postman/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2018-01-02-dynamically-updating-environment-variables-in-postman/</guid><description>quicktip</description><pubDate>Tue, 02 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you haven&apos;t used &lt;a href=&quot;https://www.getpostman.com&quot;&gt;Postman&lt;/a&gt; yet for your general development needs while building or consuming a REST (or SOAP!) API, go get this amazing tool NOW and then keep reading. Otherwise, here&apos;s a quick tip to make to help when dealing with frequently changing environment variables, such as session IDs or JWT tokens.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;As you may know, Postman includes this amazing feature called &quot;environments&quot;. This allows you to setup variables that you can add into your API requests to make things easier. For example, you may have a variable called &quot;server&quot; in which you put the destination server to call. By doing this through environments, you can have one address, {{server}}/auth/login, but then simply reconfigure the server value to match the environment your in. No more copy/paste or retype nightmares.&lt;/p&gt;
&lt;p&gt;Taking this one step further, Postman ALSO has a pre-request and post-request (also known as test) scripting possible This allows you to either do some advanced prep work before making your request, or do some testing of your API request to make sure things actually ran smoothly instead of having to inspect the details.&lt;/p&gt;
&lt;p&gt;Taking this one step further, we can leverage this scripting to help with some tedious tasks. For a recent project I was on, we were using standard JWT authentication. After the login, we needed to resubmit the JWT token in all of our subsequent requests. Originally, my workflow looked something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Execute login API endpoint.&lt;/li&gt;
&lt;li&gt;Scroll down to results and find JWT value.&lt;/li&gt;
&lt;li&gt;Copy JWT value (oh yeah, make sure you grab it all since it is rather long.&lt;/li&gt;
&lt;li&gt;Open up environment configuration.&lt;/li&gt;
&lt;li&gt;Paste updated JWT value (make sure you removed the old value completely first).&lt;/li&gt;
&lt;li&gt;Save. Close. Move on to next command.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;However, thanks to the scripting features. I added two simple lines of text to the &quot;Tests&quot; section of my API endpoint configuration:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/Dillie-O/bf745fa785e7e3cfcafa5894247589de&lt;/p&gt;
&lt;p&gt;Just like that, every time I run the API call, my environment variable is updated automatically, saving me lots of time and tedium! Note that the &apos;jsonData.data.JWT&apos; value will be different depending on the structure of your payload.&lt;/p&gt;
&lt;p&gt;What Postman tricks do you use? I&apos;d love to hear about them!&lt;/p&gt;
</content:encoded></item><item><title>Arrival</title><link>https://dillieo.me/posts/development/2017-12-28-arrival/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-12-28-arrival/</guid><description>IMG_20171226_082200.jpg</description><pubDate>Thu, 28 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I start to write this, it&apos;s the day after Christmas and I&apos;m doing so from the third home that my family has lived in over the course of a year. I realize that for some people this could be considered standard fare, but this year has been far from that.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It started about this time last year, when we decided to take a big jump and &lt;a href=&quot;/chapters&quot;&gt;move up to Washington&lt;/a&gt; thanks to an amazing opportunity at work. Shortly after we made this decision we were blessed with additional news. Jen&apos;s parents had decided that they would be following us up to Washington as well! They had always loved this area, and it was a great opportunity for them as well. We celebrated our &quot;&lt;a href=&quot;/last-christmas&quot;&gt;last Christmas&lt;/a&gt;&quot; with a little extra fervor and joy.&lt;/p&gt;
&lt;p&gt;The new year began and with it plenty of challenges I never expected to face. The girls had started public school shortly before the break, and there were new adventures and challenges for them with that. However, Haylee started developing what appeared to be sporadic outbursts or tics, particularly towards bedtime. Soon after these manifested themselves into full body tremors. These had escalated to the point that I left my monthly trip to Washington a day early to do her being hospitalized, they were getting that bad. Two days and a handful of tests revealed that they weren&apos;t seizures or anything of the &quot;big scary&quot; variety, but it is unknown what the true cause of them were. There were no medications currently available that would cure the issue, only help lessen the effects, and the side effects seemed nearly as bad as the problem. There was a good chance that her body was going through a &quot;perfect storm&quot; of stress, body maturity, and body chemistry, so we decided to do what we could to help her get through it. A lot of signs pointed to finishing the move and getting reestablished would make them go away, so we transferred the girls back to home schooling and move we did. Some days were better than others but things have not gone away. Rylee, being as tightly bonded to her sister that she is, started getting the effects of this in her own way. She would wake up at 4 in the morning, terribly nauseous. Nothing would really settle her stomach, and she would vomit regardless of food or no food it seemed. It took about a week to two weeks to find a delicate schedule and diet to get her through the mornings without incident.&lt;/p&gt;
&lt;p&gt;You&apos;d be surprised as how much stuff you can have hidden in a house after 10 years. Having your house be on a hill so that the underneath serves as additional storage doesn&apos;t help much either 8^D The purge was hard. Time was starting to get the better of us, especially with me gone once a month for a week at a time, Jen and the girls sick a bit more frequently than usual, and Haylee&apos;s tics continuing to make things difficult at times. We were very blessed to have friends that took time out of their day and weekend to help us purge and pack. We spent quite literally up to the midnight hour finalizing what boxes needed to be packed and throwing out things that weren&apos;t truly of essential need. Moving day came and we were fortunate that everything fit into the huge truck the company brought (though they admitted they though they had brought a truck large enough for two house moves) and we were scrambling to actually throw away all the junk we had purged. Four truck loads to various dumpsters across the town (thankful to the business that let me purge a few things there) and we were ready to go. We still couldn&apos;t fit all the essentials into our two vehicles though that we wanted to bring with us. Fortunately Jen&apos;s parents were literally moving 10 days later and had room for a few of those things.&lt;/p&gt;
&lt;p&gt;It was time to leave the house, though the house didn&apos;t really want to leave us I think. During the packing time we had to actually sell it. This had problems all its own. We had bought the house back in 2006, right before the housing market had crashed. When we purchased it, we had gotten into a bad mortgage loan and was barely paying off any principal on things. 10 years later and we were barely on the other side of &quot;upside down&quot; with the loan, but still in a rough position with actually selling the house and making money. We had heard good things about selling the house ourself to avoid some of the costs and went down that road with no success. It turned out that the comps that we were given for the house won&apos;t the most accurate, or more likely, since all of the houses in our area were custom builds and a lot of them were larger, the pricing wasn&apos;t respected, despite our corner lot and nice view. Getting a bit desperate, we tried one of those &quot;we pay cash for houses&quot; type places. We were given nothing but the runaround for a week. The local representative for this company actually approached us because he knew we were getting strung along and said he could help us short sale the house. The prospect of this wasn&apos;t looking too encouraging given the financial hit we would take, but from what we had heard it wasn&apos;t as bad. But to do that we had to actually get a listing in. The crazy thing was that somebody actually made an offer on the house for the &quot;break even&quot; amount. Our potential buyers had their own issues, and timing of some of the inspections was drug out, so we moved out with a favorable chance of having things done, but no final paperwork signed. We discovered that having a lot of phone calls back and forth is nice, but the paper beats all.&lt;/p&gt;
&lt;p&gt;Finally the end of May came and we were on the road! Two vehicles packed to the gills with children, pets, immediate needs, and a 5 state trip over the course of two days ahead of us. We were an hour into our drive when Jen called me. She was nauseous, not the I ate something a little funky type of nausea, but the kind that makes you pull over to the side of the road and say a few prayers kind. It wasn&apos;t going away either. We were an hour from any major kind of stopping places in either direction. It honestly felt like something was trying to keep hold of us. We had to push forward. There was no way to have Jen&apos;s car towed or even have her tow mine because there was no room for the other person to sit. Thankfully (and prayerfully) we made it to Kingman, AZ where we were able to get a pet friendly hotel. Jen immediately crashed and slept things off and I took the girls to the pool. I also picked up some new tapping and ratcheting tie downs because the current one wasn&apos;t cutting it and there was some rain forecasted in our drive ahead. Things got better, but not by much. Our two day trip turned into five with a few extra stops along the way. We had a few more nausea incidents along the way as well. We also found out along the drive that apparently moving companies don&apos;t take standard checks or credit cards for the second half of your payment. They take money orders though, which have a limit, so we took out most of what was left in our savings to cover this. Between this and the extra hotel rooms (and food) we were putting on a CC, we were strapped to the gills pretty fast&lt;/p&gt;
&lt;p&gt;We arrived in Issaquah, Washington a few days later than planned, and literally about an hour before the moving truck showed up. This was a small blessing in that we would have our first night in our own bed. We didn&apos;t have anything setup yet and there was an extra $200 needed for the extra flight of stairs the movers had to go up. But we were here. We would get a good start on unpacking during the weekend and start adjusting to this new thing called apartment life. I was blessed that a friend from work came over on Sunday to help finish moving up a few heavy things. I rolled into my &quot;first day&quot; on the job a bit more tired than planned, but ready to continue on with the biggest project I&apos;ve ever worked on that had started at the beginning of the year.&lt;/p&gt;
&lt;p&gt;We were about two weeks in and it we were going through a longer adjustment than anticipated. The local library was nice, but the kid&apos;s program was far lacking compared to the program we had in Prescott. Most of the free events during the summer we took advantage of (art, science, etc.) just weren&apos;t available. There were several home school groups on Facebook Jen had looked into and had posted at, but she received responses from none of them, far different from what we had found elsewhere. Without a deep freeze to keep our normal stockpile of Costco goods in and a smaller fridge/freezer unit, food budget and planning had to change. Sadly we still haven&apos;t found a church to call home, even though there are two just up the block from us that show potential. Between sickness, other events, visits, and trips it has been hard to go. This may sound like an excuse to some people, but we need it to be a full family event to check these places out.&lt;/p&gt;
&lt;p&gt;However, Haylee was showing signs of improvement. There hadn&apos;t been any tics during the drive out (often a change of focus helps) and her tics had been very minimal after being out here for two weeks and making the change. Even Haylee had said something to us herself about the change. This was a great sign! Then one morning while I was gone at work the fire alarm went off. It was about 9 in the morning and everybody was still getting into the groove for the morning. I wasn&apos;t there, but there was a scramble: kids, pets, valuables. As everybody made it out Jen was then told that this was only a drill to test the devices. We weren&apos;t informed in advance. Well sort of. An e-mail was a delivered an hour later saying tests were being conducted. Haylee&apos;s tics returned, nightmares occurred over the course of a few weeks of apartments burning, animals and family lost. It was almost like we had gone back to the beginning of the year.&lt;/p&gt;
&lt;p&gt;Jen&apos;s health had caught up with her as well. A mixture between body fatigue, flu like symptoms, muscle spasms, heart palpitations, light headedness, and others came at her in various iterations. It was hard for her to get the time needed to rest and reset. Her body was showing signs as well that her thyroid levels were acting up a bit again and her endocrinologist in Arizona wasn&apos;t the most responsive. We began to find naturopaths and an endocrinologist here to build a &quot;team&quot; to get her healthy. There have been lots of doctors visits and followups to get her body back to some sense of normalcy as well.&lt;/p&gt;
&lt;p&gt;Amongst all this, Jen&apos;s parents were having issues of their own. They were in the same apartment complex as us, but they were having a rough time with the people in their building, especially with the noise. To add to this, Jen&apos;s dad&apos;s office wound up being further south than originally planned. To top it off, he had to drive another hour plus from there to meet with his potential clients. This was not working well for them. Fortunately, they came across a great opportunity and were able to purchase a house. However, it is a little over an hour away from us. I&apos;m truly excited for them and we enjoyed a great Thanksgiving break over at their new place. It has also changed some of our traditional weekly plans for &quot;nana and papa night&quot; and removed the &quot;quick pop over&quot; things we used to enjoy in Prescott.&lt;/p&gt;
&lt;p&gt;The arrival has been delayed. We knew the transition was going to be big, and there were going to be challenges to face, but this many? Even small things, like finally wrapping up the sale of our house, seemed to balloon into huge ordeals, with no room for error on timing and unnecessary headaches to work through. We finally did sell our house to the people that made that first offer, but we had to come up with an additional $900 and change to get everything paid off. Any kind of &quot;starting point&quot; to eventually build or buy a new house starts from ground zero.&lt;/p&gt;
&lt;p&gt;Around October we finally had some glimpses of change. The girls had started going to a Karate dojo nearby and have really been plugging in well with the program. The principles and tenants they hold to go far beyond the standard moves and katas they learn. They encourage and expect self discipline and respect for each other and their parents. The girls even signed up for a 1 month commitment to adhere to these principles. Most notably was seeing Rylee do her board breaking ceremony. She had written down a personal challenge on this board and using the techniques she had been practiced busted the board in half on her first try! Given how timid Rylee can be at times, there was true &quot;leveling up&quot; of her confidence, attitude, and demeanor after that event that still shows. Haylee&apos;s board breaking came a month later with just as much excitement.&lt;/p&gt;
&lt;p&gt;Outside of my work family, and they truly are like a family to me, we have made a couple of friends here. The first was from the dojo itself. The girls met another girl there that is the same age whom they have hit it off well with. Jen and their mom have a lot in common with homeschooling, so there have been some common ground in which to build from. What was particularly nice is that they had invited us up to their place in Snoqualmie to go trick or treating. Their house was tucked in an area where there were plenty of houses to visit, but no crazy lines or groups like we typically experienced in Prescott on Mt. Vernon street. This gave the kids time to run around and the parents to talk more and they attend a church not too far away that sounds really promising as well. While it could be dismissed as &quot;nothing big&quot; gesture, having their family invite my family over to partake in an event like this was big. We also hit it off really well with the couple that lived on the floor right below us. They have a similar love of books, puns, games, and overall life that meshes well with ours and we can easily talk for hours on end. We&apos;ve also setup the &quot;husband on loan&quot; program when an extra set of strong arms are needed for moving a few things. We&apos;ve done some pet sitting swapping as well and overall love to just run into them whenever we can, both for diner or going to the farmers market.&lt;/p&gt;
&lt;p&gt;Finally we have our third home &lt;em&gt;(yep, remember how I opened up this?)&lt;/em&gt;. With the apartment so close to the main street, the fire alarm, the dog barking whenever a door slammed on the first floor, and crazy rent (we&apos;re paying about 1K more than our mortgage was), things were becoming unbearable. Jen had found out that once we were here 6 months, we were eligible to transfer to other units in the complex for a small transfer fee. All the first/last month fees were waived. She took the girls down and looked at some of the Townhouses that were available and absolutely fell in love with one. I quickly fell in love with it too. It is actually smaller than the apartment was, we went from a three bedroom to a two bedroom. However, the kitchen / dining / living room layout was a nice and simple open one that we were able to play with. There was a desk with some cabinet space in the kitchen area that can serve as Jen&apos;s study area and apothacary desk. The unit also comes with a rather large tandem garage. It is large enough that we are able to close up storage unit (money saved) and move everything in to there, park my truck, and have Jen&apos;s car in the driveway. While small, we actually have a back yard. The &quot;grounding&quot; you can get by simply walking barefoot into the mossy grass is profound in its own way. The walls are a bit thin, but overall the neighbors are pretty quiet and it is odd having such a silent house to sleep in again. Since it is a winter contract, we are saving roughly $300 a month on rent and since the guinea pig and hamster died &lt;em&gt;(oh yeah, I forgot to mention that above)&lt;/em&gt; we were able to qualify the dog and cat as ESAs for the girls and so they are pet rent free. The ability to actually put money into savings for our end game can finally start.&lt;/p&gt;
&lt;p&gt;But most importantly, it &lt;strong&gt;feels&lt;/strong&gt; like home. You climb up the stairs after a day of work and you have a warm, inviting place with a huge batch of bookshelves, a table in which to play games and talk about the day, and can then go upstairs to retire for the night with a nice window view to greet you for a new day. We had Jen&apos;s folks over for Christmas day and it was everything we had wanted it to be.&lt;/p&gt;
&lt;p&gt;I&apos;ve tried to make sense of all of this. Why so much struggle, and burden, and long nights along the way through all of this. I&apos;ve asked God about this off and on through the year and don&apos;t have any solid answers or even remote ideas about what all of this means, but I do have three things that I&apos;ve learned (or have had reinforced) through this all:&lt;/p&gt;
&lt;p&gt;First: God&apos;s timing is far different from my own, and far better. I can&apos;t really point to anything in particular and say &quot;oh yeah, that&apos;s why we had to wait for that&quot;, but what I can point to is that when we absolutely &lt;em&gt;needed&lt;/em&gt; something, like a check to go through to handle the rent, or particular resource to be available to help the family, it simply was there. It often came out of an unexpected place, but it simply was.&lt;/p&gt;
&lt;p&gt;Second: God loves us, plain and simple, and I need to trust that. Late one night I had clicked through to a blog post a friend had shared. The gist of it revolved around a mom who had an ailing son and how everyday she would prepare her &quot;court document&quot; of prayers and things to do to present before &quot;god the judge&quot; to make sure that she got was she wanted (her son&apos;s health) in the end. It is amazing how sometime we can &quot;craft&quot; our prayers or our attitudes in such a manner, as if we&apos;re sly enough to present our matter before the &quot;court of god&quot; in order that we work the system to our favor. The post came to a head when one of her particular prayers weren&apos;t answered and she was upset. She goes to God&apos;s house one night to argue her case and why it should be answered. When she gets there and sits down in her office, she begins to notice pictures of her son in his office. Drawings he&apos;s made for him, pictures of them together at various events. She then realizes that God loves us, no matter what. He is good and just and actively cares about us. He will work things out in his own way, and all this &quot;legal mumbo jumbo&quot; to some extent was insulting. We should simply present our requests and trust in Him.&lt;/p&gt;
&lt;p&gt;Third: Daily (and hourly) Bread. The Lord&apos;s prayer came up during some of my morning Bible reading and the sentence &quot;Give us this day our daily bread&quot; really hit home. Shortly after this I even began to talk to God out loud while in the car or walking the dog. It may seem kind of weird (on either side of the coin really) but aside from the group prayers I would say at a meal, I typically prayed &quot;in my head&quot; or &quot;in my silence&quot;. It seemed like if I wasn&apos;t vocalizing it, I was really engaged with the person I trust with my life. So I talked more, and in doing so, I talked more about the daily bread needs: have this paperwork done, have Jen make it through the day without any major health issues so I can take care of the kids the following day. The worries of tomorrow, or next week, were so far away, and so far irrelevant to the needs of the day. At times, especially during the road trip to Washington, the needs were hourly. Just get Jen to this next major city without issues and we can rest. Just let the hotel have this particular need of ours. Things like that. Things got a lot more real through this process and they didn&apos;t get &quot;better&quot; per se, but they were manageable, knowing that the creator of the universe was alongside me, and I suspect often enough times carrying me.&lt;/p&gt;
&lt;p&gt;That, as they say, is the road so far.&lt;/p&gt;
&lt;p&gt;The Patterson&apos;s have finally arrived home in Washington. We are eager to see what adventures await us in 2018.&lt;/p&gt;
</content:encoded></item><item><title>The Joys Of Home Ownership</title><link>https://dillieo.me/posts/growth/2017-04-12-the-joys-of-home-ownership/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2017-04-12-the-joys-of-home-ownership/</guid><description>home-ownership</description><pubDate>Wed, 12 Apr 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Me: Wow! I&apos;ve been selling a lot of stuff we don&apos;t want to take with us. This should nicely cover our hotel travel and maybe a few meals...&lt;/p&gt;
&lt;p&gt;Dryer: Perfect timing! I&apos;ve been wanting to eat up some cash for a while now, so let me go ahead and bust my heater coil for you now. [:: slurp::]&lt;/p&gt;
&lt;p&gt;Me: Well, at least I can get a few burritos for the family now... [:: sigh::]&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Running Sitefinity In Azure Services</title><link>https://dillieo.me/posts/development/2017-03-21-running-sitefinity-in-azure-services/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-03-21-running-sitefinity-in-azure-services/</guid><description>sitefinity_logo1.jpg</description><pubDate>Tue, 21 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple years back, I outlined how you could get &lt;a href=&quot;http://www.sitefinity.com&quot;&gt;Sitefinity&lt;/a&gt; running on an &lt;a href=&quot;/installing-sitefinity-with-iis-8-sql-server-2012-and-windows-server-2012&quot;&gt;Azure VM&lt;/a&gt;. However, with a new dev environment to setup, more advancements in hosting platforms, I went back to see if I could get my Sitefinity site running through the typical Azure App and Database services. Good news is you can and it&apos;s quite simple.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Install Sitefinity&lt;/h2&gt;
&lt;p&gt;Go ahead and install Sitefinity in your local dev environment as you normally would. There isn&apos;t anything particularly special you will need to do here.&lt;/p&gt;
&lt;h2&gt;Setup Azure Services&lt;/h2&gt;
&lt;p&gt;Setup your Azure App Service and Database Service like you normally would. I like to put them together in a resource group and use the standard S0 or S1 configurations, based on your performance needs. The nice thing is that you can scale up (and out) at anytime.&lt;/p&gt;
&lt;h2&gt;Migrate Database&lt;/h2&gt;
&lt;p&gt;Azure Database Services uses a slightly different version of SQL Server 2016, so you won&apos;t be able to use SQL Server Management Studio like you normally would. However, there is a fabulous tool called &lt;a href=&quot;https://sqlazuremw.codeplex.com&quot;&gt;SQL Azure Migration Wizard&lt;/a&gt; that will read the database, generate a script, and then run it against the Azure database. Just make sure you&apos;ve opened up your firewall to connect.&lt;/p&gt;
&lt;h2&gt;Update Files and Deploy&lt;/h2&gt;
&lt;p&gt;The nice thing is that as far as file modifications are concerned, the only thing you need to do is to update your project file to make sure all your core files, themes, and Sitefinity assets are &quot;Included in the Project&quot;. From there, simply modify the &lt;code&gt;App_Data/Sitefinity/Configuration/DataConfig.config&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;file to use your Azure connection string make sure the &quot;dbType&quot; parameter is set to &quot;SqlAzure&quot;.&lt;/p&gt;
&lt;p&gt;From here you can use the web deployment wizard to connect to your Azure account, target or create an App Service, and deploy the site. You&apos;re up and running in no time!&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Manually Run Ef Migrations On External Databases</title><link>https://dillieo.me/posts/development/2017-02-28-quick-tip-manually-run-ef-migrations-on-external-databases/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-02-28-quick-tip-manually-run-ef-migrations-on-external-databases/</guid><description>quick_tip_banner</description><pubDate>Tue, 28 Feb 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Entity Framework migrations are a great thing. They&apos;ve made my development life a LOT easier. Automated migrations can cause problems, especially on a project with multiple developers involved. For that, we use manual migrations through the Package Manager Console.&lt;/p&gt;
&lt;p&gt;But how do you manually run these migrations against your test (or live) server when your deployment tool doesn&apos;t run them? If you have access to the database in question, you can add the ConnectionString and ProviderName parameters at the Package Manager Console prompt and make life a lot easier:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Update-Database -ConnectionString &quot;MY_CONNECTION_STRING&quot; -ConnectionProviderName &quot;System.Data.SqlClient&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can pull your connection string direct from your web.config transform, no special &quot;magic&quot; needed.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Prayer Odyssey Progress</title><link>https://dillieo.me/posts/development/2017-02-08-prayer-odyssey-progress/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-02-08-prayer-odyssey-progress/</guid><description>prayer_odyssey_updates</description><pubDate>Wed, 08 Feb 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes progress can be slow, but it is still worth it...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://prayerodyssey.wordpress.com/2017/02/08/coming-soon-updates/&quot;&gt;https://prayerodyssey.wordpress.com/2017/02/08/coming-soon-updates/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Family Tech Life360 And Prodigy</title><link>https://dillieo.me/posts/development/2017-02-01-family-tech-life360-and-prodigy/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-02-01-family-tech-life360-and-prodigy/</guid><description>life360</description><pubDate>Wed, 01 Feb 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As technology continues to grow more and more in our lives (and family), here are a couple tools that we have really been enjoying as of late: &lt;a href=&quot;https://life360.com/&quot;&gt;Life360&lt;/a&gt; and &lt;a href=&quot;https://prodigygame.com&quot;&gt;Prodigy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Life360&lt;/h2&gt;
&lt;p&gt;With our kids in public school, and their increasing extracurricular activities such as dance, book club, and robotics, we decided to get our kids smart phones. We keep the usage limited to just phone calls/texts from immediate family and the occasional game. However, we wanted to be able to do some location tracking to help keep track on when people are leaving school, showing up at various places, without a huge hassle.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;https://life360.com&quot;&gt;Life360&lt;/a&gt;. This app (for web, Android, and iOS) allows you to register for free and setup &quot;circles&quot; of friends/family in which you want to keep dibs on. You can have 4 members (and I believe even more) for free and the app will essentially report it&apos;s location every so often that allows you to see on a map. This is perfect for a quick status check. You can also have messages that are sent out to everybody in the circle, which saves a couple of steps from setting up a group chat in text messaging or something similar. We had a little bit of a glitch getting one of our Android phones setup, but other than that it was pretty smooth to get things up and running, especially since the circle creator can invite others via text message (that includes a download link).&lt;/p&gt;
&lt;p&gt;The really slick feature is the &quot;places&quot; feature. You can register (by address) up to 2 places for free (say home and school) and anytime a member in the circle arrives or departs from there, you get notified. This has become great for me to track when the kids are coming home from school, so I can pop up from the office to say hi. Another great feature is the check-in feature, for which there is no limit. It&apos;s a quick two taps at a location to send a message that you&apos;ve arrived. This is great for airport arrivals, running errands, and other things. There&apos;s no need to post to Facebook or anything else along those lines.&lt;/p&gt;
&lt;p&gt;Life360 provides unlimited places and a plethora of other features in their paid plus and premium plans (such as 24/7 live advisor, roadside assistance, and location history). For us they aren&apos;t needed, but they sound like they could be handy to some people.&lt;/p&gt;
&lt;h2&gt;Prodigy (Math Game)&lt;img src=&quot;@assets/images/posts/2017-02-og-image.jpg&quot; alt=&quot;og-image&quot; /&gt;&lt;/h2&gt;
&lt;p&gt;Looking for a way for your kids to be literal &quot;math wizards&quot;? A year or so back my wife stumbled up on &lt;a href=&quot;https://www.prodigygame.com&quot;&gt;Prodigy&lt;/a&gt; for the kids. Kids sign up (with randomized names for privacy), create their wizard, and start questing! They have simple tasks (such as find objects and return them) to accomplish, but as they journey through the land, they will come across various monsters (they look rather cute) that they must battle.&lt;/p&gt;
&lt;p&gt;Being wizards, they must cast their spells, by solving math problems! When a child first signs up they indicate their grade level so that the questions are grade appropriate. A successful answer will cast the spell, and a wrong answer will cause the spell to fail. However, there are various tutorials along the way during the &quot;spell casting process&quot; to help with the various types of problems, so that they can learn from their mistakes.&lt;/p&gt;
&lt;p&gt;As kids continue on their quests, they will &quot;level up&quot; to get new powers, including pets that can join them and help fight against the monsters on their journey. They&apos;ll receive coins and gems, which can be used to by special costumes and other things that add a bit of &quot;flare&quot; to the wizard&apos;s journey. Since the service is online, there is the potential to add &quot;friends&quot; in which to share messages and find in the realm, but we&apos;ve never bothered with it and it doesn&apos;t detract at all from the experience.&lt;/p&gt;
&lt;p&gt;With the paid plan (which we decided to go for), you can customize which kinds of math problems your kid receives and get a full history of how they are doing in the various areas. By doing this we were able to give our girls a little more quizzing with fractions when they were struggling, and then balance it out to normal afterwards. As an added perk, the kids get access to special reward chests when winning a battle as well as gaining access to the &quot;infamous Dark Tower&quot;, which they enjoy. With the amount of time and interest the kids are having with this (oh yeah, they&apos;re sharpening their skills too!) we found this an amazing investment, even after they transitioned over from homeschool to public school. I highly recommend you give the free version a whirl with your kids and see if you want to expand to a membership from there.&lt;/p&gt;
&lt;h2&gt;Et Vous?&lt;/h2&gt;
&lt;p&gt;What tech tools are you using with your family? We&apos;re always on the look out for something new!&lt;/p&gt;
</content:encoded></item><item><title>Technical Note Rant Keep Core App Functionality Consistent</title><link>https://dillieo.me/posts/development/2017-01-19-technical-note-rant-keep-core-app-functionality-consistent/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-01-19-technical-note-rant-keep-core-app-functionality-consistent/</guid><description>outlook-logo</description><pubDate>Thu, 19 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;re moving into a time when most apps need to run on multiple platforms in order to be impactful and effective. I&apos;m working from a MacBook Pro, but will often do quick followups on issues from my iPhone, or even from my Android tablet if I&apos;m really in a bind. Sometimes I just need to borrow a web browser really quick to make sure that a certain task was completed. One of the key things to this however is to have consistent functionality across these platforms. Case in point, the current state of Microsoft Outlook.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been a fan of Outlook for quite a while now. The fusion of the calendar and e-mail in a single app, plus the conversational view and management of multiple accounts, makes it a powerful tool. To add to this, Outlook offers a free Android / iOS that is one of the best out there. With a &quot;focused&quot; inbox and simple, yet powerful calendar component (thanks to the Sunrise acquisition), I can keep on top of three accounts (and two calendars) little hassle.&lt;/p&gt;
&lt;p&gt;The problem that arises is that the core functionality between these platforms is broken. The Windows version of Outlook allows you to subscribe (sadly in a read-only mode) with a Google Apps calendar using their &quot;Internet Calendar&quot; feature. However, on the Mac version, this feature has been removed completely. Since I use a Mac primarily, and our company is Google Apps based, this leaves me in a bind. I could keep my Windows 10 Virtual Machine running in &quot;Unity&quot; mode all day and use Outlook for Windows, but the Windows version doesn&apos;t have a &quot;consolidated inbox&quot; feature like the Mac version does. I can add multiple Inboxes to my favorites, but really I&apos;m still jumping between three different views whenever I get notified a new message has come in. Outlook for Mobile (iOS in my case) does the consolidated inbox and Google calendar fabulously. I get the bonus of the focused inbox AND I can schedule events to my work calendar. However, I spend most of my day at the computer, and not on my phone, and I don&apos;t want to be typing messages from my phone all day.&lt;/p&gt;
&lt;p&gt;With the Sunrise acquisition, there shouldn&apos;t be any reason why the desktop version of Outlook is still lacking full Google calendar support. Additionally, the consolidated inbox feature is pretty common place and should be easily implemented in the Windows version. While I completely understand how each platform (desktop, web, mobile) has a unique workflow and experience, having a mismatch of these core features across these platforms makes for a frustrating experience, especially when you don&apos;t want to be learning a new tool (and its idiosyncrasies) depending on what platform you want to work from. For the time being I&apos;m stuck using 3 different programs to manage my mail, calendar, and task list (of growing importance) in my desktop environment when it should really just be one.&lt;/p&gt;
&lt;p&gt;This is a good reminder that if you&apos;re going to tout / leverage multi-platform availability for your app, make sure the core features are available across them all. Just like an inconsistent UI can ruin a good app, having an inconsistent feature set across the varying platforms, especially as users are using a diverse set these days, can ruin the credibility of the app.&lt;/p&gt;
</content:encoded></item><item><title>The Long Game</title><link>https://dillieo.me/posts/development/2017-01-16-the-long-game/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-01-16-the-long-game/</guid><description>A photo by Priscilla Westra. unsplash.comphotosYeBXoqD_VOo</description><pubDate>Mon, 16 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m not sure about you, but for myself, I have a hard time thinking what lies beyond this coming week...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Between school schedules, work projects, work meetings, chores around the house, assisting with meals, family events, and more, I tend to just focus on making it through the week, often one day at a time. I&apos;ve gotten into a bit of a routine to help me through each weekly &quot;sprint&quot; of life and not make it too chaotic. Keeping a mindset on just one week at a time helps keep things digestible.&lt;/p&gt;
&lt;p&gt;Now the perspective needs to shift a bit. We are &lt;a href=&quot;/chapters&quot;&gt;Washington bound&lt;/a&gt;. There&apos;s a lot to be done before then: purging old things from the house, selling some things. boxing up things, getting the house ready for sale, actually selling the house too. On top of that there&apos;s looking for houses/land in Washington to buy, though the prospect of renting for a little and saving up a bit more given the housing landscape seems a bit more reasonable at this point. Then there is the move itself and unloading everything once we get there and a new drive to work to adjust to.&lt;/p&gt;
&lt;p&gt;This isn&apos;t happening within the one week timespan that I&apos;m used to. The plan is to be out in Washington by July, but things could change in March if the house sells quickly. But thinking in a &quot;monthly&quot; frame of mind instead of a &quot;weekly&quot; frame of mind brings up its own challenges and changes. Sickness has plagued the house in one form or another since the day after Christmas, so the packing and sorting plans have not gone as intended. However, we still have a long road ahead and we can &quot;pick up the pace&quot; a bit to help. We have been able to do a lot of house hunting and researching during this time, which is something that could have been reserved for later, so there is flexibility there.&lt;/p&gt;
&lt;p&gt;The most interesting part is continuing in the day to day routine that is already laid out while being mindful of the future at the same time. It&apos;s new, and different, and reminds me of a lot of my distance running training from college (and RAGNAR runs). How often do we plan and train and run with a perspective set out far ahead of us instead of &quot;just surviving&quot; to the end of the week? While I know that life can change abruptly at any moment, seeing something in the long game provides some focus, some planning, some picture of endurance that I think is healthy to one&apos;s personal growth and something I should start doing more of beyond the six months on the horizon to move my family across three states.&lt;/p&gt;
</content:encoded></item><item><title>Five Random And Semifamous Things You May Not Know About Me</title><link>https://dillieo.me/posts/development/2017-01-04-five-random-and-semifamous-things-you-may-not-know-about-me/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2017-01-04-five-random-and-semifamous-things-you-may-not-know-about-me/</guid><description>wallpaperz-random-17724984-1920-1080</description><pubDate>Wed, 04 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So here we are, a brand new year and I thought I&apos;d go off on a tangent and see if I can shock and amaze folks with a few things you may not know about me...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;I Wear a Toe Ring&lt;/h2&gt;
&lt;p&gt;Yep, my &quot;wild and rebellious&quot; nature (plus my random interest in them) led me to get one. I convinced my wife to get one with me on our honeymoon in Hawaii. They match and I can always call it my &quot;backup wedding ring&quot; if something happens.&lt;/p&gt;
&lt;h2&gt;Jeff Atwood Called Me Out Once&lt;/h2&gt;
&lt;p&gt;Yes, that &lt;a href=&quot;https://blog.codinghorror.com&quot;&gt;Jeff Atwood&lt;/a&gt;, the co-founder of StackOverflow had an issue with the way I had &lt;a href=&quot;http://stackoverflow.com/questions/153524/code-to-logging-ratio#153547&quot;&gt;answered this question&lt;/a&gt;. He had enough of a concern that he even wrote a &lt;a href=&quot;https://blog.codinghorror.com/the-problem-with-logging/&quot;&gt;blog post&lt;/a&gt; about it. I appreciated the nod and his concern, but I still think I&apos;m right, especially when you setup the tools to handling the logging right 8^D. For what it&apos;s worth, it even spawned a &lt;a href=&quot;http://stackoverflow.com/questions/231903/how-much-to-log-within-an-application-and-how-much-is-too-much/231988#comment68719563_231988&quot;&gt;followup question&lt;/a&gt; on the issue as well.&lt;/p&gt;
&lt;h2&gt;I Was a (2 Points Away From LV3) Yu-Gi-Oh Judge and Had A Popular App&lt;/h2&gt;
&lt;p&gt;After reading a random article in the LA Times, I was intrigued, and then hooked on the Yu-Gi-Oh trading card game. I drug my wife and brother in law into the mix. I was a bit sheepish about actually competing, so I wound up being a judge, which had a lot of rewards in it&apos;s own right. Along the way I joined up with a couple of people and built a deck building tool, as well as maintained the &quot;unofficial official&quot; rulings site for a while. It was kind of cool to help judge at a tournament and hear, &quot;Oh you&apos;re the Deck Studio / Netrep guy. Thank you!&quot; It&apos;s the small things. It&apos;s pretty old, but the code is available &lt;a href=&quot;http://ccgtoolkit.codeplex.com&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Roy Osherove Hired Me Once&lt;/h2&gt;
&lt;p&gt;Yep, that &lt;a href=&quot;http://osherove.com&quot;&gt;Roy Osherove&lt;/a&gt;, known for his test driven development, continuous deployment, and a few &lt;a href=&quot;http://osherove.com/tools&quot;&gt;cool tools&lt;/a&gt; back in the day (I love Regulator). I happened to been the right place at the right time when he was looking to have somebody help him migrate is blog to a new platform. I was a little nervous, but Roy was really nice, paid me a nice $500 for about a week of work (helps when you have kids!) and made me open source the project (no complaints here). You can download that project &lt;a href=&quot;https://github.com/Dillie-O/blogmigrator&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;I&apos;ve Been to France twice and Have NEVER Seen the Eiffel Tower&lt;/h2&gt;
&lt;p&gt;Yep, it sounds pretty crazy, especially considering each trip was a month long! I spent a couple of summers building some websites and doing volunteer work for an &lt;a href=&quot;http://editionscle.com&quot;&gt;amazing organization&lt;/a&gt; that helps give books, published material, software, and other resources into the hands of Christians in France. For both trips, I had to get off the plane and immediately grab the Subway / TGV to get out of Paris to my final destination. Both times when I flew in it was so overcast I couldn&apos;t see a thing out the window. C&apos;est la vie. Maybe one day I&apos;ll make it back with the entire family.&lt;/p&gt;
&lt;h2&gt;And You?&lt;/h2&gt;
&lt;p&gt;What random (and semi-famous?) things do people not know about you? It&apos;s always a great conversation starter.&lt;/p&gt;
</content:encoded></item><item><title>2016 Blogging In Review</title><link>https://dillieo.me/posts/development/2016-12-30-2016-blogging-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-12-30-2016-blogging-in-review/</guid><description>2017-1</description><pubDate>Fri, 30 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another year has come and gone and being the data junkie that I am, it&apos;s time to take a peek and see what was new and interesting by the numbers...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;By the numbers: Down a Bit&lt;/h2&gt;
&lt;p&gt;My total views / visitors was down from the previous year, for the first time ever. It isn&apos;t a huge drop, but considering I was able to stick to my goal of averaging 2 blog posts a week, I was a little surprised that the traffic wasn&apos;t at least steady. Last year was the big &quot;10 Days to a Better Blog&quot; series, and community, that had fallen away, so maybe there is a chance that&apos;s where I was getting some extra traffic from. Ultimately &lt;a href=&quot;/why-i-blog&quot;&gt;I blog for myself and to share the love&lt;/a&gt;, so the numbers don&apos;t phase me much, but the data junkie in me wants to tweak them out, dissect them, and find out why.&lt;/p&gt;
&lt;h2&gt;Top Posts of the Year&lt;/h2&gt;
&lt;p&gt;Out of the 104 posts that went live this year, here are the top 5:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/database-migrations-with-azure-ef7-and-dnx&quot;&gt;Database Migrations with Azure EF7 and DNX&lt;/a&gt; - I&apos;m actually quite happy this is my top post because this was the biggest helper to me on a big project earlier this year and I was able to leverage some emerging.Net technology.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/quick-tip-run-entityframework-migration-seeds-for-migratedatabasetolatestversion-configuration&quot;&gt;Quick Tip: Run EntityFramework Migration Seeds for MigrateDatabaseToLatestVersion Configuration&lt;/a&gt; - Another quick tip that saved my butt this year!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/chapters&quot;&gt;Chapters&lt;/a&gt; - One of my newer posts, but one huge milestone for our family (spoiler: I was promoted and we&apos;re moving! 8^D).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/bitcoin-alert-hashocean-potential-scam&quot;&gt;Bitcoin Alert – HashOcean: Potential Scam&lt;/a&gt; - I learned my lesson this year (&lt;a href=&quot;/bitcoin-alert-hashocean-diary-of-a-scam&quot;&gt;here&apos;s the followup&lt;/a&gt;) about making sure to check in to your Bitcoin resources thoroughly before investing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/soup-to-nuts-access-vmware-fusion-net-apps-from-your-mac&quot;&gt;Soup to Nuts: Access VMWare Fusion.Net Apps from Your Mac&lt;/a&gt; - Another big helper post for me that has made my.Net App web testing so much more powerful, since I can do immediate Safari / iPhone testing now as well.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Something Old&lt;/h2&gt;
&lt;p&gt;It&apos;s funny how some things never change. For a musings on live / technology blog, my overall #1 post was still on &lt;a href=&quot;/quick-tip-how-to-peel-frozen-bananas&quot;&gt;how to peel a frozen banana&lt;/a&gt;. It&apos;s kind of crazy that it&apos;s the 7th result on Bing and 3rd result on google if you search &quot;how to peel a frozen banana&quot;. Maybe I should sell ad space now or something 8^D&lt;/p&gt;
&lt;h2&gt;Something New&lt;/h2&gt;
&lt;p&gt;This past year I took up a GoodReads challenge and set a goal to read 10 books for 2016. I felt this was fair since I tend to be a slow reader. I surprised myself and &lt;a href=&quot;https://www.goodreads.com/user/year_in_books/2016/42349498&quot;&gt;read 14 books&lt;/a&gt; (and sooo close to finishing #15!) and I really enjoyed it. I failed miserably at &lt;a href=&quot;/freeform-friday-2&quot;&gt;the task that inspired my reading&lt;/a&gt;, but I think I still succeeded in the grand scheme of things. I&apos;m already building a list for 2017.&lt;/p&gt;
&lt;p&gt;##...on to 2017&lt;/p&gt;
&lt;p&gt;I still like the current routine I am in for blogging. Twice a week seems like a good routine, without being too pressured to get things done (though it did feel like it at a times 8^D). The &quot;Freeform Friday&quot; thing I put in mainly as a backup in case I forgot to post actually wound up being pretty fun and became pretty random (in a good way) I might try to make that a weekly ritual. I fell out of my morning routine for blogging and plan to return to that again, since I think the overall flow of the posts were better as well.&lt;/p&gt;
&lt;p&gt;Here&apos;s to 2017 and what lies ahead!&lt;/p&gt;
</content:encoded></item><item><title>2016 In Photos</title><link>https://dillieo.me/posts/growth/2016-12-28-2016-in-photos/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-12-28-2016-in-photos/</guid><description>clouded_sunset</description><pubDate>Wed, 28 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It feels like I haven&apos;t taken as many photos this year that I&apos;ve filed under &quot;L&quot; for Life, but there were still a handful that I considered my favorite. You can check them out in my Flickr album.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://flic.kr/s/aHskRwH8Cv&quot;&gt;https://flic.kr/s/aHskRwH8Cv&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s to a 2017 full of more pics!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Last Christmas</title><link>https://dillieo.me/posts/growth/2016-12-22-last-christmas/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-12-22-last-christmas/</guid><description>Courthouse Christmas Lights</description><pubDate>Thu, 22 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m a firm believer that home is where your family is, and not just a a set of walls and a roof. Yet at the same time, there is a lot of memories that have soaked into these four walls and roof that can&apos;t be moved elsewhere.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;With our &lt;a href=&quot;/chapters&quot;&gt;upcoming move&lt;/a&gt; to Washington next year, it dawned on me earlier this week that this would be the last Christmas we have at our current house. Christmas is my favorite holiday of them all, so I always have a little extra gusto and energy going into this holiday and the memories are that more potent.&lt;/p&gt;
&lt;p&gt;I know the most important part of Christmas is celebrating Christ&apos;s birth with my family. That can be done anywhere. I have the memories of listening to my girls&apos; sing carols. I have the memories of their first &quot;Walk through Bethlehem&quot; where they got a glimpse into the time and place the world changed. I have the memories of wonderment and joy as they ask questions about Santa and track him online throughout the day. Oh yeah, and there&apos;s &lt;a href=&quot;/a-bit-of-christmas-magic&quot;&gt;the Polar express&lt;/a&gt;. I have the memories of sitting with Jen and just enjoying that moment of peace with the family as everybody settles in for a day of rest. These memories apply anytime and anywhere.&lt;/p&gt;
&lt;p&gt;I also feel the pull of the house in which a lot of these memories were made. I have the memory of looking out onto our deck having our first full fledged white Christmas. I have the memory when my girls had the first white Christmas they can remember. How many years now have I put lights up on the roof? All 10 come to think of it, and there&apos;s a pattern and a routine that I rather enjoy that goes away. That same hallway will no longer have a coating in wrapping paper &lt;em&gt;[though Jen might be happy about that one 8^D]&lt;/em&gt;. There are smells and touches and sounds that go away.&lt;/p&gt;
&lt;p&gt;So this is a &quot;last Christmas&quot; of sorts. I&apos;m mindful of the memories tied to this location and time and how special they are. But I&apos;m also excited for the Christmases to come. There is a new roof (out there somewhere) that will make my acquaintance to share LED C9 bulbs with. I&apos;m excited for the continued memories, and songs, and cookies &lt;em&gt;[oh my yes!]&lt;/em&gt; and the crazy new things and that will happen somewhere 3 states away.&lt;/p&gt;
</content:encoded></item><item><title>Toolkit Upgrade</title><link>https://dillieo.me/posts/development/2016-12-15-toolkit-upgrade/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-12-15-toolkit-upgrade/</guid><description>Toolkit Upgrade</description><pubDate>Thu, 15 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Like most developers, you&apos;re refining your core toolkit based on new tools you find and ones that lose their effectiveness. I&apos;ve updated my developer toolkit page reflecting that, plus adding some new tools (for APIs and Passwords). Give it a peek if you&apos;re interested:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/developers-toolkit&quot;&gt;Developer&apos;s Toolkit&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Five Tips For Remote Developers</title><link>https://dillieo.me/posts/development/2016-12-13-five-tips-for-remote-developers/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-12-13-five-tips-for-remote-developers/</guid><description>man-person-hands-coffee</description><pubDate>Tue, 13 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I &lt;a href=&quot;/the-remote-worker-one-month-in&quot;&gt;first shifted my career&lt;/a&gt; to one as a remote developer, it was admittedly a bit daunting. I was transitioning from a slower paced government position to a fast paced consulting firm. I was jumping heavy into PHP (alongside my.Net work) which I wasn’t fully versed with yet, and I even switched from PC to Mac to be on the same page with the development setup at the main office. Five and a half years later I’m still running strong and have a pretty good take on how to make it work. While my remote developer status will be &lt;a href=&quot;/chapters&quot;&gt;coming to an end soon&lt;/a&gt;, here are the five key things that have helped me be successful.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;1. Communicate (Real Time)&lt;/h2&gt;
&lt;p&gt;It’s easy to get out of sync with a project, or your fellow developers when you’re not in the loop. It’s also important to have fellow developers to collaborate with when you’re stuck on a problem or designing something new. E-mail can be slow to get a response from and can get lost in the pile of other e-mails.&lt;/p&gt;
&lt;p&gt;Pick a tool: Google Hangouts, Slack, FB Messenger, anything really, and make sure you log into that first thing in the morning. Make sure your everybody else knows you’re available there as well. If multiple tools are being used, check out a tool like &lt;a href=&quot;https://adium.im&quot;&gt;Adium&lt;/a&gt; or &lt;a href=&quot;http://meetfranz.com&quot;&gt;Franz&lt;/a&gt; (my current favorite) that puts all your tools in one place. When you need a quick video chat with a screenshare option, check out &lt;a href=&quot;https://appear.in&quot;&gt;Appear.In&lt;/a&gt;, which runs right out of your browser with no hassle.&lt;/p&gt;
&lt;h2&gt;2. Stick to a schedule and leverage your flexibility&lt;/h2&gt;
&lt;p&gt;While I’m sure there are plenty of remote developers that enjoy sporadic work throughout their day (and weekend), this has never been the case for me. With multiple projects typically on my plate, and the need to be available for questions from clients and fellow developers (see #1), the need for a more standard 8 to 5 / 9 to 6 schedule is very important. It provides consistency for you and your team, which is very valuable during a “app crash / fire” and also provides a better divide between your work life and your personal life. I’m a firm believer in keeping that balance. If you do work better late at night, by all means make that part of your schedule, just make sure HQ knows about it so they can count on your accordingly.&lt;/p&gt;
&lt;p&gt;You do have the flexibility of not being connected to an office and you can definitely take advantage of that. When my wife had thyroid cancer and was going through treatments, I was able to augment my schedule to work early mornings and late nights, since during the day I was taking care of her and the kids. In an “hourly” type setup, I was able to work extra time on a Monday and Wednesday in order to take a half day on Tuesday to drive her to a doctors appointment. This flexibility allowed me to not use up a lot of PTO and still get work done in a timely fashion. If you use this flexibility as the exception, and not the norm, you can maintain productivity and typically not run into any concerns with your employer.&lt;/p&gt;
&lt;h2&gt;3. Communicate (Daily)&lt;/h2&gt;
&lt;p&gt;While keeping an open channel to communicate is good, it is also important to let others know (project managers, the big boss, etc.) what you’re doing on a day to day basis. That way others know progress that is being made and whether or not to shift you onto another project or not. Taking a page from my first “full SCRUM” project a few years back, I created and started sending a “DVS” e-mail, which stood for &lt;a href=&quot;/a-fresh-perspective-two-years-and-counting-as-a-remote-worker&quot;&gt;daily virtual standup&lt;/a&gt;. This e-mail is really simple: outline what task(s) you did for which client(s) yesterday, what task(s) you plan on doing for which client(s) today, any roadblocks or questions you have, and any final comments (taking a half day, random chatter, etc.) You can put this together in five minutes or less, but the impact it makes is huge. My boss liked this so much that he started requiring it for other employees that were working out of office for the day and our Asia office sends one as well to help keep everybody in the loop. Want to use it? Here’s the basic text template &lt;a href=&quot;https://gist.github.com/Dillie-O/7a1355d6e91cf202e7ea4e6e4e8b5ce1&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;4. Tools and Focus&lt;/h2&gt;
&lt;p&gt;These two fuse together because this is a digital and physical thing. When I first started, we carved out part of our guest bedroom / den to be my workspace. I kept the door open just for some air circulation and ambient noise. During this first week, there were plenty of distractions between the kids coming in to see daddy (they were only 5 at the time), me going out to check on things because I thought I heard a crash or something else going on. After the first week we both looked at each other and thought at the same time “this isn’t going to work with me here like this.” Fortunately, we had a detached downstairs “workshop/storage” space with our house that became my office. This gave me a more isolated space in which to focus and work. I still keep the door open, but when it is shut, the kids know a meeting is in progress and to wait. If you don’t have a “detached” room in which to work, I’ve seen a few places where a little egg crate put inside the office room makes for a good sound insulator. Not perfect, but with the door shut (and an “open/closed for visitors” sign) in place you could get the same effect.&lt;/p&gt;
&lt;p&gt;With an isolated environment in place, the next step became to increase focus and productivity. I don’t have as much distraction by outside sources (Facebook, news, games, etc.) but more from within. When e-mails from multiple projects, plus the occasional question from an old client, and an IM or two from a coworker (or three) needing help with something come flying in, it can get crazy fast. With that in mind, I keep (well, try to with the best of my ability) a personal kanban board (using &lt;a href=&quot;https://www.trello.com&quot;&gt;Trello&lt;/a&gt;) with my tasks for the day. I make sure not to overload this, and it also helps me be mindful of tasks that get backlogged if something with a higher priority comes up. I also like to use the pomodoro technique (well, try to with the best of my ability) to keep me focused on a task and easily shift gears at the end of a pomodoro to another task if needed. It also helps me remember to take breaks, instead of burning myself out through 3 hours of straight code. I’ve go so far as to make my own tool, &lt;a href=&quot;http://trellodoro.apphb.com&quot;&gt;Trellodoro&lt;/a&gt;, to make this happen a bit easier. It’s old, but it’s still functional, so give a a peek if you’re interested.&lt;/p&gt;
&lt;h2&gt;5. Communication (Personal)&lt;/h2&gt;
&lt;p&gt;Yup, communication is HUGE when you&apos;re working remotely. While it is easy to get caught up in the day to day tasks involved with your team, it is equally important to get to know the people you’re working with as well. Typically I make it back to the main office two or three times a year. On a couple of occasions, it has been for team building events, such as the RAGNARs of &lt;a href=&quot;/team-fresh-completes-ragnar-northwest-passage&quot;&gt;2013&lt;/a&gt; and &lt;a href=&quot;/team-fresh-furious-completes-third-ragnar-northwest-passage&quot;&gt;2016&lt;/a&gt;. When I’m up there for work, I make it a point to find a relatively cheap place to eat and make sure to invite as many people as possible. Dinner (and breakfast) are fabulous places to get to know people outside of work. I drift around the water cooler a bit longer than usual and make it a point to try to connect with each person in the office while I’m up there. While back at the remote office, I make sure to hop into meetings a few minutes early and linger a few minutes afterwards and connect with coworkers that are free. You’d be surprised at how a few minutes here and there can pay off in the long run. The bonds I make with my coworkers during off hours only enforces the collaboration we have during work hours.&lt;/p&gt;
&lt;p&gt;Remote working has come a long way in five years. I think I will still a bit on the fringe as a remote worker when I started, but now it has become far more commonplace and acceptable. Keeping these five keys in mind will help regardless of how technology changes.&lt;/p&gt;
&lt;p&gt;Have any other keys to remove development work? I’d love to hear about them!&lt;/p&gt;
</content:encoded></item><item><title>Tappity Tap</title><link>https://dillieo.me/posts/growth/2016-12-09-tappity-tap/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-12-09-tappity-tap/</guid><description>Tappity Tap</description><pubDate>Fri, 09 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;​​&lt;/p&gt;
&lt;p&gt;Now in HD for your tapping amusement. Hard work pays off and is quite fun! If you haven&apos;t done it yet, so something &lt;a href=&quot;/do-something-crazy-new&quot;&gt;crazy new&lt;/a&gt; ...&lt;/p&gt;
</content:encoded></item><item><title>Chapters</title><link>https://dillieo.me/posts/development/2016-12-08-chapters/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-12-08-chapters/</guid><description>open-book-on-top-of-pile-of-books</description><pubDate>Thu, 08 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes a chapter ends in an abrupt and unexpected way, whisking you into the next one with a bit of nervousness and excitement. This past week or so has been one such event...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Last week I was back at &lt;a href=&quot;https://www.freshconsulting.com&quot;&gt;Fresh HQ&lt;/a&gt;, where a lot of amazing things were being done (as always) 8^D. While up there, I was presented with an opportunity. My name came up with several people when the discussion arose about promoting from within and to fill a recently vacated position.&lt;/p&gt;
&lt;p&gt;The opportunity was presented to become a software development director at Fresh. Given the highly collaborative nature of how we do things, my presence would need to be an in office position in order to make this happen. There would be added responsibilities to the day to day work that I&apos;m already doing.&lt;/p&gt;
&lt;p&gt;But with that added responsibility comes some added benefits. A salary increase was offered (which included cost of living adjustments) with a bonus to sign and some assistance for relocation. The timeline wasn&apos;t overly aggressive either. I would need to do a bit more travel up to HQ in the meantime, but the plan would be to have me full time in the office by July, giving the kids time to finish school and us time to sell (and buy) a house.&lt;/p&gt;
&lt;p&gt;To say that this is a dream job scenario is a bit of an understatement. This position puts me in a spot where I can still sling code on a number of projects (we&apos;re still small enough that it is all hands on deck) but gives me the opportunity to do a bit more &quot;high level&quot; architecting of solutions, something I&apos;ve come to enjoy more as a software engineer. It also gives me more opportunity to coordinate and mentor some of our younger developers on various project, which is another thing I&apos;ve continued to do as a software craftsman (&lt;a href=&quot;/phatcode-share&quot;&gt;share the love&lt;/a&gt;, you know!). The fact that others had mentioned me, despite me not being there on a continual basis speaks to camaraderie I&apos;ve been able to build with the team, despite the miles apart (they are far more than just co-workers to me). The boost in pay is a welcome appreciation of the skill and responsibility with such a position, and the relocation and signing bonus shows that they value me for what I&apos;ve done over the years and the potential for what I have to offer moving forward.&lt;/p&gt;
&lt;p&gt;So there was a lot of praying, and talking with Jen, and praying, and talking with others, and thinking. We have some family and friends up in Washington, but the majority of our family is down here. There would be a big adjustment to our day to day routines (I&apos;m in an office now) and the girls would have a lot of adjustment to a new home, new environment, and new friends to make. Then there is the logistics of buy, selling, and moving across three states with furniture, boxes, and animals in tow.&lt;/p&gt;
&lt;p&gt;The timing of all of this was rather uncanny. I had just wrapped up a bible study series with my mens group in which trusting God more and trust his leading, even if it goes beyond your &quot;expected&quot; or &quot;comfortable&quot; limits. Unknown to me, a close friend had recently applied for a job in town, with the prospect that our families would be near each other, but that fell through. There&apos;s a good chance the reason for that was that he would move here and I would be on my way out. We have been looking off and on for a little while now for some land or housing to expand into with no success. Our preliminary searches in the Washington area are showing potential for the budget we have. This offer was made with no ultimatums attached, just an opportunity to take or leave, my standing with Fresh would remain solid regardless. There&apos;s an opportunity for some of our family to follow us up there as well. All things that point to God&apos;s provision, despite the concerns of travel, house buying, house selling, distance from family, and more.&lt;/p&gt;
&lt;p&gt;So we took the opportunity! To say we&apos;re excited is an understatement! I&apos;ll be heading up to HQ a little more frequently while we work on getting the house prepped for sale and look for places to live up there. Work has been extra excited and supportive with things, and I&apos;m already getting peppered with info and options about where to be.&lt;/p&gt;
&lt;p&gt;So here&apos;s to the next chapter of life, with all the excitement and challenges it will bring!&lt;/p&gt;
</content:encoded></item><item><title>Behold Christmas Advent Music Is Here</title><link>https://dillieo.me/posts/development/2016-12-01-behold-christmas-advent-music-is-here/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-12-01-behold-christmas-advent-music-is-here/</guid><description>christmas_music</description><pubDate>Thu, 01 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;And the angel said to them, &quot;Fear not, for behold, I bring you good news of great joy that will be for all the people. For unto you is born this day in the city of David a Savior, who is Christ the Lord.&quot; (Luke 2:10-11 ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you want to get technical, Advent technically started on Sunday, but I&apos;m more of a December 1 kind of celebratory person. Nevertheless, Christmas Advent is here and one of the ways I love to celebrate is through music. Here&apos;s a plethora of options to get you started, thanks to the power of shared music online!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Phat Chunk &apos;O Christmas&lt;/h2&gt;
&lt;p&gt;First and foremost is my classic Phat Chunk &apos;O Christmas collection. These are some of the original albums that I purchased and added to over time. There&apos;s something about hearing Harry sing &quot;Sleigh Ride&quot; or Vince Guraldi&apos;s Charlie Brown Christmas or The Manhattan Transfer sing &quot;Santa Claus is Coming to Town&quot; or Audio Adrenaline rocking out &quot;Little Drummer Boy&quot; that really gets things going.&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/user/dillie-o/playlist/6iapIFkfx2L1RVJ4eXUQRL&lt;/p&gt;
&lt;h2&gt;Friendly Chunk &apos;O Music&lt;/h2&gt;
&lt;p&gt;A year or so back I decided to take advantage of crowd sourcing and I had all my friends give me their favorite (or most eclectic) Christmas albums and I made a playlist out of them. You can listen to that here.&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/user/dillie-o/playlist/4sTdb9paGcm6GSZFoYiSj4&lt;img src=&quot;@assets/images/posts/2014-11-christmaslounge.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Soma.FM Christmas Lounge&lt;/h2&gt;
&lt;p&gt;One of the best, pretty eclectic, and family friendly streams comes out every year thanks to Soma.FM. Check out their &lt;a href=&quot;http://somafm.com/christmas/&quot;&gt;Christmas Lounge station&lt;/a&gt;. I&apos;ll leave this running for hours on end! P.S. It looks like they have a new &lt;a href=&quot;http://somafm.com/jollysoul/&quot;&gt;Jolly Ol Soul&lt;/a&gt; station that looks enticing. They also make these stations available for free on their mobile apps (&lt;a href=&quot;https://play.google.com/store/apps/details?id=tunein.player&amp;amp;utm_source=somafm&amp;amp;utm_medium=web&amp;amp;utm_campaign=somafmwebpromo&quot;&gt;Android&lt;/a&gt; and &lt;a href=&quot;https://itunes.apple.com/us/app/somafm-holiday-radio/id579160357?mt=8&quot;&gt;iPhone&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;12 Songs of Christmas&lt;/h2&gt;
&lt;p&gt;This is my best of the best of the best list. Plus it matches up with the 12 days of Christmas song in a way (see what I did there? 8^D) If you don&apos;t want to go hog wild, but want a nice mix, take this one for a spin&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/user/dillie-o/playlist/5MgSxM4RAsQqXA4iTu4WT1&lt;/p&gt;
&lt;h2&gt;What&apos;s Next?&lt;/h2&gt;
&lt;p&gt;Is there something I&apos;m missing?! Let me know! I&apos;d love to listen to it!&lt;/p&gt;
&lt;p&gt;Feliz Navidad! Joyeux Noel! Merry Christmas!&lt;/p&gt;
</content:encoded></item><item><title>Review The Mither Mage Series By Orson Scott Card</title><link>https://dillieo.me/posts/development/2016-11-30-review-the-mither-mage-series-by-orson-scott-card/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-11-30-review-the-mither-mage-series-by-orson-scott-card/</guid><description>mithermage_series</description><pubDate>Wed, 30 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A kid that discovers that he has amazing powers. An epic struggle between good and evil. Teenage drama. Coming of age. Magic. Perspectives on life, the universe, and everything. They&apos;re all packed into an urban fantasy setting in the three novel Mither Mage Series (The Lost Gate, The Gate Thief, Gatefather) by Orson Scott Card. Here are a few thoughts on the series...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Being a fan of Orson Scott card and having a growing interest in the urban fantasy genre of books (think magic in modern times), I decided to give this series a try after my wife picked it up for me on a whim from the library.&lt;/p&gt;
&lt;p&gt;The series follows the early and teenage years of Danny North, a boy considered to be a &quot;drowther&quot; by his family of mages since he has no magic capability. However, he soon finds out that he is a &quot;gate mage&quot;, known to be one of the most powerful type of mages, but also required to be killed on sight due to a tradition dating back nearly 1500 years. Danny runs away from home and seeks out a life on his own, eventually meeting up with a few other mages, a handful of &quot;regular&quot; kids, and discovering he is the most powerful mage ever known. As he is coming of age, the weight of the world begins to rest on his shoulders.&lt;/p&gt;
&lt;p&gt;Meanwhile, in another time / planet / dimension (purposefully left vague here by me 8^D) a man climbs out of the trunk of a tree. How long he has been there he doesn&apos;t know, yet he seems to possess the same astounding powers of a gate mage, but unsure about why he has them or what he is supposed to do next. Eventually his path and Danny&apos;s will cross, but how and why will need to be discovered by reading the book.&lt;/p&gt;
&lt;p&gt;Amidst all of this is a universe and a lore that dates back to the creation of the world and the fundamental forces of good and evil. They will play a big role in this series as well, especially as Danny and others seek to conquer it. Mages have a big part in this, and most interestingly enough the old &quot;gods&quot; of Thor, Zeus, Odin, and others are actually mages from years past, their deeds trumped up by &quot;drowthers&quot; who didn&apos;t fully understand them. Why mages dwell among us (this is a modern setting) is an interesting back story as well, as they become divided into &quot;families&quot; and aren&apos;t really recognized by the world at large.&lt;/p&gt;
&lt;p&gt;I found the &quot;mechanics&quot; of magic in this modern universe to be really interesting and fun as it played out through the book. There is a symbiotic relationship that occurs between a mage and the element they &quot;serve&quot; and it makes you start to think about parallels about how one might live their own life. This concept begins to go even deeper into the mind, body, and soul and deeper truths begin to be discovered though Danny&apos;s adventures. A lot of this series is about discovery. You are let in to discover new &quot;tricks&quot; in magic and new &quot;truths&quot; about the mind and soul as Danny (and other characters) discover them as well.&lt;/p&gt;
&lt;p&gt;However, I found the book a little bit disjointed at times. It felt as if there was a whole universe and magical mechanics that was trying to be shared, but not enough space to do it in. What appears to be the biggest issue of the series winds up being resolved about two-thirds of the way through the second book in the series. There are several chapters and scenes that have enough build up to them to appear to be major storyline points, but are never resolved or re-visited. The ending felt a little bit rushed to tidy things up as well. There are a few violent and sexual scenes in the series that make it unsuitable for younger teens in my opinion.&lt;/p&gt;
&lt;p&gt;Admittedly I could have read the series from the completely wrong perspective. I could have focused a bit too much on the action and not enough on the underlying concepts and character development to appreciate the story that was being told. I&apos;ve read enough of Card&apos;s books to respect and enjoy his writing, but for this series I would give it a 3 out of 5 rating. It is a fun read, and has some really interesting thought experiments, but probably nothing that will linger for a long time.&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2016</title><link>https://dillieo.me/posts/life/2016-11-23-thankful-tree-2016/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2016-11-23-thankful-tree-2016/</guid><description>Thankful Tree 2012</description><pubDate>Wed, 23 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This year our Thankful Tree is a bit more &quot;virtual&quot; so I&apos;m pulling one one of my favorite older trees up in it&apos;s place. While I&apos;ve been made more aware of the plethora of blessing I have on a day to day basis, here are my top three for this year.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Men&apos;s Bible Study&lt;/h2&gt;
&lt;p&gt;Over the past few years I&apos;ve been participating in a men&apos;s bible study during the Spring and Fall seasons. While some of the members come and go, there have been a core group of guys that I&apos;ve been able to really connect with. It&apos;s amazing how few times men are willing to open up and go through the struggles (and there have been some huge ones) of life together, yet here is a sanctuary in which to do so. There have been some amazing things that have happened this year though the group and I&apos;m thankful to have been a part of it.&lt;/p&gt;
&lt;h2&gt;Friends I Disagree With&lt;/h2&gt;
&lt;p&gt;I think most of us are quite thankful that the political season of 2016 is finally over (or is it?). While I&apos;ve typically kept out of politics, it was hard not to this year. Despite the massive arguments, trolling, and other disrespect that was everywhere, I was really thankful that I have a group of friends on all sides of the political and religious spectrum that knew that &quot;people are more important than ideas&quot; and had a lot of good insights on the issues and the people this year. My eyes were opened to a lot of things I really haven&apos;t thought deeply about before, and I&apos;m thankful to be able to continue have these discussions moving forward.&lt;/p&gt;
&lt;h2&gt;Running&lt;/h2&gt;
&lt;p&gt;This year I got back into running in a big way by being captain of our RAGNAR team. It was three years since I had done the RAGNAR (and ran consistently) and it was quite a trek to get there. However, I had some &lt;a href=&quot;/serenity&quot;&gt;profound experiences&lt;/a&gt; during that time and was able to run with my best friend whom I haven&apos;t seen in quite a while, let alone actually run with! I&apos;ve been pretty consistent in keeping with my running regimen as well (still adjusting to lack of morning light though 8^D) and I feel better physically and mentally from it. Running is one of those times I can leave everything and get closer with God and I&apos;m extremely thankful for it.&lt;/p&gt;
&lt;p&gt;What are you thankful for this year? Happy Thanksgiving!!!&lt;/p&gt;
</content:encoded></item><item><title>Dev Principle 10 Do Performance Optimization When Needed</title><link>https://dillieo.me/posts/development/2016-11-22-dev-principle-10-do-performance-optimization-when-needed/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-11-22-dev-principle-10-do-performance-optimization-when-needed/</guid><description>optimization_slide</description><pubDate>Tue, 22 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have another guest post today over at my work blog about one of Donald Knuth&apos;s (he&apos;s my homeboy) famous quotes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.freshconsulting.com/dev-principle-10-do-performance-optimization-when-needed/&quot;&gt;https://www.freshconsulting.com/dev-principle-10-do-performance-optimization-when-needed/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Initial Impressions Visual Studio For Mac</title><link>https://dillieo.me/posts/development/2016-11-18-initial-impressions-visual-studio-for-mac/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-11-18-initial-impressions-visual-studio-for-mac/</guid><description>VS_Mac_Banner.png</description><pubDate>Fri, 18 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While there was a premature leak earlier this week in the news, you can now officially download &lt;a href=&quot;https://www.visualstudio.com/vs/visual-studio-mac/&quot;&gt;Visual Studio for Mac&lt;/a&gt;. While there isn&apos;t much you can necessarily say in one day of poking around, in addition to the fact that this is a &quot;preview&quot; app, here are a few initial impressions on it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Once the installer has completed and you fire up VS Mac (V-smack maybe?), you&apos;ve given a simple dialog to pick your project. The exciting thing about this is that there are a lot of templates already in place, for Xamarin Forms, specific iOS / tvOS / Android apps, and even more importantly, Mono and.Net Core apps. The mono web apps give you a full MVC setup with an initial controller, while the.Net Core web app is pretty bare bones. It would be nice if the.Net Core projects have a little more fleshed out in them, but I suspect that will be happening soon. What would be really slick (in my opinion) is if VSMac can coordinate with the &lt;a href=&quot;https://github.com/omnisharp/generator-aspnet#readme&quot;&gt;Yeoman&lt;/a&gt; generators that are already out there to easily script and scaffold new solutions.&lt;/p&gt;
&lt;p&gt;Speaking of scripting, I&apos;m a little surprised there isn&apos;t a terminal window easily available in the IDE (I&apos;m sort of liking those) as well as the well loved &quot;Package Manager Console&quot; that is in your typical copy of Visual Studio. One of the big learning curves, but big benefits with.Net Core is how a lot more of the scaffolding for modeling, deployments, migrations, etc are done through the command line. With the &quot;right click, and new item, see a list of options for classes, controllers etc.&quot; not being there, you&apos;re left a little hung out to dry when building out a.Net Core web app. Admittedly it has been a while since I&apos;ve been working with.Net Core itself (my recent projects are in the &quot;classic&quot; architecture) it would be nice to see some of those options there, especially to add database migrations and the like.&lt;/p&gt;
&lt;p&gt;Right now it appears that I can&apos;t open a folder or create an empty solution file and start adding existing files to it (to integrate with a Yeoman scaffolded app) which is a little frustrating. I&apos;ll have to stick to Visual Studio Code for those items in the meantime.&lt;/p&gt;
&lt;p&gt;With such a tight integration with Xamarin for mobile apps (rumor is that V-smack is Xamarin Studio with renovations) there is quite the toolset readily available for device emulators, which I found VERY nice. Pretty much everything you need is installed for you to get up and running for a mobile app. I even enjoyed seeing a regular expression toolkit available, since you never know when you need to tweak on one of those.&lt;/p&gt;
&lt;p&gt;All of the editor goodness (dark theme, autocomplete, smart tabs, font size changes) is readily available and there doesn&apos;t seem to be any lag working with files or projects. I was even able to open a project build in Visual Studio and get it to compile (it defaulted to Mono) and run without hassle. It wasn&apos;t perfect (I wasn&apos;t expecting it to be) but it went a lot farther than I thought. Source control is at the forefront of V-smack as well, with new projects providing an option to include a default.gitignore file (saves me the hassle of tracking one down) as well as push/pull/blame/diff tools that need to be used.&lt;/p&gt;
&lt;p&gt;I&apos;m excited to see where Visual Studio for Mac is going to go. I&apos;ve been debating about rebuilding the backend API for &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt; to use.Net Core and this might prove to be a great project in which to do it. I still love Visual Studio Code, especially for it&apos;s flexibility across programming languages, but there is a large extensions gallery already available for Visual Studio for Mac, so we&apos;ll see where things go from here.&lt;/p&gt;
&lt;p&gt;If you&apos;ve never worked with.Net before, now might be the time to do it. Have a little patience with the overall IDE, but it&apos;s great to see the power of.Net making more and more inroads to the Mac environment. If you try it out, let me know what you think!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Removing The Double Login From Macos Sierra</title><link>https://dillieo.me/posts/tips/2016-11-16-quick-tip-removing-the-double-login-from-macos-sierra/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2016-11-16-quick-tip-removing-the-double-login-from-macos-sierra/</guid><description>quick-tips.jpg</description><pubDate>Wed, 16 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I upgraded to macOS Sierra about a month ago, I was given a notice that my admin password needed to change, so I went ahead and added a new one. After that, I ran into an odd situation during reboot. I would have to &quot;log in&quot; twice: once with my Apple ID and then with my admin password. While this wasn&apos;t a huge deal, it was a bit annoying and a bit confusing a well.&lt;/p&gt;
&lt;p&gt;It turned out that during the upgrade process (or maybe before and I never noticed) that my FileVault encryption password had been tied to my Apple ID account. While this is handy as a means of unlocking the computer, it caused the &quot;double login&quot; because the Apple ID was only working to access drive contents, then you had to login as usual.&lt;/p&gt;
&lt;p&gt;To fix it: I disabled FileVault and re-enabled it again, but used a GUID generated key that was tied to the keychain. I made sure to print out the key and put it in a safe place. Now there is no &quot;double login&quot; problems, since the OS can use the keychain and unlock itself.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Election Day</title><link>https://dillieo.me/posts/growth/2016-11-08-election-day/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-11-08-election-day/</guid><description>flagbanner</description><pubDate>Tue, 08 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today is a big day in America since it&apos;s election day. Of equal importance around our house is that this is the first election that our girls are fully aware of and are interested in. It&apos;s been a great learning experience for them. We&apos;ve been going over the process, have the live streams going with results as they come in, and have answered the questions they have. They&apos;re rather excited with the whole process.&lt;/p&gt;
&lt;p&gt;However, given that this particular year has been far more about vilifying the other candidate than actually dealing with the issues that concern the nation most, it&apos;s been a rough year for the entire process.&lt;/p&gt;
&lt;p&gt;Admittedly I&apos;ll be happy when this cycle is over. In another 4 years I hope we get back to the issues again.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Access Vmware Fusion Net Apps From Your Mac</title><link>https://dillieo.me/posts/development/2016-11-03-soup-to-nuts-access-vmware-fusion-net-apps-from-your-mac/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-11-03-soup-to-nuts-access-vmware-fusion-net-apps-from-your-mac/</guid><description>vmware_network_settings</description><pubDate>Thu, 03 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I typically spend at least half of my day developing.Net apps from within Visual Studio on a Mac. I do this thanks to the power of VMWare Fusion. Most of the time I run my tests in &lt;a href=&quot;https://blisk.io&quot;&gt;Blisk&lt;/a&gt; or Edge, but there are times where I need to verify functionality in Safari without pushing my code up to a test server. While access isn&apos;t immediately available, here are the steps you need to make it happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;1. Get your App Up and Running&lt;/h2&gt;
&lt;p&gt;The first step is to have you app up and running. To make things easier, you&apos;ll want to be running your app over the standard 80/443 ports with a custom URL. If you don&apos;t know how to set that up, check out &lt;a href=&quot;/soup-to-nuts-custom-domains-and-ssl-in-iis-express&quot;&gt;my post&lt;/a&gt; on how to configure that (it&apos;s easier than you think).&lt;/p&gt;
&lt;h2&gt;2. Enable Bridged Networking and get your MAC Address&lt;/h2&gt;
&lt;p&gt;In order for your host machine (Mac) to talk to your guest machine (VM), you&apos;ll need to make sure that bridged networking is setup in the settings for your virtual machine, that way it shows up as a separate device on your network and has it&apos;s own IP address. Simply open up the settings, select network, and use one of the Bridged options.&lt;/p&gt;
&lt;p&gt;You also need to expand the &quot;Advanced&quot; section and make note of the MAC address for your VM. We&apos;ll need this to find the IP address of the VM&lt;/p&gt;
&lt;h2&gt;3. Get VM IP Address and Update Hosts File&lt;/h2&gt;
&lt;p&gt;Back on your host machine, open up the terminal and enter the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;arp -a&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will bring up the list of IP addresses and the attached MAC addresses on your machine. Find the one that matches the IP of your VM&lt;img src=&quot;@assets/images/posts/2016-11-vmware_network_ipaddress.png&quot; alt=&quot;vmware_network_ipaddress&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once you have this, you can modify your hosts file to include your app URL and the IP address for proper DNS resolution:&lt;img src=&quot;@assets/images/posts/2016-11-vmware_network_hosts.png&quot; alt=&quot;vmware_network_hosts&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;4. Update Windows Firewall&lt;/h2&gt;
&lt;p&gt;By default, the standard web ports are closed off for external access. You need to open the Windows Firewall control panel, go to Advanced Settings, select Inbound Rules, and then create a new inbound rule.&lt;img src=&quot;@assets/images/posts/2016-11-vmware_network_firewall.png&quot; alt=&quot;vmware_network_firewall&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once you start the Inbound Rule wizard, you want to use the following settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rule Type - Port&lt;/li&gt;
&lt;li&gt;Port Settings - TCP / Specific Local Port: 80&lt;/li&gt;
&lt;li&gt;Action - Allow Connection&lt;/li&gt;
&lt;li&gt;Profile - Domain / Private / Public (all checked)&lt;/li&gt;
&lt;li&gt;Name - Inbound HTTP 80 (or something you&apos;d recognize)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&apos;re running your site over HTTPS, repeat this using local port 443&lt;/p&gt;
&lt;h2&gt;5. Test Away!&lt;/h2&gt;
&lt;p&gt;With these settings in place you can fire up Safari, load up your custom domain, and see the site served up with no hassles.&lt;img src=&quot;@assets/images/posts/2016-11-vmware_network_safari.png&quot; alt=&quot;vmware_network_safari&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can continue to use the debugger and everything else you may need as well.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Rest Hard</title><link>https://dillieo.me/posts/growth/2016-11-02-rest-hard/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-11-02-rest-hard/</guid><description>resting</description><pubDate>Wed, 02 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You&apos;ve heard the saying a million times, &quot;Work Hard. Play Hard.&quot; Have you noticed that sometimes &quot;playing hard&quot; can be just as exhausting (or worse) than the working? I think we need to take more time to &quot;rest hard&quot;...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This past Saturday was one such &quot;resting hard&quot; moment. I don&apos;t think we&apos;ve really had one in quite a while. While there was a farmers market, an early Halloween event, lots of trails, a couple of parks, and plenty else around, we camped out on the couch for most of the day. We watched a few shows. We did a little bit of test work on Halloween costumes. We read books. We did this with our pajamas on 90% of the time. It was glorious.&lt;/p&gt;
&lt;p&gt;I think that we have a tendency to overdo it in our quest to see more, do more, learn more, experience more. What originally starts out as a means of having fun, relaxing, and exploring out world becomes a stressor instead because we go overboard with our &quot;playing&quot; and lose site on the refreshment that is was intended to provide. We need to remember to make an effort to not move too fast at times and just... simply... rest.&lt;/p&gt;
</content:encoded></item><item><title>Dev Principle 8 Yagni Ya Aint Gonna Need It</title><link>https://dillieo.me/posts/development/2016-10-28-dev-principle-8-yagni-ya-aint-gonna-need-it/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-10-28-dev-principle-8-yagni-ya-aint-gonna-need-it/</guid><description>yagni_hero-1024x427</description><pubDate>Fri, 28 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a guest post over at my company’s blog, talking about the need to evaluate even the smallest feature in your app or code...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.freshconsulting.com/dev-principle-8-yagni-ya-aint-gonna-need-it/&quot;&gt;https://www.freshconsulting.com/dev-principle-8-yagni-ya-aint-gonna-need-it/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Digital Whittling</title><link>https://dillieo.me/posts/development/2016-10-26-digital-whittling/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-10-26-digital-whittling/</guid><description>Digital Whittling</description><pubDate>Wed, 26 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So this cool thing happened this morning...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;https://youtu.be/wiejJGeBbeI&lt;/p&gt;
&lt;p&gt;While there may be nothing spectacular when you first look at it, the fact that this kind of technology is available for us to work with today through &quot;over the counter&quot; means is amazing.&lt;/p&gt;
&lt;p&gt;With only a little help from me to get the program running on her laptop and help her explore how a few of the settings tweaks work, she was off and running on her own. You can see her eyes light up more and more as each little tweak to the program had immediate results on the robot. When her sister woke up, the collaboration and ideas cranked things up to an 11.&lt;/p&gt;
&lt;p&gt;I can&apos;t wait to see what they come up with next!&lt;/p&gt;
</content:encoded></item><item><title>How To Download All Containers And Blobs In Azure With Powershell</title><link>https://dillieo.me/posts/development/2016-10-21-how-to-download-all-containers-and-blobs-in-azure-with-powershell/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-10-21-how-to-download-all-containers-and-blobs-in-azure-with-powershell/</guid><description>Azure Wallpaper</description><pubDate>Fri, 21 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;PowerShell to the rescue once again! A week back I needed to create an archive of all of the video content processed by &lt;a href=&quot;https://azure.microsoft.com/en-us/services/media-services/&quot;&gt;Azure Media Services&lt;/a&gt; (AMS). While I have used my trusty &lt;a href=&quot;http://storageexplorer.com&quot;&gt;Azure Storage Explorer&lt;/a&gt; tool in the past, it only allowed me to deal with one container at a time. AMS is structured so that each new job that was created stored it&apos;s files in a new container, which made manually grabbing 250+ containers named with GUIDs rather difficult.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Fortunately, with a little digging online, I was able to build a quick PowerShell script that allowed me to traverse all containers for a given storage account and then traverse all the blobs within the container and download them all. All in all I had about 38GB of data to pull down in about 2 hours. I&apos;ve saved the script as a Github Gist for you to use if you need it, and for me to &lt;a href=&quot;https://en.wikipedia.org/wiki/Eating_your_own_dog_food&quot;&gt;dogfood&lt;/a&gt; again later. Enjoy!&lt;/p&gt;
&lt;p&gt;https://gist.github.com/c68d8ea53eaf86f588d4716077448a64&lt;/p&gt;
</content:encoded></item><item><title>Plunging Into Nativescript</title><link>https://dillieo.me/posts/development/2016-10-18-plunging-into-nativescript/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-10-18-plunging-into-nativescript/</guid><description>nativescript_logo</description><pubDate>Tue, 18 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Late last week I had the opportunity to sit in on a demo for &lt;a href=&quot;https://www.nativescript.org&quot;&gt;NativeScript&lt;/a&gt;. It&apos;s a platform that allows you to write cross platform mobile apps using the iOS / Android native code, which gives you a lot more speed and features than the &quot;Hybrid&quot; platforms / tools you may have heard about. I&apos;ve been around long enough to have heard about a lot of platforms and even dabbled a few, but this is the first one that is starting to peek my interest over Xamarin...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;...and I don&apos;t say that lightly either, considering how long I&apos;ve been itching and finally dug into Xamarin to start off my &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt; project. One of the things I&apos;ve been struggling a little bit with is the &quot;update curve&quot; that occurs during each update. There&apos;s a fresh compile, potentially something I missed for a specific platform, then a delay to push things to the emulator or device and then relaunch. Whoops, something was wonky so the launch crashed. now I have to start that process over again.&lt;/p&gt;
&lt;p&gt;NativeScript has a live sync tool that allows your changes to be reflected in the emulators almost instantly. This is fabulous when you&apos;re doing iterative tweaks to layout or just want to move fast through your changes. I realize I&apos;m getting more and more impatient as processor speed goes up, but having a fast turnaround time on my compiles is always nice. 8^D&lt;/p&gt;
&lt;p&gt;While I&apos;m strong coding in C#, my XAML skills are a bit rusty, which is where I&apos;ve had to do some &quot;re-learning&quot; in the fine arts of it. However, NativeScript is using web language code as it&apos;s base, which is quite familiar to me on a day to day basis. Even more exciting is that TypeScript and Angular2 are first class citizens, and they highly encourage you to use this architecture when building your app. All of this provides more familiarity to code fast.&lt;/p&gt;
&lt;p&gt;I also appreciate the easy breakout of OS specific code you may need. simply have a &quot;app.android.css&quot; and a &quot;app.ios.css&quot; file for specific styling needs and the compiler will do the rest to apply the specific stylings accordingly. I know Xamarin does this, and it was good to see it done here as well. I should also chime in really quick and say that NativeScript development can happen anywhere, but there is some great integration with Visual Studio Code, another tool I really like.&lt;/p&gt;
&lt;p&gt;So here I go! Picking up yet another platform to develop with that will hopefully streamline my existing skills into doing some more stuff in a realm I&apos;ve worked partially with and want to work with more. It&apos;s good to never stop learning 8^D&lt;/p&gt;
</content:encoded></item><item><title>Dev Principle 7 Avoid Common Code Vulnerablities</title><link>https://dillieo.me/posts/development/2016-10-14-dev-principle-7-avoid-common-code-vulnerablities/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-10-14-dev-principle-7-avoid-common-code-vulnerablities/</guid><description>vulnerability</description><pubDate>Fri, 14 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a guest post over at my company&apos;s blog, reflecting a bit on some of the coding vulnerabilities that still plague us today...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.freshconsulting.com/dev-principle-7-avoid-common-code-vulnerabilities&quot;&gt;https://www.freshconsulting.com/dev-principle-7-avoid-common-code-vulnerabilities&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Too Many Books Not Enough Time</title><link>https://dillieo.me/posts/growth/2016-10-13-too-many-books-not-enough-time/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-10-13-too-many-books-not-enough-time/</guid><description>This is books scramble. Many books on white background.</description><pubDate>Thu, 13 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier this year, I had signed up for a GoodReads campaign and set a goal to read 10 books by the end of the year. I&apos;m a pretty slow reader, so I thought this was roughly a book a month.&lt;/p&gt;
&lt;p&gt;To my surprise, I found that I&apos;ve already reached that mark and might have a few more under my belt by year end! To my dismay, I found that I have only completed one of the books in my goal to go through the list of &lt;a href=&quot;http://io9.gizmodo.com/5924625/10-science-fiction-novels-you-pretend-to-have-read-and-why-you-should-actually-read-them?utm_campaign=socialflow_io9_facebook&amp;amp;utm_source=io9_facebook&amp;amp;utm_medium=socialflow&amp;amp;utm_expid=66866090-67.e9PWeE2DSnKObFD7vNEoqg.0&amp;amp;utm_referrer=http%3A%2F%2Fio9.com%2F5924625%2F10-science-fiction-novels-you-pretend-to-have-read-and-why-you-should-actually-read-them&quot;&gt;10 Books You Pretend to Have Read (And Why You Should Really Read Them)&lt;/a&gt;. To be fair, I did read the entire Foundation trilogy when they only mention one. I&apos;m also finding the &quot;urban fantasy&quot; genre to be a rather fun read at times.&lt;/p&gt;
&lt;p&gt;[:: sigh::] Too many books, not enough time...&lt;/p&gt;
&lt;p&gt;What&apos;s on your nightstand?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Quick Review Norah Jones Day Breaks</title><link>https://dillieo.me/posts/tips/2016-10-07-quick-review-norah-jones-day-breaks/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2016-10-07-quick-review-norah-jones-day-breaks/</guid><description>norah-jones-day-breaks</description><pubDate>Fri, 07 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being a long time Norah Jones fan, I pre-ordered this album as soon as my Amazon credits would allow me to. 8^D I was teased / tortured by a few early releases of &quot;Carry On&quot;, &quot;Flipside&quot;, and &quot;Tragedy&quot;and then had to wait for the rest. Today the full album has arrived and here&apos;s the &quot;two times through the album off the cuff short review&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This album is a fabulous return to some of her original works, with her smooth, sometimes sultry, and jazzy feel I&apos;ve come to love about Norah. Nearly all of the tracks have a laid back feel, except for &quot;Flipside&quot; which is pretty upbeat, and just might be my favorite. I&apos;m torn between that &quot;And Then There Was You&quot;.&lt;/p&gt;
&lt;p&gt;I wasn&apos;t the biggest fan of the newer Norah albums with the heavier &quot;pop&quot; feel they had, though I still listen to them. Day Breaks has me giddy for the early Norah days, especially when we get to hear her piano skills at the forefront on &quot;Fleurette Africaine&quot;. You won&apos;t be disappointed by this purchase.&lt;/p&gt;
&lt;p&gt;P.S. - The alto sax work on this album is amazing!&lt;/p&gt;
</content:encoded></item><item><title>Amazing Programmers Are Replaceable</title><link>https://dillieo.me/posts/development/2016-10-06-amazing-programmers-are-replaceable/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-10-06-amazing-programmers-are-replaceable/</guid><description>matrixmini.jpg</description><pubDate>Thu, 06 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Things got a little crazy at work last week while I was gone on vacation...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m currently the lead developer on a platform we built for a client. I say &quot;platform&quot; instead of application because we have an API, Web Application, iOS Application, a WordPress site, and numerous static content resources put together to serve their needs. It&apos;s pretty slick, if I do say so myself. It is also a bit complex when you map out how the pieces fit together.&lt;/p&gt;
&lt;p&gt;That said, there was some documentation in place and couple of others that work on the project. Recent updates had been slow for the project, so I left for vacation without much in mind.&lt;/p&gt;
&lt;p&gt;I received a call midway through vacation from work. Another of our senior developers was on the line and needed to know how the merge/deployment process worked for the platform. I had mentioned there was some documentation, but gave a quick overview on things, since the API and Web App models were slightly different. That seemed to cover the questions they had and I went on my way.&lt;/p&gt;
&lt;p&gt;When I got back from vacation and was filtering through my e-mails, I discovered things had gotten rather crazy. An immediate update was needed for the site, which affected both the API and the Web App portions of the platform. The documentation (after I had done some digging) was lacking in detail. It had taken several iterations, and a short time where the production Web App was broken, before things were pieced together and finally pushed out. The Web App didn&apos;t use the traditional approach we had in place for deployments, which made for more iterations and time lost. Additionally, there were some new reference codes that needed to be added immediately. Since there wasn&apos;t a formal admin module in place, this is typically done manually by me, but with no documentation, let alone a note about needing to open a firewall to the database, this task was left open until I had returned. Needless to say, I had failed the team, and our client, for a couple of tasks that weren&apos;t trivial, but not complex either.&lt;/p&gt;
&lt;p&gt;I&apos;ve tried to adopt the view of &lt;a href=&quot;/phatcode-share&quot;&gt;software craftsmanship&lt;/a&gt; over the years and a big factor of this is being able to write &lt;a href=&quot;/on-writing-maintainable-code&quot;&gt;maintainable code&lt;/a&gt;. Along these lines, I want to write code and build solutions that don&apos;t require me to be lingering around for them to run or be updated effectively. Ideally they can get up and running with only the code and documentation at their disposal. I suspect there is still a small batch of programmers out there that buy in to an old standard of writing code that is so crazy, or has some &quot;black box magic&quot; in there that it will provide you job security, because the system would crash or and upgrade wouldn&apos;t be possible without them. I find this rather insulting to the craft of programming and software engineering as a whole.&lt;/p&gt;
&lt;p&gt;Amazing programmers build systems and write code that makes them replaceable. By having &quot;beautiful code&quot; and &lt;a href=&quot;https://www.freshconsulting.com/dev-principle-4-create-high-quality-project-documentation/&quot;&gt;high-quality project documentation&lt;/a&gt;, a programmer can walk away from their project and another developer can come on board and keep the ball rolling, with potentially a brief meeting to provide an overview of the project at hand. I don&apos;t want to keep my job because my code requires me to be there, I want to keep my job because my innovative solutions and clean code make me desirable to build new solutions and refine existing ones. Having code that makes me &quot;replaceable&quot; makes that possible.&lt;/p&gt;
&lt;p&gt;This past week shows that I&apos;m still not the amazing programmer that I&apos;d like to be, even after 15 years of being in the craft. However, that still gives me new things to strive for and more refinement to do for my craft.&lt;/p&gt;
</content:encoded></item><item><title>Texas Vacation 2016 Highlights</title><link>https://dillieo.me/posts/growth/2016-10-05-texas-vacation-2016-highlights/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-10-05-texas-vacation-2016-highlights/</guid><description>img_3380</description><pubDate>Wed, 05 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another fabulous vacation has been road tripped, tractored, ran, ridden, faired, spidered, and so much more. I wouldn&apos;t trade these trips for the world. It provides a great getaway from the normal (and digital) day to day life that can sometimes overwhelm you. Here are a few of my favorite photos from the trip. You can view the full album of highlights &lt;a href=&quot;https://flic.kr/s/aHskJ78Hjx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;img src=&quot;@assets/images/posts/2016-10-20160930_162427366_ios.png&quot; alt=&quot;20160930_162427366_ios&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-10-20160927_194112945_ios.png&quot; alt=&quot;20160927_194112945_ios&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-10-20160930_181224373_ios.png&quot; alt=&quot;20160930_181224373_ios&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Check out the full album of highlights &lt;a href=&quot;https://flic.kr/s/aHskJ78Hjx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Texas Beauty</title><link>https://dillieo.me/posts/development/2016-09-30-texas-beauty/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-09-30-texas-beauty/</guid><description>Texas Beauty</description><pubDate>Fri, 30 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I take a brief hiatus from my internet abandonment to indicate how much I love the beauty of the Texas countryside. Now off to the fair! There is Dr. Pepper ice cream and a &quot;fried quesadilliO&quot; with my name on it!&lt;img src=&quot;@assets/images/posts/2016-09-img_3494.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-09-img_3427.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-09-img_3381.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-09-img_3380.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Farewell Interwebz</title><link>https://dillieo.me/posts/development/2016-09-26-farewell-interwebz/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-09-26-farewell-interwebz/</guid><description>Farewell Interwebz</description><pubDate>Mon, 26 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a laterblog (is that a word?) but by now I&apos;ve abandoned the internet (and a fair amount of connectivity) for a week and a half or so for vacation. You&apos;d be surprised at what a good disconnect can do for the mind and soul and what kind of perspectives it can provide. You should try it sometime. I&apos;ll be somewhere in Texas for a while... Peace out!&lt;/p&gt;
&lt;p&gt;This is a laterblog (is that a word?) but by now I&apos;ve abandoned the internet (and a fair amount of connectivity) for a week and a half or so for vacation. You&apos;d be surprised at what a good disconnect can do for the mind and soul and what kind of perspectives it can provide. You should try it sometime. I&apos;ll be somewhere in Texas for a while... Peace out!&lt;/p&gt;
</content:encoded></item><item><title>Dont Forget To Breathe</title><link>https://dillieo.me/posts/growth/2016-09-22-dont-forget-to-breathe/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-09-22-dont-forget-to-breathe/</guid><description>apple_watch_breathe</description><pubDate>Thu, 22 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently updated my Apple Watch to watchOS3 and was later greeted mid-morning with a prompt on my wrist to breathe...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I chuckled to myself when I saw this. &quot;Really?! I need to be reminded to breathe?&quot; Admittedly the day had been a bit stressful up to that point so I secretly wondered if maybe I had turned something on that was constantly monitoring my pulse and noticed it was a bit higher than average.&lt;/p&gt;
&lt;p&gt;For kicks I decided to give this thing a whirl. I went for the &quot;1 minute&quot; session. The little blue &quot;crystal image flower thingie&quot; (CIFT is my technical term) slowly expanded and contracted, and I matched my inhale / exhale patterns to match it. After about 8 breaths my minute had been reached and I saw a summary of my heart rate. I&apos;m not sure where it was previously, but it was pretty low. But I did a self-diagnostic and that stress that had been nipping at me was gone. My head was a bit clearer, and I went back into &quot;hacking the matrix&quot; with a renewed sense of energy and excitement.&lt;/p&gt;
&lt;p&gt;It was crazy how a simple task (and in such a short amount of time) can have amazing effects. The mind/body connection becomes more and more profound to me every day. You can&apos;t have one without the other.&lt;/p&gt;
&lt;p&gt;So don&apos;t forget to breathe. No, I&apos;m not saying go buy an Apple Watch for this kind of things. But set a reminder somewhere. Once, maybe twice a day, take a minute or two out of your life to shut everything else out and.... just... breathe...&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Hydrate Before You Run</title><link>https://dillieo.me/posts/growth/2016-09-21-quick-tip-hydrate-before-you-run/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-09-21-quick-tip-hydrate-before-you-run/</guid><description>20160921_125840148_ios</description><pubDate>Wed, 21 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One thing I noticed early in my RAGNAR training was that I was getting some severe headaches after my runs, as well as some irritation around my eyes. We found out that the irritation was due to really high salt levels in my sweat. It turns out that it didn&apos;t matter that I was hydrating well and replacing electrolytes after my run. I was running on a &quot;dry engine&quot; and to some extent overheating my body.&lt;/p&gt;
&lt;p&gt;So I started having a glass or two of water before I went out on my runs. I was concerned at first about this since it was an early morning run (soon after waking) and that too much fluid in my stomach would give me stomach cramps during my run. I&apos;ve had that problem before and I think it is worse than the problem I was facing.&lt;/p&gt;
&lt;p&gt;It turns out the average body can handle a glass or two of fluid shortly before a run with no problems. I found that my &quot;overheating&quot; issue went away immediately, and I haven&apos;t had any headaches since!&lt;/p&gt;
&lt;p&gt;So take it from me, hydrate before you run!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Do Something Crazy New</title><link>https://dillieo.me/posts/development/2016-09-16-do-something-crazy-new/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-09-16-do-something-crazy-new/</guid><description>tap_shoes</description><pubDate>Fri, 16 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been about a month an a half now since I did something I would call &quot;crazy new&quot;. I started taking tap dance lessons...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;During this past week I was finally introduced to the &quot;Shirley Temple&quot; (shuffle, heel, heel, pull, heel, tap, heel, repeat -- or something close to that) and I realized how much I enjoyed things for a variety of reasons.&lt;/p&gt;
&lt;h3&gt;I&apos;m Learning New Things&lt;/h3&gt;
&lt;p&gt;That &quot;never stop learning&quot;cliche is something I try to hold to. I&apos;m exposing myself to and learning bits of programming techniques and languages all the time, but this takes it a step further. I really have no base knowledge to work off of. My brain has become this big sponge, soaking in new things. Just when I thought we had all of the techniques mapped out and identified, I come back next week and there is another half dozen that I&apos;m exposed to, and then my body stumbles over itself trying them all out. But slowly I&apos;m building up knowledge and technique, and then I get to apply it. It&apos;s rather exciting.&lt;/p&gt;
&lt;h3&gt;It&apos;s Humbling&lt;/h3&gt;
&lt;p&gt;I thought I had a pretty good sense of dexterity and body control, but this has thrown all of that out of the window. Your body wants to move left, but you&apos;ve put all your weight on your left foot, so you&apos;re stuck, and you have to get your weight to your right foot from the previous move. A lot of things I thought I took for granted is out the window. It can be rather humbling, especially when you&apos;re in a class where everybody else has been doing this for a year or so already. Humility (not embarrassment) is good for the soul and helps you keep perspective in life.&lt;/p&gt;
&lt;h3&gt;It&apos;s Fun&lt;/h3&gt;
&lt;p&gt;Admittedly not every single moment (see previous two bullet points as to why) is fun, but hearing the music, putting the pieces together, seeing it come together, meeting new people all is a lot of fun. Additionally, it is opening my mind and soul to a new realm of itself that it hasn&apos;t really explored much of and it is enjoying the adventure of discovery.&lt;/p&gt;
&lt;h3&gt;Go Get Crazy!&lt;/h3&gt;
&lt;p&gt;You should do something &quot;crazy new&quot; as well. Are you a cerebral type person? Maybe try out dance, or art, or something like that. In my small town there are some free opportunities available at times, and the local community college often offers classes that aren&apos;t too expensive. Are you a creative person that doesn&apos;t do much &quot;structured&quot; type stuff. Try learning a programming language. There are tons of free resources online that don&apos;t require you to install anything. Another option would be to pick up a starter deck for one of those collectible card games (Magic: The Gathering, Yu-Gi-Oh, Pokemon) and start looking into deck building and strategy that comes with those things. Your local comic book / gaming shop most likely has a night you can meet up with others and get used to the game.&lt;/p&gt;
&lt;p&gt;I call this &quot;crazy new&quot; because learning tap is something completely out of my normal routine or skill set. This software engineer, runner, wood chopper, geek guy never took one thought about taking tap dancing lessons until about a few months ago. Diving into this new arena of things adds a new dimension (and excitement of learning) to my life and I think it will for you too.&lt;/p&gt;
&lt;p&gt;UPDATE: The payoff? You can see my hard work &lt;a href=&quot;/tappity-tap&quot;&gt;here&lt;/a&gt;!&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
</content:encoded></item><item><title>The Beat Of My Heart</title><link>https://dillieo.me/posts/growth/2016-09-12-the-beat-of-my-heart/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-09-12-the-beat-of-my-heart/</guid><description>heart_music</description><pubDate>Mon, 12 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The beat of my heart is now my song for you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is the line shortly into the &lt;em&gt;&lt;a href=&quot;https://soundcloud.com/laladee/dj-lorraine-reverence&quot;&gt;Reverence&lt;/a&gt;&lt;/em&gt; mix by DJ Lorraine (now Laladee) that has been ruminating in my mind for over a decade now...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;At first it sounds like kind of a clever and catchy one liner. Those in to EDM can have a bit of a “hardcore” love of the genre and tying the beat of the music with the beat of one’s own heart is a clever play on words that goes nicely into this. But over time the lyrics have struck me as something deeper.&lt;/p&gt;
&lt;p&gt;A song, something we sing (or sometimes shout/chant/dance), is something we give of ourselves to somebody else. It may seem small and trivial, but the investment of your time to memorize the lyrics, the exertion of our vocal chords (we won’t discuss my poor pitch at this point 8^D), and the enthusiasm and love that comes into performing that song (how many videos are out there nowadays of people singing their favorite musicians song acapella and doing crazy dances), show that the song is one of dedication and adoration. Something not to be taken lightly.&lt;/p&gt;
&lt;p&gt;Our heart is probably the most important part of our body. Without it, we die because we have nothing to pump our life giving blood through our system. It functions innately. We don’t have to “think” about pumping blood through our system, it just happens. To that extent, it is something so simple, yet so life giving, that it has a proound effect. We start to take this metaphor when we think about what the “heart of the problem” is or when we try to work through “matters of the heart”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The beat of my heart is now my song for you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thinking about these words gives me pause and realizes there is a deep meaning to this phrase. If the most basic and life giving portion of myself, my beating heart, is to be my song for something, then my entire being, mind and soul, is given as a means of dedication and adoration to something or someone. Is there anything out there worth such a song and dedication? I wonder if in today’s world we can grasp this idea since things move so fast, items are built to be disposable, and we transition from one headline to another on a daily, if not hourly basis.&lt;/p&gt;
&lt;p&gt;I will say for myself that my heart beats for Jesus Christ. The one who was in the beginning, is now, and ever shall be, world without end. The person who gave sacrificed His life for us, and conquered death, rising again. The one who offers eternal life for us by accepting His love and his gift. That is whom my heart beats for. For whom I try to make sure every beat, every thought, every deed gives dedication and adoration to Him. It should be noted that I fail miserably quite often and that there is no “pie in the sky” life that I have. God has been faithful through it all though and for that I sing for him, every moment, every beat of every day. To some I suspect it sounds scary to devote oneself to that extent, but there it is.&lt;/p&gt;
&lt;p&gt;Do you find anything that is worthy of the beat of your heart?&lt;/p&gt;
</content:encoded></item><item><title>Cool Tools Blisk And Word Flow</title><link>https://dillieo.me/posts/growth/2016-09-09-cool-tools-blisk-and-word-flow/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-09-09-cool-tools-blisk-and-word-flow/</guid><description>blisk_screenshot</description><pubDate>Fri, 09 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m always on the lookout for some cool tools that help me work that much smarter or sometimes are just fun. There are two that I&apos;ve been warming up to more and more lately: &lt;a href=&quot;https://blisk.io&quot;&gt;Blisk&lt;/a&gt; (Windows, Mac) and &lt;a href=&quot;https://itunes.apple.com/us/app/word-flow-keyboard-custom/id1077864246?mt=8&quot;&gt;Word Flow&lt;/a&gt; (iOS)&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://blisk.io&quot;&gt;Blisk - Develop and test websites that look great and work fine on any device&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nowadays, nearly every web site or app I work on is designed to be responsive. Mobile is taking over at a blistering pace and have a responsive site seems like a no brainer, especially with frameworks like &lt;a href=&quot;http://foundation.zurb.com&quot;&gt;Zurb Foundation&lt;/a&gt; to help make thing happen quick and easy. Testing your site on mobile can be a huge pain. Yes, you can simply drag your browser window to make it skinny to simulate mobile, and the developer tools provide settings, but it can be a bit of a hassle and all of the mobile platforms have their own sizing idosyncracies.&lt;/p&gt;
&lt;p&gt;Enter Blisk. It provides fully emulated phones and tables within the web browser that sits right next to you. A picture is worth a thousand words (and devices):&lt;/p&gt;
&lt;p&gt;You can instantly see what your site looks like on mobile AND on the desktop at the same time. There are tons of device options to emulate, both phone and tablet based. You can also have actions/scrolling sync so you can track the same actions/functionality without having to click in both places. Blisk is using the Google Chrome browser as a shell for all of this, so you instantly have access to all of their dev tool goodness to tweak on stylesheets, debug javascript, and everything else. I just might have to retire Firefox Developer Edition for this.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/word-flow-keyboard-custom/id1077864246?mt=8&quot;&gt;Microsoft Word Flow Keyboard&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The thing I love about my Nexus tablet, and old Android phone, was the &quot;swipe&quot; method of typing. It took a small amount of adjustment, but once I was used to it things went so much faster with my typing. The word predictability was pretty strong as well, so there weren&apos;t many corrections to be made. Once I switched, I was stuck with the old two finger typing, or rather slow single thumb typing.&lt;/p&gt;
&lt;p&gt;Interestingly enough, as I was following up on my blog post earlier this week about &lt;a href=&quot;/microsoft-on-apple&quot;&gt;Microsoft Apps on Apple platforms&lt;/a&gt;, I stumbled across Word Flow. It&apos;s a free keyboard that enhances your typing productivity. It has the swipe mechanics in place, and even does some rather crazy things like providing easy access to an animated gif library (since we like to send our giffies nowadays), your contacts, and more. But the thing that REALLY caught my eye was this:&lt;img src=&quot;@assets/images/posts/2016-09-word_flow_action_shot.jpg&quot; alt=&quot;word_flow_action_shot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yep, you can &quot;bend&quot; the keyboard to the let or the right to provide easier access to that single thumb typing you do so often. Swipe function works just fine in this mode, and you can easily &quot;straighten&quot; the keyboard with a swipe of the thumb if you need to go into traditional mode. Admittedly I&apos;ve only been using this for a couple of days, but I picked it up immediately and have been swiping away with fury! Kudos Microsoft!&lt;/p&gt;
&lt;p&gt;So there&apos;s a couple of things to help you through your day to day life. What other cool tools are you using? I&apos;d like to know!&lt;/p&gt;
</content:encoded></item><item><title>Microsoft On Apple</title><link>https://dillieo.me/posts/development/2016-09-07-microsoft-on-apple/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-09-07-microsoft-on-apple/</guid><description>20160907_144724000_ios</description><pubDate>Wed, 07 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I&apos;ve started toying around with a new camera app for my iPhone from Microsoft called &lt;a href=&quot;https://www.microsoft.com/en-us/research/product/microsoftpix/&quot;&gt;Pix&lt;/a&gt;, I noticed that I have quite a handful of Microsoft apps on an Apple device, and that&apos;s a good thing...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;While some have criticized Microsoft in the past for not reaching out and creating their own &quot;walled garden&quot; of products, they have made leaps and bounds over the last few years. Technically Office has been available for the Mac since 2011, but it really wasn&apos;t until the 2013/2016 editions that the app really started working as they should. I currently use Outlook on a daily basis and aside from the Google Calendar integration (one last piece that the Sunrise acquisition should cover) it works just as well as the PC counterpart.&lt;/p&gt;
&lt;p&gt;Microsoft recently released their latest version of the.Net Framework and rebranded it.Net Core with a big caveat: it now runs on macOS / Linux. Building apps now can be structured and configured through command line tools and yeoman scripts without requiring the Visual Studio IDE. This is a huge step in bringing.Net to the multi-platform level you see with Ruby, Python, PHP, and others. In addition, they acquired Xamarin, the platform that makes it easier to develop cross platform mobile apps, and made it FREE for everybody.&lt;/p&gt;
&lt;p&gt;Finally, Microsoft made all of their great office apps just as nice on mobile. The filtered e-mail and Sunrise integration into the Outlook for iOS makes it my go to e-mail app. OneDrive syncs my files easily to the cloud with far more storage available than iCloud, and since 99.9% of my search queries point me to Stack Overflow or Wikipedia anyway, I use the Bing app to get some extra points. Cortana is still under heavy development, but soon I&apos;ll be able to have my jokes come back to me on a consistent basis. Oh, most of these are available for Android too.&lt;/p&gt;
&lt;p&gt;So it&apos;s a good time for Microsoft on Apple in my opinion. I feel more productive than ever and look forward to the continued updates.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Grab Your Connectionstrings From The Config File Directly</title><link>https://dillieo.me/posts/development/2016-09-01-quick-tip-grab-your-connectionstrings-from-the-config-file-directly/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-09-01-quick-tip-grab-your-connectionstrings-from-the-config-file-directly/</guid><description>quick-tips.jpg</description><pubDate>Thu, 01 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Interesting little tidbit discovered today. I was debugging a helper method that took a connection string as an input parameter, so that it could create a simple SQL connection (no entity framework magic) in order to process things. Since there was some EF code and context already established, the original code was setup to pass the connection string from the existing context:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;context.Database.Connection.ConnectionString&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;However, I was getting an error when connecting. A little digging brought to light the fact that when you pull the connection string in this manner, the password is omitted. I suspect for security purposes. That said, simply using the standard:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ConfigurationManager.ConnectionStrings\[&quot;DefaultContext&quot;].ConnectionString&lt;/code&gt;...will get you what you need.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Api Insights Orms Viewmodels Summaryviews And Transforms</title><link>https://dillieo.me/posts/development/2016-08-31-api-insights-orms-viewmodels-summaryviews-and-transforms/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-08-31-api-insights-orms-viewmodels-summaryviews-and-transforms/</guid><description>Matrix Code Tunnel</description><pubDate>Wed, 31 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been working through another project lately that is being build using a WebAPI model with an AngularJS front end. It&apos;s becoming a very popular way of building things out. It&apos;s quite helpful, but it does lend itself a little bit to some complexities not always found in a traditional MVC model, especially when it comes to the structure and size of the data being returned in the payload. Here is one way I work around those issues.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Most application platforms are using some form of ORM (object relational manager) to make your life a lot easier. Most of the time this does make your life easier. Instead of having to write out all your CRUD operations for basic tables, you simply build an object model, let it map to a table, and when you update an object and tell it to save, it&apos;ll make the appropriate changes. This gives you the added benefit of using actual objects with fully typed properties in your code, as opposed to looking at row columns or other abstractions.&lt;/p&gt;
&lt;p&gt;The added benefit of ORMs comes with relation mapping as well. You can declare that your organization contains a collection of members, and with little (or potentially no) configuration your ORM will automatically build the foreign keys into your tables, and do the necessary join statements for your queries.&lt;/p&gt;
&lt;p&gt;This is where things can start to get a little crazy...&lt;/p&gt;
&lt;p&gt;Let&apos;s look back to our scenario above. An organization can contain a collection of members. Likewise a member may have a collection of organizations that it belongs to. When your API endpoint queries the organization, it will most likely use a concept called &quot;lazy loading&quot; to keep a reference of the members, but not actually pull them until some code requests that property, which most likely would be when the API is rendering the JSON to return to the client. At this point the ORM kicks in, and grabs the members. They have an organization object connected to it, so the ORM is going to grab the details. You don&apos;t want to see the size of the data return on this, if you make it that far, trust me.&lt;/p&gt;
&lt;p&gt;How do we fix this? For me, I like to take a page out of my MVVM playbook and use a ViewModel. A ViewModel is typically a POCO (plain &apos;ol common object) that uses all of basic data types for my model that I want to send back to the client. In C# terms, this means that any virtual or ICollection type objects are replaced with the basic object or a List&amp;lt;T&amp;gt;. You can use custom objects in the results, as long as ultimate they map to simple data types that can be serialized to the client.&lt;/p&gt;
&lt;p&gt;In the case of my Organization, I create an OrganizationViewModel and use a simple List&amp;lt;Member&amp;gt; object. This requires one extra step in my API code in which I trigger the lazy loading by getting my member object and adding it to the list, but I can stop the crazy recursion in my code. I&apos;ve found that by creating a constructor for the ViewModel that takes the original object, you can reduce your processing code to a simple line quick and pretty.&lt;/p&gt;
&lt;p&gt;Sometimes the ViewModel is not enough though. In our situation above, the Member object is going to have an Organization attached to it, and the Organization has 20 to 30 properties that we don&apos;t need duplicated in the result set. For that, I use what I call a SummaryView, which includes a subset of the necessary data, and oftentimes contains just the ID of related data, such as the organization. The thought behind that being that the SummaryView is just that, a summary. If I need the full set of data I&apos;ll make a separate query to that specific object. In the case of my OrganizationViewModel, I would have a List&amp;lt;MemberSummaryView&amp;gt; as opposed to a List&amp;lt;Member&amp;gt; in there. That way the data size of the return object doesn&apos;t get too large, especially if you&apos;re returning 100s of records that need to be rendered at the client end.&lt;/p&gt;
&lt;p&gt;One alternative to this, which I&apos;ve worked with as well, is to use Transforms to modify the data being returned to the client. Transforms essentially serve as a hook or intercept between the object retrieval and the object rendered to the client. With the transform, you specify which data is returned, and can structure it differently if needs be. You can also do additional data querying if needed. It&apos;s a little more lightweight, but if you have some really complex objects, it may cause too many problems.&lt;/p&gt;
&lt;p&gt;The next time your WebAPI starts giving you grief with huge datasets or circular reference, give these options a shot, or let me know what you do instead.&lt;/p&gt;
</content:encoded></item><item><title>Initial Review Reebok One Guide 30</title><link>https://dillieo.me/posts/growth/2016-08-25-initial-review-reebok-one-guide-30/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-08-25-initial-review-reebok-one-guide-30/</guid><description>20160825_125014605_iOS</description><pubDate>Thu, 25 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thanks to the generosity of &lt;a href=&quot;https://www.runragnar.com&quot;&gt;RAGNAR&lt;/a&gt; and &lt;a href=&quot;https://www.reebok.com&quot;&gt;Reebok&lt;/a&gt; this year, I was given a pair of &lt;a href=&quot;http://www.reebok.com/us/reebok-one-guide-3.0/AR2670.html&quot;&gt;Reebok One Guide 3.0 shoes&lt;/a&gt;. This came at a fortuitous time since my older shoes were long overdue for retirement. Excitedly, I took them out for a run this morning. While it is a bit premature to provide a full review on a pair of shoes after a single run, I do believe it is important to provide those first impressions when evaluating shoes.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Quick Summary&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Rating: 4 out of 5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Great ankle support. Shoe feels lighter for being a &quot;heavy duty / long distance&quot; shoe.&lt;/p&gt;
&lt;p&gt;**Cons: **Padding feels a little light near the from top the shoe, which would have been helpful for steeper hills.&lt;/p&gt;
&lt;h2&gt;Initial Feel&lt;/h2&gt;
&lt;p&gt;When I first laced up the shoes, that wonderful feeling of fresh cushioning was there. The cushioning didn&apos;t feel &quot;too fluffy&quot; as I&apos;ve found in other shoes. There was a good balance between &quot;fluffy&quot; and &quot;supportive&quot; in this regard. The top mesh of the shoe really makes the shoe feel lighter than anticipated for a &quot;heavy duty / long distance&quot; shoe as I&apos;ve had in the past. This is nice, especially when you&apos;re near mile 8 or 9 and it feels like you have weights around your ankles.&lt;/p&gt;
&lt;h2&gt;Downhill Stability&lt;/h2&gt;
&lt;p&gt;The first part of my run in downhill on a trail that has been washed out due to rain lately. There are some pretty nasty grooves in places and lots of loose rock from the drainage. I was a little surprised at how &quot;sure footed&quot; I felt going down the terrain and even felt comfortable enough to pick up my pace a little. I was really happy with the ankle stability the shoe provides in this regard. The extra treads on the bottom (look a little bit monster truck-ish) could have helped too 8^D&lt;/p&gt;
&lt;h2&gt;Uphill Climb&lt;/h2&gt;
&lt;p&gt;Shortly after the trails I hit a small steep incline on the road. I noticed a little extra stress on the balls of my feet, where previous shoes didn&apos;t have this. I think if there was a little more padding added towards the front of the shoe this would have not been a factor.&lt;/p&gt;
&lt;h2&gt;Flat Road&lt;/h2&gt;
&lt;p&gt;I don&apos;t have much flat areas on my runs, but once I found some, the shoes were very supportive and light on the feet. I still felt I had control of the terrain (I&apos;ve been in some shoes where it felt like I was a foot off the ground with no control) and the added support allowed me to push the pace a little harder.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;I&apos;m really excited to see what adventures await with these new shoes. The initial prospects of them look promising, but I need to break them in a bit more. I&apos;ll report back in a month or two, but for now they get a 4 out of 5 rating for me.&lt;/p&gt;
</content:encoded></item><item><title>Life Momentos</title><link>https://dillieo.me/posts/growth/2016-08-23-life-momentos/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-08-23-life-momentos/</guid><description>20160823_132450040_iOS</description><pubDate>Tue, 23 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today marked the last run for a pair of my running shoes. They&apos;ve lasted a heck of a lot longer than they were intended for, and there have been quite some memorable runs on them (two RAGNARs, a marathon, and a bunch more). I debated about hanging on to them, as a moment of those runs, but I&apos;ve decided not to. However, it got me thinking about the other mementos I keep around.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I find most of my &quot;valuable momentos&quot; consist of the following:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hats&lt;/strong&gt; - I wear baseball hats (A LOT). Having that reminder readily available brings back good memories, and provides some fun stories for people who ask. Currently I have a pretty slick grey wool cap with an artistic Mickey Mouse head embroidered near the bottom right from my &lt;a href=&quot;/the-magic-of-the-years-and-ears&quot;&gt;trip to Disneyland with the family&lt;/a&gt; two years ago.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mugs&lt;/strong&gt; - I drink a LOT of coffee. In a similar fashion, enjoying that mug of coffee from my Disneyland mug (now faded beyond recognition) or the Microsoft mug from an event I went to early on at my new job. I have mugs that have been gifted by friends and some that are so nice that I just look at them or pack them up, but I can use them at any moment.&lt;/p&gt;
&lt;p&gt;These moments are cheap too. I have some others that aren&apos;t so cheap, and sometimes those are packed away for long periods of time. The memories get lost, so that&apos;s why I like the &quot;in your face&quot; ones.&lt;/p&gt;
&lt;p&gt;What momentos do you keep on hand and why?&lt;/p&gt;
</content:encoded></item><item><title>My Favorite Moment Of The 2016 Olympics</title><link>https://dillieo.me/posts/development/2016-08-19-my-favorite-moment-of-the-2016-olympics/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-08-19-my-favorite-moment-of-the-2016-olympics/</guid><description>dagostino_hamblin.jpg</description><pubDate>Fri, 19 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been fortunate enough to see a lot of the Olympics this year, thanks to the wide amount of events being streamed over the Internet and a simple Nexus tablet sitting on my desk. I&apos;ve seen quite a bit of history making, lots of first medals for a country or victories for an individual after a really long dry spell, and world records being smashed to bits. My favorite thing to have seen, was an event that embodies athleticism, competition, and heart beyond gold, silver, and bronze.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;You may have heard the story already, but having been a competitive runner, let&apos;s look at the great moments in this story.&lt;/p&gt;
&lt;p&gt;A little over half way through the women&apos;s 5K (3.1 miles) qualifying event, Abbey D&apos;Agostino of the USA accidentally clips Nikki Hamblin of New Zealand and they both goth down. Amber gets up right away to continue racing. We can pause right here and reflect on an important point right here. In running, even at longer distances, every second counts. The fine tuning that goes into pacing each lap out just right is crucial. When a fall like this happens, especially at this level, your chances of winning become slim to none. It would be easy to simply hang up the towel and call it a day. But Abbey doesn&apos;t do this. She gets up, and is ready to race until the end, no matter what. I suspect her body was already pretty tired by this point, so making the effort to continue on requires an extra level of strength and drive.&lt;/p&gt;
&lt;p&gt;But wait! Something more amazing happens! Abbey reaches over and helps Nikki, who is still on the ground and not looking as well, up and encourages her to continue. As I mentioned a moment ago, every second counts, and doubly so if there is even a slight chance to qualify for the finals. Abbey sacrifices her time and her energy to help a fellow runner up and to push on. Sometimes the race isn&apos;t about the time or the place you have, but making it through the distance. In addition, the person she is helping is a competitor, a person that could finish one second ahead of her and prevent her from reaching the finals, or even medaling. Sacrificing your own potential gain so that somebody else can continue shows tremendous character.&lt;/p&gt;
&lt;p&gt;Now we have two women, in pain from a fall, but not giving up, determined to finish the race they had trained so hard and so long for. Having recently run part my RAGNAR relay with an injured knee, I know the will and fortitude it takes to continue running with the pain that is dragging your body down. You can see this in the eyes and body language of the two women, especially Nikki through the rest of the race. They could have simply put in a few hundred more meters, decided it wasn&apos;t worth it, and walked away. The bravery and fortitude shown here is inspiring.&lt;/p&gt;
&lt;p&gt;Abbey finishes a bit before Nikki. She could have headed to the showers, talked with her coach, or simply walked off her race. But she doesn&apos;t. She comes back to cheer Nikki on through her final straightaway and welcome her to the finish line, having finished the race when it was probably so difficult to do so.&lt;/p&gt;
&lt;p&gt;It was encouraging and beautiful. It was a reminder that often competition isn&apos;t to necessarily prove oneself better than the other, but to push each other to achieve feats that wouldn&apos;t normally be accomplished alone. Here were two warriors with virtue. There were no medals involved, but this was my favorite and most inspiring moment at the Olympics this year. Here&apos;s some video from it. Let me know what your favorite moment was.&lt;/p&gt;
&lt;p&gt;https://twitter.com/NBCOlympics/status/765559592705150978&lt;/p&gt;
</content:encoded></item><item><title>Dev Principle 4 Create Highquality Project Documentation</title><link>https://dillieo.me/posts/development/2016-08-16-dev-principle-4-create-highquality-project-documentation/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-08-16-dev-principle-4-create-highquality-project-documentation/</guid><description>project_documentation</description><pubDate>Tue, 16 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a guest post over at my company&apos;s blog, reflecting a bit on why the ugly &quot;D&quot; word in programming is probably one of the best things out there...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.freshconsulting.com/dev-principle-4-create-high-quality-project-documentation/&quot;&gt;https://www.freshconsulting.com/dev-principle-4-create-high-quality-project-documentation/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 8</title><link>https://dillieo.me/posts/development/2016-08-12-freeform-friday-8/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-08-12-freeform-friday-8/</guid><description>freeform.jpg</description><pubDate>Fri, 12 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/p&gt;
&lt;p&gt;We&apos;re one week into the Olympics! I&apos;ve always been a bit of an Olympics junkie. I&apos;ve passively consumed (I still gotta work ya know 8^D) about 20 hours worth of sports up to this point and maybe about an hour of it has actually been &quot;primetime&quot; viewing.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This is the beauty of the streaming options that are available this year as the Internet gets more powerful and more available. I&apos;ve heard a few people remark about how the primetime shows have been more about gymnastics, swimming, and &quot;watching people wait for their medals&quot; instead of really getting a good diversity of events out there, and that&apos;s sad.&lt;/p&gt;
&lt;p&gt;Over the course of the week I&apos;ve seen (and learned new things about) fencing, archery, handball, judo, rowing, kayaking/slalom, badminton, and weight lifting. I was able to witness history as I saw Ines Boubakri, the first female fencer from Africa (Tunisia) to win a medal in the event. Similarly, I saw Daryl Homer, the first saber medalist from the USA in many many many years.&lt;/p&gt;
&lt;p&gt;It&apos;s pretty amazing stuff, a lot of this I never would have seen otherwise on the standard TV stations, or even the &quot;extended&quot; channels that have been out in the past (anybody else remember that &quot;Red, White, and Blue&quot; channels that came out one year. I also had streaming complications with the London Olympics four years ago, so this year has been great.&lt;/p&gt;
&lt;p&gt;Plus we&apos;re only a week in! We&apos;re getting ready to start the next week with a World Record in the 10K, and a tie for the World Record in High Jump or women&apos;s Heptathlon. I can&apos;t wait to see what&apos;s next!&lt;/p&gt;
</content:encoded></item><item><title>Worth Watching Gortimer Gibbons Life On Normal Street</title><link>https://dillieo.me/posts/growth/2016-08-09-worth-watching-gortimer-gibbons-life-on-normal-street/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-08-09-worth-watching-gortimer-gibbons-life-on-normal-street/</guid><description>gortimer_gibbons_cover</description><pubDate>Tue, 09 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night the family enjoyed a bittersweet and powerful end to the short run series &lt;em&gt;Gortimer Gibbon’s Life on Normal Street&lt;/em&gt;. As the credits rolled for the last time I thought to myself how wonderful this series is and how I suspect we’ll be going through it again sometime soon.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here’s a brief rundown: Gortimer and his two best friends, Mel and Ranger, live on Normal Street. It’s a pretty normal street, as Gortimer likes to explain in the opening credits, with a lake at one end and a forest at the other, but what happens in between is a whole different story. Each episode has the trio (and sometimes additional friends) solving some kind of mystery or problem that has beset them or someone else. One time it was a man who has seemed to have forgotten everything. Another time it was a mysterious library van that shows up once a year, which oddly enough ties to a girl who has been missing the same amount of time. Sometimes the mysteries or problems involve themselves. Gortimer struggles with being average and wants to be amazing at everything. Mel is an overachiever that starts to get caught up in what she does instead of who she is. Ranger volunteers as a peer counselor and takes on the burdens of others, but doesn’t want to share his own.&lt;/p&gt;
&lt;p&gt;Each episode reminds me of the classic Twilight Zone episodes, not because a lot of them had a scary aspect to it, but because the “twist” that often happened in each episode emphasized the moral of the story in ways you wouldn’t necessarily have recognized otherwise. I’m a firm believer that the great and profound truths of the universe (goodness, truth, beauty) will never lose their effectiveness when told right. Gortimer does this wonderfully. Our ten year old daughters were able to pick up on these things right away, and I thoroughly enjoyed “rediscovering” them again.&lt;/p&gt;
&lt;p&gt;I highly recommend Gortimer Gibbon’s Life on Normal Street to any family, with kids from 9 to 99. There are a few episodes that may be a little intense for really young ones, since they deal with death in an episode (and the ramifications in a follow up episode or two), as well as one that deals with the “paranormal” (but the ending is a clever surprise). Other than that, head over to Amazon Video and start watching!!!&lt;/p&gt;
</content:encoded></item><item><title>Enjoying The Weather With Some Pi</title><link>https://dillieo.me/posts/development/2016-08-02-enjoying-the-weather-with-some-pi/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-08-02-enjoying-the-weather-with-some-pi/</guid><description>weather station</description><pubDate>Tue, 02 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little over a year ago, I was able to get my &lt;a href=&quot;/unboxing-and-initial-review-acurite-2032crm-pro-weather-station&quot;&gt;personal weather station&lt;/a&gt; up and running and I’ve been enjoying it thoroughly. This year, I was able to take it to the next level and get the weather station up on the cloud thanks to some gifts and a little geekish knowhow.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;A couple of weeks back I picked up a &lt;a href=&quot;https://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt;. If you haven’t heard of one, it is an amazing piece of technology. It a full blown computer: HDMI, Wifi, Bluetooth, 4 USB ports, a 40 pin IO interface, and more! All of this fits on something the size of a credit card. Yep, if you look above, that’s my Pi sitting next to my weather station display. The computer isn’t robust enough for doing any heavy gaming, but it really shines for learning some basic programming as well as a TON of hobby projects of various shapes and sizes (robotics, media centers, etc.) In my case, “weather reporter” was what it was assembled to do. There is a large, and growing, community of kids and adults using their Pis for various tasks, and it’s not hard to find something to inspire you.&lt;/p&gt;
&lt;p&gt;The Pi comes with a Linux based operating system called “Raspian” that I installed and configured for my network in no time. After the initial install, I can access the machine over SSH, so I was able to tuck the machine away (on my wall) and access it without all the hassle of the cables. I’ll admit though, having a 24 inch display of a computer that is a fraction of the size was fun and odd to see considering I remember when the reverse was the norm.&lt;/p&gt;
&lt;p&gt;Next came the software. The Acurite weather station has a USB connection and will output its data frequently through it. They have their own software that will aggregate the data for this, but I wasn’t interested at all in using it. Instead, I found a great open source program called &lt;a href=&quot;http://weewx.com/&quot;&gt;weewx&lt;/a&gt;. It is Linux based, doesn’t require a lot of resources, and runs as a service without any direct interaction. All of this is perfect for the Pi. Installation was simple, and after a simple configuraiton update, I was reporting things to my new &lt;a href=&quot;https://www.wunderground.com/personal-weather-station/dashboard?ID=KAZPRESC176&quot;&gt;Weather Underground PWS&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;So what do I get with all of this? For starters, I can track the weather at my house now wherever I may be through a web page provided by WU.&lt;img src=&quot;@assets/images/posts/2016-08-wu_home.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In addition, I can track it through the Android and iPhone apps that WU provides as well.&lt;img src=&quot;@assets/images/posts/2016-08-20160802_133119000_ios.png&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-08-weather_android.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I’m quite a data junkie as well, so with WU, I’ll have all of my data online and aggregated, so I can start looking at weather trends over time, track hottest/coldest days, and lots of things that the standard aggregation on the weather station itself won’t retain.&lt;img src=&quot;@assets/images/posts/2016-08-wu_stats.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;All of this data is stored on the Pi as well thanks to weewx, so I have a backup of it should something happen online! It’s amazing how technology has come a long way to enable simple, yet powerful, setups for hobbyists like me.&lt;/p&gt;
&lt;p&gt;What’s next? I’m really interested in building a similar app to weewx to run on Windows 10 IoT, since they have made it free to use and compatible with the Raspberry Pi devices. That may take some time though, especially with the nuances of reading and parsing weather data though a generic USB driver, but I’ll be looking forward to the challenge!&lt;/p&gt;
</content:encoded></item><item><title>Connecting Your Local Api In Xamarin And Vmware Fusion</title><link>https://dillieo.me/posts/development/2016-07-28-connecting-your-local-api-in-xamarin-and-vmware-fusion/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-07-28-connecting-your-local-api-in-xamarin-and-vmware-fusion/</guid><description>xamarin-logo</description><pubDate>Thu, 28 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I’m working through my &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt; project, I’m in the process of building native mobile apps, thanks to Xamarin. However, I hit a snag that was preventing me from testing things locally. For some reason I kept receiving timeout errors, when I could clearly see that the API was running. After a bit of digging (combined with a little hair pulling and head pounding), I tracked down the issue. The mobile app on the iOS simulator couldn’t connect to the API on a VMWare Fusion virtual machine. Here’s how you get this to work.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;TLDR;&lt;/h2&gt;
&lt;p&gt;For those of you that like the “quick read” here’s the diagnosis. You need to get the IP address of your virtual machine and add it to your hosts file so that your mobile app knows where to connect. In addition, Windows Firewall has your standard HTTP ports blocked by default, so you need to open them up.&lt;/p&gt;
&lt;h2&gt;Connecting to the VM&lt;/h2&gt;
&lt;p&gt;When you setup Xamarin in Visual Studio you also configure a bridge tool that allows Visual Studio to deploy and debug code within the iOS Simulator. However, the simulator itself is unaware of this bridge and any kind of URLs (localhost, prayerodyssey.dev, etc) will be looking within the context of the host machine.&lt;/p&gt;
&lt;p&gt;It’s not hard to connect to the VM, you just need the IP address of the virtual machine after it boots up. VMWare Fusion provides a handy tool named “vmrun” that is located in the /Applications/VMware\ Fusion.app/Contents/Library/ folder. If this location isn’t already in your path, you can easily add it, or provide an alias (which I’ve done) From there you can run the command...&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vmrun list&lt;/code&gt;...to get a list of the virtual machine running. Once you see your VM in the list, you can get the IP address by passing the name into the getGuestIPAddress command...&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vmrun getGuestIPAddress [PATH_TO_VM]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then you’ll see the IP address of your VM.&lt;img src=&quot;@assets/images/posts/2016-07-xamarin_guest_ip.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From here, simply update your hosts file to include the IP address and the URL of your API in your VM (api.prayerodyssey.dev), and you’re set. Are you still running your API out of localhost? You might want to reconfigure your web/api project to use a custom.dev domain name, which you can do by &lt;a href=&quot;/soup-to-nuts-custom-domains-and-ssl-in-iis-express&quot;&gt;following these directions&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Open the VM Web Port&lt;/h2&gt;
&lt;p&gt;Sure you can ping your virtual machine now, but you’re still not getting to the API or website. The reason for this is that by default IIS Express is closed to external traffic. The next step is to add a firewall rule to allow inbound port 80 and 443 (in the event you’re testing SSL) traffic.&lt;/p&gt;
&lt;p&gt;To start, open the Windows Firewall, and then select “Advanced Settings&quot;&lt;img src=&quot;@assets/images/posts/2016-07-xamarin_firewall_1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From there, select “Inbound Rules” on the left and then select “New Rule…” on the right&lt;img src=&quot;@assets/images/posts/2016-07-xamarin_firewall_2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the window that opens up, go through the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Specify a new Port Rule&lt;/li&gt;
&lt;li&gt;Specify the TCP Port, select Specific Local Ports, then enter “80, 443” for the values.&lt;/li&gt;
&lt;li&gt;Specify “Allow the connection&quot;&lt;/li&gt;
&lt;li&gt;For the profile, select all profiles you wish to enable. I have all of mine checked.&lt;/li&gt;
&lt;li&gt;Give the profile a name, such as “HTTP / HTTPS”&lt;/li&gt;
&lt;li&gt;Click Finish&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once that is done, you should be all set.&lt;/p&gt;
&lt;p&gt;Test Away!&lt;/p&gt;
&lt;p&gt;Now that we can direct our requests to the VM machine and we have the ports open, you can fire up your browser and check things are working.&lt;img src=&quot;@assets/images/posts/2016-07-xamarin_dev.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Similarly, if you relaunch your mobile app in the iOS simulator, it’ll be able to connect to the API in your VM and work as intended.&lt;/p&gt;
&lt;p&gt;Now go out and code! I hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Lowtech Running</title><link>https://dillieo.me/posts/growth/2016-07-26-lowtech-running/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-07-26-lowtech-running/</guid><description>20160717_001513098_iOS</description><pubDate>Tue, 26 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An interesting thing happened to me about a week and a half ago during my &lt;a href=&quot;https://www.runragnar.com/event-detail/relay/northwestpassage&quot;&gt;RAGNAR&lt;/a&gt; run. My phone stopped charging. It had been giving me some grief for a bit but nothing I or my friends could do could get it to charge. This wound up affecting my running...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My phone had my &lt;a href=&quot;/the-running-app-swap&quot;&gt;Strava&lt;/a&gt; app on it. I&apos;ve been using it for a while now in conjunction with my Apple Watch. Without it, I wouldn&apos;t have my splits, my distance, my heart rate, all those things I was starting to use more of to help pace out my run. What if I went out too fast or too slow? How would I know when I was halfway done? This was starting to stress me out a little bit.&lt;/p&gt;
&lt;p&gt;It took me a moment to realize I was getting way too wrapped up in this. Yes there is a time for training, for pacing, and for sticking to specific splits, but this was not that time. This was a time to enjoy cheering my teammates on, doing some crazy things, and enjoy running.&lt;/p&gt;
&lt;p&gt;So I just ran. I started the stopwatch on my Apple Watch just to have some bearing of time. I figured I&apos;d look at it a few times along the run to guess how far I had gone based on how I was feeling. But I never did. I just ran. I enjoyed the gorgeous views that were provided. I relished the Pacific Northwest air. I ran down some runners along the way too. I just ran.&lt;/p&gt;
&lt;p&gt;In the end, I ran too hard for my first run, probably never would have made my second run if I was focused too much on time, and had injuries so I brute forced my way through my third run. It didn&apos;t matter. I just ran....and that was the point. Interestingly enough near the end of the second day my phone started charging itself again. I haven&apos;t had any problems with it since. I suspect God has a bit of humor, and knows how sometimes the little things can help me remember the bigger things. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Team Fresh Andamp Furious Completes Third Ragnar Northwest Passage</title><link>https://dillieo.me/posts/growth/2016-07-21-team-fresh-andamp-furious-completes-third-ragnar-northwest-passage/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-07-21-team-fresh-andamp-furious-completes-third-ragnar-northwest-passage/</guid><description>20160716_213003289_iOS</description><pubDate>Thu, 21 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s the recap I penned on my RAGNAR experience this past weekend. I can&apos;t wait for the next one!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/team-fresh-furious-completes-third-ragnar-northwest-passage/&quot;&gt;http://www.freshconsulting.com/team-fresh-furious-completes-third-ragnar-northwest-passage/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Maintaining Net Core Rc1 Project References In Azure</title><link>https://dillieo.me/posts/development/2016-07-20-quick-tip-maintaining-net-core-rc1-project-references-in-azure/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-07-20-quick-tip-maintaining-net-core-rc1-project-references-in-azure/</guid><description>quick-tips.jpg</description><pubDate>Wed, 20 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes you just have to stick with older code...&lt;/p&gt;
&lt;p&gt;I ran into a problem a while back when deploying an application to Azure that was using the DNX /.Net Core RC1 Framework. I started seeing errors such as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Unable to resolve dependency Microsoft.Extensions.Options 1.0.0-rc2-final
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Similarly when I would attempt to compile I would see an error such as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;The dependency Microsoft.Extensions.Options 1.0.0 in project ZZZ does not support framework DNX,Version=v4.5.1.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Something strange was going on...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It was odd considering I hadn&apos;t updated any of the project libraries and had only recently made a small processing change. Doing some tech support and troubleshooting indicated I should just update to RC2 since some of the dependencies were defaulting there to resolve things.&lt;/p&gt;
&lt;p&gt;The problem with this is that Microsoft is typically really good about maintaining reverse compatibility with libraries and it seemed odd that it would break now. In addition, some of my other libraries were incompatible with RC2, which really would cause a headache if I had to find new libraries to solve my issues.&lt;/p&gt;
&lt;p&gt;Digging through things a bit more led me to discover that some of my project dependencies were using the version format of:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1.0.0-*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This allowed the package manager to pull the most recent version along that version tree, which was causing it to pull the RC2 libraries. What was tricker was that one of the libraries had a dependency that allowed it to pull a RC2 version, which I didn&apos;t find until I dug into the project.lock.json file.&lt;/p&gt;
&lt;p&gt;Changing these references to...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1.0.0-rc1-final
```...and letting the package manager update the project did the trick!

Hopefully this saves you some of the sanity I lost along the way 8^D&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Serenity</title><link>https://dillieo.me/posts/development/2016-07-18-serenity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-07-18-serenity/</guid><description>20160716_103816658_iOS</description><pubDate>Mon, 18 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There’s that moment. It’s nearly three o’clock in the morning, out in the middle of the Pacific Northwest and it is pitch black, minus a blinking light on my back and a head lamp illuminating about 20 feet in front of me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;All I really see is a white line in front of me. The white line is that of the road, turning through the forest as I run through it. It’s just me, the road, and a light misting every now and then that I feel from the light rain that we are getting. My body is fatigued from the miles that I put in roughly six hours earlier, but without the distractions of the trees and the scenery, that all seems to fade away. I know that there are hills to conquer up and stride down, but I don’t see them. I simply feel a twinge on my quads as I start to climb and a pull on my hamstrings as I go down. If this were during the day, I believe I would be struggling with myself to continue on my run. My pace isn’t blazing, but it’s quicker than most of the training I’ve done and that tends to stress out my muscles more. Yet instead of pulling back, I reach out and push my body just a bite.&lt;/p&gt;
&lt;p&gt;It’s a gorgeously profound moment of serenity.&lt;/p&gt;
&lt;p&gt;It is the times like this that I often feel closest to God. I really don’t have the exact words that go through my mind, but it is through the Holy Spirit that I communicate. I’m reminded of the blessings of my wife and kids, who have let me go away this once on my birthday to participate in the event that got me here. I’m reminded that I’m by far not the most noteworthy person on this planet, but I am providing for them, and influencing the small kingdom around me to which I have been given, and that is what is good, true, and beautiful.&lt;/p&gt;
&lt;p&gt;I am aware of my struggle briefly again, as the muscles ache a bit again, and I’m reminded that God is there, most importantly through those struggles. Most likely it is Him carrying me through this longer run, as a strained tendon on my knee had be believing I might not complete this run when I first started out. More importantly, I’m reminded that the microcosm of this run reflects the macrocosm of of my life. So much is a run in the dark where there is the feeling of the immensity of things around me, but not always visible, just a guiding light and a line that I track through each step, going up and down hills and flowing through the turns along the way.&lt;/p&gt;
&lt;p&gt;My run is nearly three-quarters done when I reach Deception Pass. It is a relatively narrow bridge, barely enough for two lanes of traffic and a sidewalk along side for people to cross. I know that hundreds or thousands of feet below me is a small inlet where the ocean comes in. A little bit of the moonlight is shining through the clouds and I can barely make out the reflection of the waves and the current below. I can hear the water rushing. With just me, and God, and the waves below, I stretch out my arms and fly over the waters below, feeling the wind blow even more, this brief and wonderful 82 minutes treasured in my soul forever.&lt;/p&gt;
</content:encoded></item><item><title>Review I Robot</title><link>https://dillieo.me/posts/development/2016-07-15-review-i-robot/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-07-15-review-i-robot/</guid><description>i_robot_cover</description><pubDate>Fri, 15 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When cleaning out my garage last month, I discovered in a box that I had a copy of &lt;em&gt;I, Robot&lt;/em&gt; by Isaac Asimov. You&apos;re probably heard the &quot;three laws of robotics&quot; before, though the movie or elsewhere in science fiction. After having such a great time reading the &lt;a href=&quot;/review-the-foundation-trilogy-by-isaac-asimov&quot;&gt;Foundation Series&lt;/a&gt;, I figured I would give this one a try, and I was even more impressed than before.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;In case you haven&apos;t heard them before, the three laws of robotics are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A robot may not injure a human being or, through inaction, allow a human being to come to harm.&lt;/li&gt;
&lt;li&gt;A robot must obey the orders given it by human beings except where such orders would conflict with the First Law.&lt;/li&gt;
&lt;li&gt;A robot must protect its own existence as long as such protection does not conflict with the First or Second Laws.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At first glance, these laws seem pretty straightforward and rigid. However, we discover that these laws, ingrained into every robot created, do not work as smoothly as they sound at times. These &quot;not so smooth&quot; scenarios are what plays out in a series of short stories that make up the book. The short stories are linked together through interviews with Susan Calvin, a robopsychologist who has been with robots since their early conception. To some extent the short stories trace the evolution of robotics as they are ingrained more and more into society and even run parts of it.&lt;/p&gt;
&lt;p&gt;What fascinates me is that the laws aren&apos;t necessarily discrete rules to their programming, but more like weights that influence the decisions that a robot will make. It is the weight, and the individual robots experiences, that being to take shape in each chapter. Part of the book unravels almost like a mini mystery for me. Can I figure out what is going wrong before the people involved figure it out, and before it is too late?&lt;/p&gt;
&lt;p&gt;Beyond the &quot;mysteries&quot; of each chapter are some deeper moral and philosophical issues that start to come into play. If a child loves a thing so much, and it serves her back, does it start to get some form of &quot;personhood&quot; by itself? How can you &quot;disprove&quot; a person is a robot when a really nice person exudes the same kind of behavior a robot would? Can you trust something that you made, which is imperfect, that has the potential (and potentially has) surpassed your own capabilities and reasoning?&lt;/p&gt;
&lt;p&gt;All of these nuggets and more are packed into a book that was roughly 300 pages long. It was a quick and fascinating read and I just might have to go through it again to see if I&apos;ve missed anything. I give it a solid 5 out of 5. Go grab a copy and give it a read!&lt;/p&gt;
</content:encoded></item><item><title>Fresh Running Tech</title><link>https://dillieo.me/posts/growth/2016-07-11-fresh-running-tech/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-07-11-fresh-running-tech/</guid><description>Running-Tech-2-1024x427</description><pubDate>Mon, 11 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;...here&apos;s an article I co-wrote that was published last week about some tech we&apos;re using for our upcoming RAGNAR.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/fresh-running-tech/&quot;&gt;http://www.freshconsulting.com/fresh-running-tech/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Bitcoin Alert Hashocean Diary Of A Scam</title><link>https://dillieo.me/posts/development/2016-07-05-bitcoin-alert-hashocean-diary-of-a-scam/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-07-05-bitcoin-alert-hashocean-diary-of-a-scam/</guid><description>bitcoin-scam-alert</description><pubDate>Tue, 05 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, it&apos;s been a week since I first reported the &lt;a href=&quot;/bitcoin-alert-hashocean-potential-scam&quot;&gt;potential of HashOcean being a scam&lt;/a&gt;, and at this point I believe I can safely flag it as such. I was fortunate in that I had only invested a few dollars into the mining operation and had actually received a payout. What is more interesting though, is the crazy path of stories, sites, and information that has been passed around over the week. While I haven&apos;t had the most in-depth recollection of what has transpired, here is what I&apos;ve seen from my daily checkins on the issue over the course of a week.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;After a relaxing weekend I went to log in to check how my bitcoin mining fared over the weekend. I wasn&apos;t expecting any major spikes, but I was looking to either withdrawal my small amount of profits or reinvest it again. Oddly enough the website wasn&apos;t responding. Up to this point the communication stream from HashOcean had been pretty minimal. They had a Twitter and Facebook account, but they were mainly for small updates or marketing, so I figured I would try out Twitter, since it tends to have a more &quot;geekish&quot; pulse on these types of things.&lt;/p&gt;
&lt;p&gt;Surprisingly enough, there was already a fair amount of chat in twitter regarding the issue. The site had already been down for a couple of days. Worse than that, the FaceBook had gone down and the Twitter account was unresponsive. Lots of tweets were already denouncing HashOcean as a scam, having stolen approximately $50M worth of bitcoin from roughly 700,000 people right before the &lt;a href=&quot;http://www.coindesk.com/making-sense-bitcoins-halving/&quot;&gt;bitcoin halving&lt;/a&gt; was to take place. This was a Ponzi scheme from the beginning and the culprits were cashing out and running.&lt;/p&gt;
&lt;p&gt;Interestingly enough, there were reports out there that HashOcean had reported they were hacked. Nothing was on their Twitter account, but there were a few reports (with screenshots) that HashOcean had been hacked and they were scrambling to get back up and running as soon as possible. Word was that the hackers had taken over the domain name and Facebook page. While I haven&apos;t seen much in the past with FB take overs, I&apos;ve read enough articles out there to note that a hacker can be particularly lethal by stealing a domain name, redirecting/parking it elsewhere, and then having it out there for ransom.&lt;/p&gt;
&lt;p&gt;To make matters worse, there were a couple of sites that had clever alternatives to the original name, such as hashoceans.com (note the S at the end) or hashocean.co.uk that looked like the original site but the login pages were scams to grab logins or provide the impression things were running again. There was even another resource out there claiming to be a refund site run by HashOcean to serve customers. The wording of the e-mail said that they only had a hash of the database, so they needed your e-mail address, password, and bitcoin address in order to properly refund your money. Hopefully everybody saw all of the huge red flags completely for that one.&lt;/p&gt;
&lt;p&gt;Still, there were a few random tweets out there from people who said they had talked to HashOcean and that they were still there and working to get back online in two days. With all the chaos surrounding a hack, it seems reasonable to some extent that. Some of the bitcoin news aggregates were also passing around these few details in their news feeds, so it seemed to add a bit of credence to it. It seems reasonable enough that if HashOcean was really working hard to get things up. They&apos;d keep their nose to the grindstone to get things done and worry about social silence and it&apos;s repercussions later.&lt;/p&gt;
&lt;p&gt;But that is part of the problem as well. In the minds of some folks, the idea that mining could get them rich quick, and for a relatively small investment up front, starts to cloud their judgement. The site looks pretty solid when I look at it. All the core pages are there, and they even have a list of founder with photos, but when I try to dig deeper, and maybe get photos of the mining rigs they have setup, since they claim to be international. Yes they have a Twitter and Facebook page, but almost all the posts seem to be simple marketing posts and nothing about interaction with users.One of the originating mining rigs is outside of the US, so sure their English might be a bit broken to begin with.&lt;/p&gt;
&lt;p&gt;Then things got worse. The two day turnaround came and went, and the sites were still down. There was still no traffic on the Twitter feed (the original Facebook page was still down) and now there were a few miscellaneous tweets circulating that some of the photos used for the founders page were simply stolen from somebody else that has nothing to do with bitcoin. In addition, some conversations around Reddit circulated questioning whether or not there were actually 700K users to begin with. Most of that data could be easily forged with a simple script that might increase it&apos;s value after a little while. We can also look at some of the Twitter accounts posting the &quot;only 2 days to go&quot; or &quot;I&apos;ve talked to them&quot; tweets and note that their accounts are relatively new, or only have two or three tweets to their name, or maybe both. These cast suspicion that they are merely accounts created by a bot, or potentially hacked accounts used by a botnet, considering they often say, or retweet the exact same thing. Maybe I tend to try to give the benefit of the doubt in most situations, so the conflicting reports make it hard to discern what is truly going on.&lt;/p&gt;
&lt;p&gt;A new development arose! An ethical hacking group, named &lt;a href=&quot;https://twitter.com/kypertech&quot;&gt;KyperTech&lt;/a&gt;, arose out of the scandal and vowed to track down the hackers and help bring them to justice. They were looking for some volunteers as well and made some great progress. Then apparently the hackers attempted to DDOS them back. They fought through that and had allegedly found all the locations except for one. After that things were quiet for a day or so and a bizarre message showed up in binary. KyperTech later explained that they had been threatened by the hackers to reveal their identity if they continued to pursue things. There were e-mail screenshots associated with this info. However, a day later (early this morning) they indicated they had overcome this and have even said that they left a Google Verification card at a mailbox that was monitored and the FBI took two people into custody. What do we make of all of this? It seems great at the initial onset, but my growing skepticism of the entire issue makes me wonder. The &quot;hack back&quot; has potential, but if I was a potential scammer, why in the world would I go to my mailbox after doing a &quot;cut and run&quot; to pick up some kind of Google verification e-mail. It could be that this group/persona is a distraction while other cleanup is done or funds are redirected elsewhere.&lt;/p&gt;
&lt;p&gt;At this point, I believe it is safe to say that HashOcean was indeed a scam. To a lesser degree, it could even be possible that the company was faltering financially to begin with, let their domain expire so they could close up shop, and others have swept in to try and profit and scam users that have been left high and dry. I&apos;ve been fortunate enough to have been only slighted roughly $5 of money that was leftover in an old Bitcoin wallet to begin with, and I had no direct banking ties that could have been potentially revealed.&lt;/p&gt;
&lt;p&gt;What am I doing as a followup? I still haven&apos;t lost hope in the cloud mining concept. I have gone ahead and invested some of my returns that I had on the same site I started mining Ethereum with called &lt;a href=&quot;https://hashflare.io/r/F1FAF9F2&quot;&gt;HashFlare&lt;/a&gt;. Their returns are not as drastic as HashOcean, helping lend some level of credibility, and they have been paying out well and have a few more markers to help verify legitimacy. If you&apos;re interested, open up a &lt;a href=&quot;https://www.coinbase.com/join/dillieo&quot;&gt;Coinbase&lt;/a&gt; account in which to deposit/gather your funds and then register with &lt;a href=&quot;https://hashflare.io/r/F1FAF9F2&quot;&gt;HashFlare&lt;/a&gt; and have your withdrawals go there.&lt;/p&gt;
&lt;p&gt;Happy mining and be careful on where you invest!&lt;/p&gt;
</content:encoded></item><item><title>The Remodel</title><link>https://dillieo.me/posts/growth/2016-06-30-the-remodel/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-06-30-the-remodel/</guid><description>20160629_200232248_iOS</description><pubDate>Thu, 30 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been a little quiet online this week since I&apos;ve been working on remodeling the guest bathroom. There&apos;s been a lot of learning, a few hiccups, and a LOT of hard work along the way. Here I thought my running made me tired. This stuff is wiping me out on a daily basis 8^D We&apos;re excited for the final results, just need to keep making progress to get there! To those of you that do this kind of thing on a daily basis, I salute you!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Bitcoin Alert Hashocean Potential Scam</title><link>https://dillieo.me/posts/development/2016-06-27-bitcoin-alert-hashocean-potential-scam/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-27-bitcoin-alert-hashocean-potential-scam/</guid><description>bitcoin-digital</description><pubDate>Mon, 27 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Considering I had a small mining rig going, and even made a recommendation, about this service, I felt it important to send out a quick note.&lt;/p&gt;
&lt;p&gt;There have been reports that the HashOcean service is a big scam and has cut and run with their funds over the weekend. As of this morning I haven&apos;t been able to login myself, and with my configuration set to not auto-payout, it&apos;s hard to know for sure. Plenty of rumors are fast and furious, and a few &quot;official&quot; sources are saying it is just a hack, but time will tell.&lt;/p&gt;
&lt;p&gt;For the moment, I can&apos;t recommend HashOcean until I know for sure, and you should hold off too.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Review Killing Patton</title><link>https://dillieo.me/posts/development/2016-06-24-review-killing-patton/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-24-review-killing-patton/</guid><description>killing_patton_cover</description><pubDate>Fri, 24 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve never been much of a history kind of reader, but having heard good things about the &quot;Killing Series&quot; by Bill O&apos;Reilly and Martin Dugard so I decided to give this one a try, since my father in law had just finished it and enjoyed it as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I found the book very heavy, but fascinating to read. There were a lot of details poured into some of the most significant battles of World War II that gave a deeper picture of what was going on. There was a lot of backstory that I had never heard about in my history classes, and I enjoyed it a lot. I also was reminded of the atrocities of war and of Hitler, which made for some rough reading in some pages.&lt;/p&gt;
&lt;p&gt;The overall structure of the book played out like a narrative of the events of World War II after D-Day. You would be introduced to a battle, some of the main people, and how things were playing out. Having the benefit of history and lots of research behind us, the narrative would pivot over to discuss the background of a person and how they wound up in charge of a specific division. It may shift to the backstory of why the Germans were defending (or attacking) a particular city to begin with. All of this deepens the story more, adds more insight, and allows you to identify more with the people you are reading about.&lt;/p&gt;
&lt;p&gt;Patton plays a big role in a lot of this too. You get to read about his charisma, his drive, and his brilliance which made him the legacy that he is. However, I felt that the book was more about World War II itself, and not necessarily Patton, except for some of the final chapters leading up to his death. I was enthralled by the book, but don&apos;t know if I learned as much about Patton as I was expecting to.&lt;/p&gt;
&lt;p&gt;Overall I do recommend this book and give it 3.5 out of 5 stars. I&apos;m looking forward to reading more in the series.&lt;/p&gt;
</content:encoded></item><item><title>Balancing Fatigue And Overwork</title><link>https://dillieo.me/posts/growth/2016-06-22-balancing-fatigue-and-overwork/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-06-22-balancing-fatigue-and-overwork/</guid><description>20160622_134927766_iOS</description><pubDate>Wed, 22 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you house is up on a hill, pretty much every run you go on is going to require an uphill climb to get back to where you started. Hmm, maybe there is something profound there, maybe not.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been working on my RAGNAR training and have reached some new milestones and observations. There&apos;s a point where you finish a run, and while you feel great, your legs are sore, you give yourself a headache, your lungs are extremely fatigued, and the rest of the day you barely trudge through. This is when I&apos;ve overworked myself. It&apos;s okay to do on some days, but most of the time not, especially when you have to put in 8 hours of work and do other duties.&lt;/p&gt;
&lt;p&gt;There&apos;s another point where you finish a run and while your feel great, the run was pretty brutal. There were those three ugly hills you had to tackle at mile 6 (of a 9 mile run) and your opening pace may have been a little too aggressive that your pacing at the end suffered (especially on said ugly hills). However, when you finish, your body is tired, maybe a little sore, but a shower, hydration, and a few hours off your legs and you&apos;re feeling pretty decent again. This I consider fatigue. The sign of a good overall workout and the motivation for the next one.&lt;/p&gt;
&lt;p&gt;I&apos;m striving more for fatigue than overworking myself now, and it&apos;s starting to pay off, especially on the long run days. It means I&apos;m getting a solid base of miles on my body that I can build from and it is exciting.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Run Entityframework Migration Seeds For Migratedatabasetolatestversion Configuration</title><link>https://dillieo.me/posts/development/2016-06-17-quick-tip-run-entityframework-migration-seeds-for-migratedatabasetolatestversion-configuration/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-17-quick-tip-run-entityframework-migration-seeds-for-migratedatabasetolatestversion-configuration/</guid><description>quick-tips.jpg</description><pubDate>Fri, 17 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yep, a long title, and a a complete HT to this &lt;a href=&quot;http://stackoverflow.com/questions/36024400/migratedatabasetolatestversion-no-running-seed-method&quot;&gt;StackOverflow post&lt;/a&gt;, but considering it took me a day of digging and tweaking to ultimately find it, I&apos;m leaving myself a copy of it here for future reference.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;Entity Framework has a great migrations tool that allows you to incrementally update your database structure based on changes. There is also a seeding method available to populate your database with some initial data. Unfortunately, by default this seeder method is only called when creating the database for the first time. If you&apos;re using the MigrateDatabaseToLatestVersion initializer option (rather common) the seed method won&apos;t be called until the second time the application is updated/refreshed, which can cause some confusion, and frustration as well.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;The solution is to check for any pending migrations and force the seed method to run when this happens after the standard update completes. Here are the updates to your files:&lt;/p&gt;
&lt;h3&gt;Startup.cs (or something similar that you initialize your app with)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Database.SetInitializer(new MigrateDatabaseToLatestVersion&amp;lt;MyDbContext, Configuration&amp;gt;());&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Configuration.cs (in your Migrations folder)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;private readonly bool _pendingMigrations;

public Configuration()
{
    AutomaticMigrationsEnabled = true;

    // Check if there are migrations pending to run, this can happen if database // doesn&apos;t exists or if there was any change in the schema
    var migrator = newDbMigrator(this); _pendingMigrations = migrator.GetPendingMigrations().Any();

    // If there are pending migrations run migrator.Update() to create/update the // database then run the Seed() method to populate the data if necessary. 
    if (_pendingMigrations) 
    { 
        migrator.Update(); 
        Seed(newMyDbContext()); 
    }
}

    protected override void Seed(MyDbContext context) 
    { 
        // Your seed code here... // Make sure to have the context save changes and to call the base seed method afterwards. 
        context.SaveChanges(); 
        base.Seed(context); 
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There you have it! Now your database will update itself and seed itself during the very first, and subsequent updates. No second calls needed!&lt;/p&gt;
</content:encoded></item><item><title>Bitcoin For The Newcomer Profit</title><link>https://dillieo.me/posts/development/2016-06-16-bitcoin-for-the-newcomer-profit/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-16-bitcoin-for-the-newcomer-profit/</guid><description>bitcoin-digital</description><pubDate>Thu, 16 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple months ago &lt;a href=&quot;/bitcoin-for-the-newcomer-hope-again&quot;&gt;I had expressed hope&lt;/a&gt; that for a hobbyist bitcoin person, one could participate in the &quot;experience&quot; and actually turn a little profit from it. Today those hopes have come to fruition as I made back my initial investment, and have started turning a profit!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;About a week shy of two months ago, I signed up with &lt;a href=&quot;https://hashocean.com/?rid=499884&quot;&gt;HashOcean&lt;/a&gt;, a cloud mining service that has a low price point of entry, and had demonstrated continuous payouts through a bitcoin review site called &lt;a href=&quot;https://bitmakler.net/&quot;&gt;BitMakler&lt;/a&gt;. So I gave it a go. I took a measly.01366 BTC ($6.32 USD) bought some hashing power, and waited. The estimated &quot;ROI&quot; was two and a half months. However, thanks to the 15KH bonus given for signing up and the 2KH bonus I received from a referral, that time was shaved down to just shy of two months.&lt;/p&gt;
&lt;p&gt;Better yet, I&apos;ve technically made more than my initial investment. Bitcoin has been surging in price lately and so that same.01366 BTC I mined back is technically worth $9.35. That extra three bucks goes a long way to get some coffee around here too 8^D&lt;/p&gt;
&lt;p&gt;One interesting thing I discovered is that HashOcean isn&apos;t truly a &quot;bitcoin mining&quot; operation as a lot of places are. What HashOcean does is mine Scrypt based cryptocurrencies (LiteCoin, DogeCoin, DarkCoin, etc.) based on what is most profitable and then sells them off for bitcoin. This allows them to keep costs more manageable (they are using graphics cards) and it&apos;s clever since they can easily swap to whatever is most profitable at the time.&lt;/p&gt;
&lt;p&gt;So what am I going to do with my new found wealth? Two things...&lt;/p&gt;
&lt;h2&gt;Re-Invest&lt;/h2&gt;
&lt;p&gt;I&apos;ve already purchased another 20KH of hashing power to start building up my mining platform. Now that the platform has a good track record, I can see building more off of it. I&apos;ll keep reinvesting for a while until to get the mining power up. Since price of bitcoin is up, I was able to reinvest for only.009 BTC instead of the original.01366, which is also great.&lt;/p&gt;
&lt;h2&gt;Diversify&lt;/h2&gt;
&lt;p&gt;Lately, another cryptocurrency called Ethereum is gaining a lot of traction. Considering that CoinBase recently expanded their online exchange to include Ethereum (and none of the other Scrypt based cryptocurrencies out there), I&apos;m thinking that it might have some merit. It&apos;s price isn&apos;t nearly as high as Bitcoin, and I found another &quot;low barrier of entry&quot; cloud mining site through &lt;a href=&quot;https://hashflare.io/r/F1FAF9F2&quot;&gt;HashFlare&lt;/a&gt; that looks promising and is providing returns on investment. So I&apos;ll buy some Ethereum mining power there and see how that plays out.&lt;/p&gt;
&lt;p&gt;It&apos;s fun to be back in the cryptocurrency flow and who knows, maybe I&apos;ll make enough after a while to help fund my &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;side project&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Sixtyseven Minutes</title><link>https://dillieo.me/posts/growth/2016-06-14-sixtyseven-minutes/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-06-14-sixtyseven-minutes/</guid><description>running_tall</description><pubDate>Tue, 14 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s amazing to think that this morning I was doing something continuously for over an hour non-stop. Sure I&apos;ve cleaned out the garage, or chopped firewood, or done various chores, but to put your body in a continuous &quot;stressful&quot; state (apparently an average of 169 bpm on my heart rate sensor and I have some hills to verify it!) for that long is something I haven&apos;t thought much about before. It&apos;s amazing what the body can do, how we&apos;re fearfully and wonderfully made, and how small changes (such as getting up and sticking to a routine) can lead to some amazing payouts after time. Running reminds me so much of the long game, of the benefits of self-discipline, self-examination, and of pacing that apply to the road, the trail, and to life.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Mobile Screen 1 And Xamarin Notes</title><link>https://dillieo.me/posts/development/2016-06-08-mobile-screen-1-and-xamarin-notes/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-08-mobile-screen-1-and-xamarin-notes/</guid><description>PrayerOdyssey_Simulations</description><pubDate>Wed, 08 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Things are really starting to move now!!!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://prayerodyssey.wordpress.com/2016/06/08/mobile-screen-1-and-xamarin-notes/&quot;&gt;https://prayerodyssey.wordpress.com/2016/06/08/mobile-screen-1-and-xamarin-notes/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Running Tech Huzzah For Strava</title><link>https://dillieo.me/posts/development/2016-06-06-running-tech-huzzah-for-strava/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-06-running-tech-huzzah-for-strava/</guid><description>Strava_Run</description><pubDate>Mon, 06 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple of weeks ago I mentioned that I was in a &quot;&lt;a href=&quot;/the-running-app-swap&quot;&gt;tech transition&lt;/a&gt;&quot; from my old running app. After doing some more testing and running I&apos;ve become hooked on &lt;a href=&quot;https://www.strava.com&quot;&gt;Strava&lt;/a&gt;, and here&apos;s why.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Simple&lt;/h2&gt;
&lt;p&gt;I find Strava really simple to use. Some people will criticize this aspect of things but I just need a simple way to start off a run, get simple mile notifications. When I complete my run, I have a spot to change the title or add a description (I&apos;m starting to keep notes in there) but there is also a section for comments, for those that I share my run with. That&apos;s it. There&apos;s no music integration (like Nike+) but I&apos;m fine with that since I&apos;ve never been much of a music runner, except &lt;a href=&quot;/the-run&quot;&gt;for the stuff stuck in my head&lt;/a&gt;. There is no automatic entries for weather or temperature at time of run, but I can manually add that kind of stuff if I really want to start tracking it.&lt;/p&gt;
&lt;h2&gt;Apple Watch Integration&lt;/h2&gt;
&lt;p&gt;One of the big reasons I was looking for something new was because of the issues I kept having with my Apple Watch and the primary app on the phone. With Strava, I haven&apos;t had any difficulties starting a new run on the watch. In addition, the interface is super simple, compared to what I&apos;ve seen in Runtastic and Nike+. There&apos;s one &quot;stats&quot; view which will give you your distance, current pace, and overall time. Your heart rate can be tracked as well if you have enabled it. Make one swipe and you can easily pause/resume your run, no trying to tap in a top corner on your watch, no having to &quot;force press&quot; to bring up the display. It&apos;s the best experience I&apos;ve had so far with my apple watch pairing.&lt;/p&gt;
&lt;h2&gt;Data! Data! Data!&lt;/h2&gt;
&lt;p&gt;With all the talk of simplicity, Strava does an amazing job of aggregating and presenting the data that it does work with. My favorite feature is how Strava automatically tracks your runs based on where you ran. This is a little different than the &quot;routes&quot; feature that you have. For example, I can load up one of my runs......click the &quot;View Matched Runs&quot; link, and get this...&lt;img src=&quot;@assets/images/posts/2016-06-strava_matched_runs.png&quot; alt=&quot;Strava_Matched_Runs&quot; /&gt;&lt;/p&gt;
&lt;p&gt;No route creation and linking necessary! I can see how my runs are improving, and easily dive into one of those individual runs if I want to track run splits and the like.&lt;/p&gt;
&lt;p&gt;Another interesting thing is Strava has that I haven&apos;t seen elsewhere is a thing called &quot;GAP&quot; pace. GAP pace essentially tells you how fast you&apos;d be running on a flat course vs a hilly course. Given that all of my runs involve some kind of hill, it makes for an interesting measure to translate to, especially with my upcoming RAGNAR relay where a lot of the course is predominantly flat.&lt;img src=&quot;@assets/images/posts/2016-06-strava_gap_pace.png&quot; alt=&quot;Strava_GAP_Pace&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Minimal Intrusion on Free Version&lt;/h2&gt;
&lt;p&gt;Unlike Runtastic, which had two or three banners on the page, and would overlay part of my running map with the &quot;premium upgrade&quot; option, Strava keeps that out of the way. There are certain advanced diagnostics (which I&apos;m definitely interested in) that are available on the Premium plan, but there is a little badge by those menu options and that is it. No overlay on the maps, no hinderance in the mobile app either. Very classy and user friendly.&lt;/p&gt;
&lt;h2&gt;Social Interaction&lt;/h2&gt;
&lt;p&gt;I&apos;ll admit that I wasn&apos;t expecting to use this feature at all, but Strava does a nice job and building communities and connecting with friends. For example, just browsing through my sidebar I found there was a &quot;Clubs&quot; section. I went in there, typed in my hometown, and found two clubs had been created. They show up in a separate feed, but I can track what other runners are doing near me, hopefully to encourage them and potentially get new routes to run as well. Strava makes it easy to find your friends on Facebook that are using the app, and so I have a small network of people to encourage (and be encouraged) by. There is no live tracking feature like there are in other apps, but at the moment I&apos;m not overly concerned by this one.&lt;/p&gt;
&lt;h2&gt;Try it Out!&lt;/h2&gt;
&lt;p&gt;I highly encourage you to give &lt;a href=&quot;https://www.strava.com&quot;&gt;Strava&lt;/a&gt; a try. If you&apos;re a cycler or a swimmer, you&apos;ll find the app is optimized for that as well. It&apos;s a simple, well put together app that gives you all the important data points you&apos;ll most likely want into a free app, with a non-intrusive way to support and upgrade your experience later on. I was hooked in one day, it just took me a bit longer to write about it 8^D&lt;/p&gt;
</content:encoded></item><item><title>Fresh High Five</title><link>https://dillieo.me/posts/development/2016-06-02-fresh-high-five/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-06-02-fresh-high-five/</guid><description>IMG_0175</description><pubDate>Thu, 02 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Five years ago yesterday, to be precise, I made a flight up to Bellevue, Washington and took a deep dive into a much larger world of programming, consulting, and all things in-between at &lt;a href=&quot;http://www.freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt;...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Coming from a government (and before that University) background, I was a little intimidated by things at first, especially since my first day on the job consisted of helping host a &lt;a href=&quot;http://www.freshconsulting.com/top-seven-reasons-to-attend-social-media-301/&quot;&gt;social media conference&lt;/a&gt; that we were putting on. I met a lot of important people in the a realm I was just getting used to (I got my job through Twitter after all 8^D) and experienced my first &quot;live tweet sessions&quot; while speakers were giving their talks, which had an impressive amount of meta discussions going on in real time. Let&apos;s not forget we had custom soda for this event too...&lt;img src=&quot;@assets/images/posts/2016-06-img_0176.jpg&quot; alt=&quot;IMG_0176&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From there things moved fast! My first assignment was to build an extension that provided an RSS feed for a site using a PHP MVC framework. I had worked a bit with PHP, but some of this was new territory. I missed my first deadline by a couple of days, but we were learning along the way and the client was still content with our progress.&lt;/p&gt;
&lt;p&gt;From there things start to blur in a lot of ways. There have been clients small and large (large communications agencies, national impact foster care organizations). There have been projects small and large (WordPress setups, internal user portals, intense dashboards mapping data at the state and county level, platforms for having users find odd jobs near them on both mobile and web) too. Some of these clients have been &quot;one off&quot; clients that you work with and move one. A few others, are long standing, or returning customers. Currently I&apos;m working with a client that I worked with three years ago, and it&apos;s exciting to see the same code I wrote still active and healthy, with the chance to improve upon it more.&lt;/p&gt;
&lt;p&gt;One of the things I&apos;ve appreciated most about my job is the ability to explore and work with new libraries and frameworks. Microsoft Azure, Amazon Web Services,.Net MVC, Laravel, AngularJS, D3, and HighCharts are just a drop in the bucket of things I&apos;ve worked with. My front-end development skills have improved significantly because of this. While I&apos;m no front end designer (we have AMAZING people that handle that), I know that in a pinch I can jump in and help put things together, giving myself legitimate &quot;full stack&quot; status.&lt;img src=&quot;@assets/images/posts/2013-06-wp_20130604_001.jpg&quot; alt=&quot;Yep, that&apos;s how I roll...&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Admittedly working in this environment can be rather frantic at times if you&apos;re not careful. There have been times where I&apos;ve been active in 3 or 4 projects simultaneously, and at one point 2 of them I would consider major projects that demanded a lot of attention and detail. Those projects are jumping across different languages, which adds a little bit of &quot;shifting gears&quot; to it. Keeping a good balance and track of your time is extremely important for this, as well as a bit of patience with yourself. Admittedly my &lt;a href=&quot;/kanned-tomatoes-a-kanban-pomodoro-way-of-getting-things-done&quot;&gt;Personal Kanban / Pomodoro&lt;/a&gt; efforts along those lines has not been the best, but it has been helpful.&lt;/p&gt;
&lt;p&gt;Through it all it&apos;s the team I work with that has been the best part. We&apos;ve had a bit of turnover since I first started. Based on active employees, I&apos;m employee #4 behind the two founders and our Front-End Dev Lead. There were 4 other part time folks that were there when I started and have moved on to other things. We&apos;re now up to 55 employees (and I think we&apos;re hiring another one next week), which includes full blown offices in Thailand and the UK. It&apos;s amazing how we&apos;ve grown!&lt;/p&gt;
&lt;p&gt;While most firms can be rather focused on &quot;work only colleagues&quot;, I&apos;ve come to view the people I work with more as friends and family, even while working remotely. We&apos;ve &lt;a href=&quot;http://www.freshconsulting.com/team-fresh-completes-ragnar-northwest-passage/&quot;&gt;run RAGNARs together&lt;/a&gt;, we&apos;ve &lt;a href=&quot;http://www.freshconsulting.com/fresh-experiences-were-getting-the-health-benefits-of-hiking-as-a-team/&quot;&gt;gone on hikes together&lt;/a&gt;, we&apos;ve setup game nights that extend to our families to enjoy at the office, and a lot more. This creates a collaborative environment that helps out during our projects because each person is more than just that dev person, or that graphics person, they have names and faces and stories behind them. We share in things together and encourage each other along.&lt;/p&gt;
&lt;p&gt;Through it all, Fresh has treated me immensely well. Since I&apos;m the &quot;remote guy&quot; it is easy to be on the back burner of the comings and goings of things, but I&apos;ve been well kept in the loop with new hires, status updates, and our monthly meeting is done live online so everybody (including me) can participate. When new tools or software has been needed, there hasn&apos;t been any hesitation in acquiring it for me. Fresh has been respectful and flexible with my time, especially during the years when my wife had cancer and we had a lot of doctors visits (and time off) to work with. I&apos;ve been able to contribute my thoughts and have them heard, and considered, even though I&apos;m not &quot;in the office&quot; on a day to day basis.&lt;/p&gt;
&lt;p&gt;Put succinctly, Fresh Consulting has great people, they do amazing work, and I&apos;m proud to be a part of all of this. This is the longest I&apos;ve spent at any one job in my career and I don&apos;t see myself going anywhere else anytime soon.&lt;/p&gt;
&lt;p&gt;Thanks &lt;a href=&quot;http://www.freshconsulting.com&quot;&gt;Fresh&lt;/a&gt;! Here&apos;s to another 5+ years!&lt;img src=&quot;@assets/images/posts/2010-08-13164358_10208876932258175_5797199461085956098_n.jpg&quot; alt=&quot;me_at_fresh&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Into The Foray Of Mobile</title><link>https://dillieo.me/posts/growth/2016-06-01-into-the-foray-of-mobile/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-06-01-into-the-foray-of-mobile/</guid><description>xamagon</description><pubDate>Wed, 01 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here we go!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://prayerodyssey.wordpress.com/2016/06/01/into-the-foray-of-mobile/&quot;&gt;https://prayerodyssey.wordpress.com/2016/06/01/into-the-foray-of-mobile/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Profiles And Vision</title><link>https://dillieo.me/posts/development/2016-05-27-profiles-and-vision/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-05-27-profiles-and-vision/</guid><description>20160526_185247000_ios</description><pubDate>Fri, 27 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;More progress!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://prayerodyssey.wordpress.com/2016/05/26/profiles-and-vision/&quot;&gt;https://prayerodyssey.wordpress.com/2016/05/26/profiles-and-vision/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Running App Swap</title><link>https://dillieo.me/posts/growth/2016-05-24-the-running-app-swap/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-05-24-the-running-app-swap/</guid><description>running_tech</description><pubDate>Tue, 24 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Running tech has come a LOOOONG way from when I first started. I used to be a &quot;log the runs on a sheet of paper (or spreadsheet) and time them with my basic &quot;athletic watch&quot; type of runner. Nowadays you can get a full gamut of details (and logging) all in a single app and track it with a wide assortment of devices. This also leads to decisions (and changes) to make.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For a long time I&apos;ve been a Runtastic Pro user. The ability to map out my routes online and have them available on my phone for the run was quite nice. Additionally, I could track how many times I&apos;ve run each route for some good comparative analytics on my pace and progress over time. By adding details about how I felt after each run, combined with the weather and time of the run, I could get a good idea about when to train and how various factors would affect things. There is even a &quot;live tracking&quot; feature that I can use while I&apos;m out on my runs and my kids can see right were I am at, and click a button to &quot;cheer me on&quot;. With my next RAGNAR approaching, this is a fun way to do long distance cheering.&lt;/p&gt;
&lt;p&gt;I was particularly excited when I was gifted an Apple Watch since there was direct integration with Apple Watch and Runtastic Pro. With the watch, I can start up a run quickly, pause/finish, and see how far I have gone (and my pace) without pulling out the phone mid-run.&lt;/p&gt;
&lt;p&gt;However, my Runtastic experience has been far from fabulous now. There are continuous glitches with the watch connecting to the phone, which makes it difficult (and frustrating) to get the run started. I get it to synchronize once, but then a subsequent run fails (for no reason) and then I have to reinstall things, or just stick to the phone, which I wound up doing. I&apos;ve submitted a help ticket to Runtastic, but it has been a week or so with no response. As I&apos;ve worked through this, I&apos;ve found that there seems to be a lot more nagging on the website to upgrade your plan to premium. Banners get in the way of the map sometimes, and I get a weekly e-mail with a link to track my progress, but that just leads me to a page to sign up for premium. Frustrating.&lt;/p&gt;
&lt;p&gt;So I&apos;ve started searching for a new app. Currently I&apos;ve done a few runs with the Nike+ Running app. It&apos;s free, it allows me to build routes, and gives me a breakdown of my mile splits for my run. It uses a &quot;heat map&quot; to show where my pace was slower and faster, which coincidentally lines up to the plethora of hills that surround me. 8^D The Apple Watch integration has had no problems, and while on the run I can easily toggle the &quot;large&quot; part of my display to be pace, mileage, or overall time, which is quite handy. I can track all of this online too. There are no ads to upgrade or distractions, though there are a couple of links to purchase some Nike running gear. That&apos;s understandable, and it isn&apos;t obtrusive, so I don&apos;t mind this.&lt;/p&gt;
&lt;p&gt;However, I&apos;m a little limited in the details that I get when viewing things online. My run details don&apos;t link to overall routes (apparently this is just a curated feature Nike tracks) so I would have to dig through all of my runs if I wanted to start comparing results. Similarly, there is no &quot;live tracking&quot; feature in the Nike app. It isn&apos;t the end of the world, but it was a cool feature I was looking into trying out. The overall layout of the web site seems more &quot;immediate activity&quot; oriented without a way to do a deep dive into my statistics, but I still don&apos;t really have enough logged into there to truly dig that deep. Things are functional though, so that goes a long way.&lt;/p&gt;
&lt;p&gt;That said, I&apos;ve also heard some good things about Strava, another running/cycling program that is starting to make waves, and show up on the status updates of several of my Facebook friends. I&apos;ve heard it is a little more &quot;Spartan&quot; in nature, but a quick perusal through the app shows potential for the core needs, and there&apos;s a data import tool, so I might be able to pull over all my older Runtastic records, which would make me VERY happy (data junkie here).&lt;/p&gt;
&lt;p&gt;Expect a report in a week or so...&lt;/p&gt;
</content:encoded></item><item><title>Milestones And Thresholds</title><link>https://dillieo.me/posts/growth/2016-05-19-milestones-and-thresholds/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-05-19-milestones-and-thresholds/</guid><description>20160519_125933274_iOS</description><pubDate>Thu, 19 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I finished another 7 mile run in my ongoing RAGNAR training for July. My body was still pretty tired from the run two days prior, so the last mile and a half, which includes a really steep hill followed by a trail climb through some switchbacks to the end was more of a survival run than a race to the finish.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My body was pretty exhausted and my legs were feeling particularly sore. However, some stretching, water, and a shower later, and my spirit was telling me, &quot;Hey let&apos;s go do another 5 miles&quot; and my body was telling me, &quot;Yeah, It think we can manage that.&quot;&lt;/p&gt;
&lt;p&gt;This is a good threshold for me. It means I&apos;m doing some hard training, but not so much that I completely destroy my body for the rest of the day, or for the next run that comes up. I can really do some good base building and potentially a little more speed training, though I&apos;m not looking to do that quite yet.&lt;/p&gt;
&lt;p&gt;I&apos;m also at a good milestone where I&apos;m able to run the length of an average RAGNAR leg and be in a position to do the rest of them. Three legs in 24 hours is some crazy, yet fun, stuff.&lt;/p&gt;
&lt;p&gt;The next big milestone to hit is that elusive 10 miler. I plan on getting there by July, but I need to make sure I do it without burning myself out.&lt;/p&gt;
&lt;p&gt;Onward and upward!&lt;/p&gt;
</content:encoded></item><item><title>The Decade</title><link>https://dillieo.me/posts/growth/2016-05-16-the-decade/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-05-16-the-decade/</guid><description>IMG_2223</description><pubDate>Mon, 16 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s a big day today. My girls are 10 years old. I blinked and the two little ones that I could cradle in my arms all day long now last about 30 seconds &lt;em&gt;[note to self: will need to go to the gym if carrying them is to continue]&lt;/em&gt;. It’s a wonderful day, and it is an emotional day for me as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Up to this point, the birthdays have been simple birthdays. Sure year 1 was huge, given their premature birth, 3 months in the NICU, and plenty of other adventures early on, but after that they were birthdays. It is exciting each year to see them grow more, to see how unique each one is becoming and to still have that inseparable bond to their sister. In a lot of ways I’m excited to see them grow up. I’m excited to see how God works in each of their lives, shapes them individually, and how I get to be an influence in this part of their life too. I get to hear their own thoughts, dreams, stories, and so much more.&lt;/p&gt;
&lt;p&gt;Today they turn 10. The number ten doesn’t seem that bad to me. However, the fact that they have been in my life for a DECADE has a lot more gravity that I’m reflecting on. What was I doing a decade ago? How have my perspectives and priorities changed? How has society changed and how do I reflect guide my children as these things change.&lt;/p&gt;
&lt;p&gt;It’s been a big weekend. The kids had a small sleepover and a Harry Potter themed birthday party. While we were involved with some of the activities, there was a lot more of letting the kids dictate their own fun than in previous years, and that letting go is sometimes the hardest (though exciting) part. There is another small family party today, and we’re taking a lot of big steps over the summer with enrolling them into public school, Haylee is joining a dance company, Rylee is getting some private design lessons, and I get to marvel in it all.&lt;/p&gt;
&lt;p&gt;…too many feels today!&lt;/p&gt;
</content:encoded></item><item><title>Running Tip A Good Runner Pulls Down The Hill</title><link>https://dillieo.me/posts/growth/2016-05-12-running-tip-a-good-runner-pulls-down-the-hill/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-05-12-running-tip-a-good-runner-pulls-down-the-hill/</guid><description>20160512_134907628_iOS</description><pubDate>Thu, 12 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I realized that I did a blog post a long time back about tips for &lt;a href=&quot;/running-tip-a-good-runner-pu-s-h-es-the-hills&quot;&gt;running up a hill&lt;/a&gt; (my clever acronym about PU-S-H-ES) but I realized I never provided a tip about going down the hills. Going down a hill can be nearly as important as going up.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;So here&apos;s the trick I use: a good runner PULLS down the hills. There&apos;s no real clever acronym to this really. As soon as you crest that hill, or enter that descent, you&apos;ll feel it. Your good &apos;ol buddy gravity is starting to tug at you. It&apos;s tempting to resist this force at first. You&apos;re body is tired. Letting the pull take ahold of you seems like it will make you go faster and wear you out even more. In a particularly steep hill, that pull could make you lose your balance, trip, and then you&apos;re really not sitting pretty.&lt;/p&gt;
&lt;p&gt;As long as you don&apos;t take off at a sprint going down the hill, you won&apos;t tire yourself out. Actually, you&apos;ll gain a bit more energy back from the process because you&apos;re body will have a little bit of relief since the effort to go downhill is done by gravity. Make sure to consciously stretch your stride a bit more as you go down. This will help prevent the feeling of falling and the longer stride will help you move a bit faster too. For really steep hills, I&apos;ll even let my arms flail to the side a bit to keep my body balanced going down the hill.&lt;/p&gt;
&lt;p&gt;Most importantly, don&apos;t be afraid to let your body react naturally to the terrain and let it pull you down the hill. You&apos;ll find this provides a great opportunity to gain some energy, keep your pace going (potentially increase it a little) and be ready to hit the next straightaway or hill ready to go!&lt;/p&gt;
&lt;p&gt;What tricks do you use for running down a hill? I&apos;d like to know.&lt;/p&gt;
</content:encoded></item><item><title>Musical Kanned Tomatoes Brainfm</title><link>https://dillieo.me/posts/growth/2016-05-11-musical-kanned-tomatoes-brainfm/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-05-11-musical-kanned-tomatoes-brainfm/</guid><description>cannedtomatoesbrainfm</description><pubDate>Wed, 11 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While I haven’t been the best at adhering to it, I’m still a big fan of Kanban and Pomodoro techniques for keeping myself organized and productive. I like it enough to have &lt;a href=&quot;/kanned-tomatoes-a-kanban-pomodoro-way-of-getting-things-done&quot;&gt;written about it&lt;/a&gt; and even made a &lt;a href=&quot;http://trellodoro.apphb.com/&quot;&gt;tool&lt;/a&gt; to help. Another big aspect that helps me with my workflow is music. I tend to bounce around a bit between Electro House, Trance, Ambient, and even Gregorian Chant. However, I’ve found a new resource that is worth adding to the tool belt.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I recently saw a post about &lt;a href=&quot;http://www.brain.fm&quot;&gt;brain.fm&lt;/a&gt; by &lt;a href=&quot;http://www.john.do&quot;&gt;John Saddington&lt;/a&gt; and had to give it a try. They are a site that provides music for focusing, relaxing, and sleep. While there are plenty of other sites and Spotify playlists out there, this one sets itself apart by highlighting a lot of science that goes into how their music is generated and recommendations on how to use it properly.&lt;/p&gt;
&lt;p&gt;So far the results have been good. I know myself well enough that I can track when I’m “in a zone” and using brain.fm I can feel myself slipping into that phase rather quickly. Once you sign up for an account, you can see there is a diverse rage of “styles” for your listening needs and things are really easy to start up and use. I’ve been quite happy with the overall experience.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.brain.fm&quot;&gt;Brain.fm&lt;/a&gt; will give you 7 free sessions, which can be in 30 minute, 1 hour, or 2 hour intervals. After that they have a subscription plan. There is a great balance to be struck with firing up a Kanban session (typicaly 30 minutes total) having the focus music to tie into this, and then mark things off as complete on my Trello board.&lt;/p&gt;
&lt;p&gt;Whether or not I’ll be going with the paid service right away is up in the air for myself, but regardless you should give things a try. I think you’ll like the results!&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 7</title><link>https://dillieo.me/posts/development/2016-05-06-freeform-friday-7/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-05-06-freeform-friday-7/</guid><description>art-graffiti-abstract-vintage.jpg</description><pubDate>Fri, 06 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I have two new favorite commands in SQL Server, especially given the insane digging I&apos;ve done in a huge database with oddly named columns and tables:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;EXEC sp_fkeys &apos;[Table_Name]&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This gem will give you all of the foreign keys for a given table, and what table they are referencing. Helpful when building things out or tracking them down.&lt;/p&gt;
&lt;p&gt;Update: Looking for the opposite? Looking for the tables/keys that are referencing the table you&apos;re inspecting, use this syntax&lt;/p&gt;
&lt;p&gt;&lt;code&gt;EXEC sp_fkeys @fktable_name=&apos;[Table_Name]&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That will flip the data around.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SELECT \* FROM information_schema.COLUMNS WHERE column_name like &apos;%[Column_Name]%&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Wondering where in the world the table that said column in a side referenced documentation / form is actually located at, this will find it for you. It also includes views.&lt;/p&gt;
&lt;p&gt;Any other handy SQL Server tricks to share?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Happy Star Wars Day Maythe4Thbewithyou</title><link>https://dillieo.me/posts/growth/2016-05-04-happy-star-wars-day-maythe4thbewithyou/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-05-04-happy-star-wars-day-maythe4thbewithyou/</guid><description>20160504_150339495_iOS</description><pubDate>Wed, 04 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Star Wars is something that I&apos;ve been passing on to my kids now and there&apos;s a lot of magic in that. May the 4th be with you!!!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Guest Post Optimizing Laravel Performance</title><link>https://dillieo.me/posts/development/2016-04-28-guest-post-optimizing-laravel-performance/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-28-guest-post-optimizing-laravel-performance/</guid><description>laravel-logo-big</description><pubDate>Thu, 28 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a post over at my company&apos;s blog today regarding optimizing Laravel. Check it out!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/optimizing-laravel-performance/&quot;&gt;http://www.freshconsulting.com/optimizing-laravel-performance/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Review The Foundation Trilogy By Isaac Asimov</title><link>https://dillieo.me/posts/development/2016-04-27-review-the-foundation-trilogy-by-isaac-asimov/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-27-review-the-foundation-trilogy-by-isaac-asimov/</guid><description>Review The Foundation Trilogy By Isaac Asimov</description><pubDate>Wed, 27 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;At the beginning of the year, I decided to give myself a little book challenge by working through &lt;a href=&quot;http://io9.gizmodo.com/5924625/10-science-fiction-novels-you-pretend-to-have-read-and-why-you-should-actually-read-them?utm_campaign=socialflow_io9_facebook&amp;amp;utm_source=io9_facebook&amp;amp;utm_medium=socialflow&amp;amp;utm_expid=66866090-67.e9PWeE2DSnKObFD7vNEoqg.0&amp;amp;utm_referrer=http%3A%2F%2Fio9.com%2F5924625%2F10-science-fiction-novels-you-pretend-to-have-read-and-why-you-should-actually-read-them&quot;&gt;10 Books You Pretend to Have Read (And Why You Should Really Read Them)&lt;/a&gt; article posted in io9. Seeing Asimov’s Foundation listed right in there (and knowing I had one or two of them) seemed like a great place to start. Having devoured the first book rather quickly, I went ahead and read the original trilogy.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Some time in the far distant future, the universe has become one great galactic empire. At the center of it lies the planet Trantor, a planet blanketed entirely with cities, streets, infrastructure, running the galaxy. Here a man named Hari Seldon perfected the mathematics/science of psychohistory. It can effectively predict the future of civilizations as a whole. It comes with some catastrophic news. The galaxy is about to collapse horrifically and plunge itself into barbarism and won’t recover from this for nearly 30 thousand years. This can’t be avoided. However, if permitted, Seldon can enact a plan that will allow the galaxy to recover in a mere 1 thousand years instead. Seldon is granted his plan. He is given a no-name planet at the far end of the galaxy to establish a “Foundation”. There a galactic encyclopedia will be created and maintained, and distributed throughout the galaxy with all of the technology, history, and other information needed to help mankind continue through, and beyond it’s dark time.&lt;/p&gt;
&lt;p&gt;From there we begin to see the future unfold, and see if Seldon’s plan actually works. I’ll refrain from much detail because a lot of the enjoyment of this series is trying to figure out what is happening. Along the way there are several crises that are encountered that look to ruin the Foundation. How does Seldon’s plan account for these? Seldon makes a few appearances in the future, strikingly at times he is needed most. Eventually an event arises that was not accounted for in Seldon’s plan. The entire future of mankind seems poised to be lost if something isn’t done. There’s also mention of a second Foundation that was created by Seldon on the opposite end of the galaxy, but nobody has been able to find it. Does it really exist? If so, what purpose does it serve? All of these events (and more) progress over the course of 400 years.&lt;/p&gt;
&lt;p&gt;While there isn’t a lot of action, so to speak, in these books, I was fascinated by the progress and change in Foundation’s culture and civilization as it slowly grew. The Foundation as a whole takes several forms over time, including a short period as a “religious empire” where it’s nuclear technology, now only available to them, becomes a “mystical” source of power and the Foundation is able to have “priests” on other planets, providing it’s “power” in exchange for its safety. The quotes from the “Encyclopedia Galactica” that prefaces various chapters leads to a glimpse of a larger scale of events that leads nicely into each “phase” in the history of Foundation. The various events through history are paced well enough that it was only during the beginning/middle of the second book (&lt;em&gt;Foundation and Empire&lt;/em&gt;) that I really felt any kind of drag while reading, but after that the book picks up pace (and intrigue) and continues all the way through the third book (&lt;em&gt;Second Foundation&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Overall this series is a great read and I give it a solid 4 out of 5. I think you’ll spend some time afterwards thinking about some of the technology that is in place, but not really discussed (personal shields, thought readers, this whole idea of predicting the future based on psychology of the masses). While the trilogy is self-contained on its own, I look forward to reading the other books that expand the story further.&lt;/p&gt;
</content:encoded></item><item><title>Bitcoin For The Newcomer Hope Again</title><link>https://dillieo.me/posts/development/2016-04-25-bitcoin-for-the-newcomer-hope-again/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-25-bitcoin-for-the-newcomer-hope-again/</guid><description>bitcoin.png</description><pubDate>Mon, 25 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been on a long journey with Bitcoin. Having missed out in the really early days with my own mining setup, I started working with some faucet and cloud mining options about two years ago and &lt;a href=&quot;/bitcoin-for-the-newcomer-hobbyist-and-poor-man&quot;&gt;shared my experience&lt;/a&gt; to get others on board. About a year ago, &lt;a href=&quot;/bitcoin-for-the-newcomer-an-update&quot;&gt;my quest came to an end&lt;/a&gt;, due to increasing mining costs increased competition. However, after some more digging and a general rise in the price of bitcoin, the newcomer and hobbyist may have an option to participate again.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;As of Monday, bitcoin is back up to roughly $465 per BTC, effectively double what the value was when I &quot;hibernated&quot; from the quest. I still have my &lt;a href=&quot;https://www.coinbase.com/join/dillieo&quot;&gt;coinbase&lt;/a&gt; account (you should get one) and while there was no interest to gain while holding my funds there, I was able to &quot;snowball&quot; all my resources back into there with my whopping.010146 BTC (or 1,014,600 satoshis) all snug and secure. I had a whopping 8 bucks this morning!&lt;/p&gt;
&lt;p&gt;I also ran across a nice comprehensive site named &lt;a href=&quot;https://bitmakler.net&quot;&gt;BitMakler&lt;/a&gt;. It has a funky name, but it does have a comprehensive overview of the cryptocurrencies, exchanges, mining pools, and other resources out there. They have even developed a method of testing out the various cloud services with their own test accounts and logging payouts, issues, complications, and the like. Extra data is quite convenient.&lt;/p&gt;
&lt;p&gt;At this point I&apos;m pretty convinced that faucets are a waste of time. While I had developed my own &quot;tab, type, click&quot; rhythm to get through most of them early on, faucets are so crammed full of ads that it&apos;s hard to track down exactly where to enter the details and a lot are multi-step faucets that make it not worth the hassle.&lt;/p&gt;
&lt;p&gt;An interesting concept that I hadn&apos;t seen before is the idea of Funds / HYIPs (High Yield Investment Programs). Rather than being a mining platform per-se, they function almost like how a savings bond or something like that would occur at a bank. You give them X mount of bitcoin, and they will give you a return of Y% after Z days. Some of these systems wind up doing the mining themselves, and some of them front themselves as a mining setup, but ultimately there is no &quot;hashing power&quot; at your disposal. I thought about going with one of these, but personally there&apos;s something about mining that makes me feel apart of the process, even if it isn&apos;t on my own hardware.&lt;/p&gt;
&lt;p&gt;After some more digging, I came across a platform called &lt;a href=&quot;https://hashocean.com/?rid=499884&quot;&gt;HashOcean&lt;/a&gt;. BitMakler gave them a positive ROI over the course of a year (yep, thinking long term here, even with my pennies) and there was a log record of recent activity to show that the service is active and paying out. Unlike a lot of other services, there isn&apos;t a huge buy-in to start. Most cloud mining services are requiring $100+ to start on a simple GighaHash (GH) plan. Since HashOcean is working at KiloHash (KH) levels, I was able to purchase a basic 20KH/h to start mining with for a whopping 0.01366 BTC, or approximately $6. I cleared out most of my CoinBase account on this, but it looks to be worth the gamble. On top of this, I received a 15KH/h bonus for signing up and purchasing right away, so that nearly doubled my hashing power. The estimate is that I&apos;ll recover my 20KH/h purchase in 3 months, which doesn&apos;t account for the extra 15KH/h I&apos;ll have working with me as well. It seems far better than the headaches I was dealing with cex.io near the end of my previous mining operation. I&apos;m in the mining business again!&lt;/p&gt;
&lt;p&gt;I still don&apos;t plan to retire off of this, but I&apos;m excited to be partaking in the bitcoin &quot;experience/experiment/craziness&quot; once again. So far I haven&apos;t had to pull any money out of pocket either. You can get in on this as well easily now as well for as little as $10 (to make it a nice even number). Simply register for a &lt;a href=&quot;https://www.coinbase.com/join/dillieo&quot;&gt;coinbase&lt;/a&gt; account and deposit some funds into it (you&apos;ll need to temporarily link your bank account to this). Once done this will give you the BTC you need to go &lt;a href=&quot;https://hashocean.com/signup/?rid=499884&quot;&gt;register at HashOcean&lt;/a&gt; and purchase at least 20 additional &quot;hashes&quot; to get you on your way. From there it&apos;s up to you! I&apos;m planning on &quot;recycling&quot; all my profits back into more hashes for the time being, but there are plenty of services out there taking BTC payments (and donations) for which you can use your BTC with.&lt;/p&gt;
&lt;p&gt;Finally, the hobbyist and &quot;poor man&quot; can take part in Bitcoin again!&lt;/p&gt;
</content:encoded></item><item><title>Next Steps Taking Donations</title><link>https://dillieo.me/posts/growth/2016-04-22-next-steps-taking-donations/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-04-22-next-steps-taking-donations/</guid><description>Win10x64-Vairocina</description><pubDate>Fri, 22 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m close to finishing the &quot;MVP&quot; and moving to mobile, so now it&apos;s time to start looking for some donations...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://prayerodyssey.wordpress.com/2016/04/22/donations-graciously-accepted/&quot;&gt;https://prayerodyssey.wordpress.com/2016/04/22/donations-graciously-accepted/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Cross Platform Coding Is Cheaper Than Before</title><link>https://dillieo.me/posts/development/2016-04-19-cross-platform-coding-is-cheaper-than-before/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-19-cross-platform-coding-is-cheaper-than-before/</guid><description>xamarin-logo</description><pubDate>Tue, 19 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been itching to expand my &lt;a href=&quot;http://www.prayerodyssey.com&quot;&gt;Prayer Odyssey&lt;/a&gt; project to include native mobile apps. I believe it will be more of a need than a nice to have given how notifications work and how a truly responsive experience can be trickier than it initially seems. For me, I’ve had my eyes on &lt;a href=&quot;https://www.xamarin.com&quot;&gt;Xamarin&lt;/a&gt; for quite a while now.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;But not anymore!!! In case you missed it (because I sure did), it was announced that &lt;a href=&quot;https://blog.xamarin.com/xamarin-for-all/&quot;&gt;Xamarin will now be included free in Visual Studio&lt;/a&gt; thanks to Microsoft’s acquistion of Xamarin. This is all access, with the individual platforms as well as the Xamarin.Forms library which makes it really fast and simple to build cross platform apps using all the C# goodness you know and love (at least I do) 8^D&lt;/p&gt;
&lt;p&gt;This allows me to really get a great jump on building out my mobile apps, and only worry about the app store fees closer to actual publishing time. Both the standalone studio and Visual Studio integration versions of the platform have fared well, so I’m excited to dig in! Microsoft is doing a great job at embracing open source and providing tools across all platforms.&lt;/p&gt;
&lt;p&gt;Dare I say we’ve reached the golden age of multi-platform development?! 8^D&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 6</title><link>https://dillieo.me/posts/development/2016-04-15-freeform-friday-6/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-15-freeform-friday-6/</guid><description>1452865048_1.jpeg</description><pubDate>Fri, 15 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://code.visualstudio.com&quot;&gt;Visual Studio Code&lt;/a&gt; is looking to be my new text editor of choice for small to medium text wrangling. It&apos;s free, fast, has an extensive extension library growing for it, and I can even do TypeScript, Node.js, and PHP debugging through it should I desire. It plays really nice with the.Net Core 1.0 stuff and I can launch things from the terminal/command prompt as well! Oh yeah, you can get it for OSX and Linux as well as Windows. Kudos Microsoft! Keep it up!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Custom Domains And Ssl In Iis Express</title><link>https://dillieo.me/posts/development/2016-04-12-soup-to-nuts-custom-domains-and-ssl-in-iis-express/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-12-soup-to-nuts-custom-domains-and-ssl-in-iis-express/</guid><description>SSL_Dev_Step1</description><pubDate>Tue, 12 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Nowadays, nearly every site out there is using SSL, and for good reason. Security is on the rise and adding a little bit of protection to your site traffic is a good thing. Additionally, having a nice consistency in URL naming between your dev/staging/production environment is very handy. Here&apos;s how you can set this up in Visual Studio and IIS Express.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Enable SSL&lt;/h3&gt;
&lt;p&gt;Starting with Visual Studio 2012, IIS Express became a first class citizen, and the recommended way for running your web apps locally through Visual Studio. Visual Studio took it one step further and made it &quot;one click&quot; simple to setup your web app to use SSL. Simply select your web app project, and press F4 to bring up the properties window. From there, change the option to enable SSL and say yes to any prompts that ask to install a certificate and create an exception rule.&lt;/p&gt;
&lt;p&gt;After that, launch your site (good &apos;ol CTRL+F5 you...) and change your URL to check out your new SSL address. You may need to add an exception rule in your browser before seeing the site.&lt;img src=&quot;@assets/images/posts/2016-04-ssl_dev_step2.png&quot; alt=&quot;SSL_Dev_Step2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;SSL has never been easier.&lt;/p&gt;
&lt;h3&gt;Setup Custom Domain&lt;/h3&gt;
&lt;p&gt;Custom domains take a little bit more work, due to the firewall and security permissions baked into Windows. But it isn&apos;t insurmountable. Here&apos;s the steps to accomplish this.&lt;/p&gt;
&lt;h3&gt;Add New Urls for IIS Express&lt;/h3&gt;
&lt;p&gt;IIS Express uses a file named applicationhost.config to store the basic configuration details for your site. In Visual Studio 2012/2013, this is typically located in your Documents\IISExpress folder. However, in 2015, there is a.vs folder at the project solution level where this file is stored. If you open this file and scroll down a little, you&apos;ll see the bindings section where the default high number ports are listed. We want to add to lines right below that, using our custom domain, and to use the standard port 80/443 associated with websites. Your updated file will look something like this:&lt;img src=&quot;@assets/images/posts/2016-04-ssl_dev_step3.png&quot; alt=&quot;SSL_Dev_Step3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll also need to update your hosts file so that your custom domain points to the local 127.0.0.1 address. Otherwise the DNS will look &quot;outside&quot; and not find your custom URL.&lt;/p&gt;
&lt;p&gt;Once saved, IIS Express will now &quot;listen&quot; for those URLs/ports and serve your web app. Conveniently, I update my web app project settings to load my new custom URL whenever I launch it.&lt;img src=&quot;@assets/images/posts/2016-04-ssl_dev_step51.png&quot; alt=&quot;SSL_Dev_Step5.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Add Security Exceptions&lt;/h3&gt;
&lt;p&gt;At this point, if you attempt to launch IIS Express again for your app, you may see some errors:&lt;img src=&quot;@assets/images/posts/2016-04-ssl_dev_step4.png&quot; alt=&quot;SSL_Dev_Step4.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There are two things at play here. The first is that in order to run IIS Express on low number ports, you need to run Visual Studio as an Administrator. Yes, it is a slight annoyance, but you can configure your shortcut to always run as Administrator and move forward.&lt;/p&gt;
&lt;p&gt;The second reason is that the Windows Firewall has blocked IIS Express from using the low number ports as well. To fix this, we need to add a couple of rules to the firewall access control list. Open up powershell and enter the following commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;netsh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;http add urlacl url=http://www.prayerodyssey.dev:80/ user=everyone http add urlacl url=https://www.prayerodyssey.dev:443/ user=everyone&lt;/p&gt;
&lt;p&gt;quit&lt;/p&gt;
&lt;p&gt;If you launch your web app now and navigate to your custom URL, you should be all set, except for one last thing, the SSL certificate.&lt;/p&gt;
&lt;h3&gt;Add SSL Certificate Configuration&lt;/h3&gt;
&lt;p&gt;When Visual Studio created a self signed certificate and linked it to IISExpress, it only did it for the high level ports (443000 to 44399). We need to add another SSL certificate entry to handle port 443. To do this, we need to track down the certificate hash and the application Id generated. To do this, execute the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;netsh http show sslcert &amp;gt; sslcert.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will dump the details into a file. Open up the file and find the following values near the top of the file:&lt;img src=&quot;@assets/images/posts/2016-04-ssl_dev_step6.png&quot; alt=&quot;SSL_Dev_Step6.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Using this information, we can add another entry for port 443 using the following commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;netsh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;http add sslcert ipport=0.0.0.0:443 certhash=6a0c09c25569a327e4c2739f7519c2692e9f2a2e appid={214124cd-d05b-4309-9af9-9caa44b2b74a}&lt;/p&gt;
&lt;p&gt;quit&lt;/p&gt;
&lt;p&gt;Don&apos;t forget to replace those values with the ones that match your file.&lt;/p&gt;
&lt;h3&gt;Run!&lt;/h3&gt;
&lt;p&gt;Once that is complete. Close IIS Express (if it is running) and launch your site again. You should now have your custom URL running over SSL for your site!&lt;img src=&quot;@assets/images/posts/2016-04-ssl_dev_step7.png&quot; alt=&quot;SSL_Dev_Step7.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;While this is a little tedious, it&apos;s about the same amount of work if you were to generate a SSL cert, update your apache configuration, update your hosts file, and everything else for a PHP based app. This will give you a closer &quot;real&quot; environment when developing locally, and can help you catch any pesky SSL or domain redirect issues you might not see when running as localhost.&lt;/p&gt;
&lt;p&gt;Enjoy!!!&lt;/p&gt;
</content:encoded></item><item><title>Mobile Deep Linking Lesson Learned</title><link>https://dillieo.me/posts/development/2016-04-08-mobile-deep-linking-lesson-learned/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-08-mobile-deep-linking-lesson-learned/</guid><description>deep_linking_mobile1-249x300</description><pubDate>Fri, 08 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You&apos;ve probably heard of &quot;deep linking&quot; when it comes to mobile apps. These are the clever links that sit in your e-mail and launch your mobile app instead of going to a web page based. It&apos;s really slick and helpful, except there can be some hidden pitfalls.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;On one hand, deep links are pretty simple. You can install your mobile app and have it register a URI handler so that while &quot;HTTP://&quot; launches the web browser, &quot;EPICAPP://&quot; will launch your new epic app. You can add your own paths beyond that, for account activation, load an item, whatever you want.&lt;/p&gt;
&lt;p&gt;The problem (as it came to full fruition today) is that a lot of mobile mail reading apps (I&apos;m looking at you Gmail) will strip out that URI prefix because it isn&apos;t recognized as a &quot;standard&quot; one. As a result, your deep link are effectively nerfed since you&apos;ll lose a good chunk of your users.&lt;/p&gt;
&lt;p&gt;What&apos;s the solution? One option is to use a service like &lt;a href=&quot;http://deeplink.me&quot;&gt;deeplink.me&lt;/a&gt;. They allow you to setup a &quot;standard&quot; URL for your notifications that will detect what kind of device clicked the link (desktop, iPhone, Android Phone, etc.) and redirect the user to the appropriate location (your mobile app or the web browser). They can even provide analytics to see who is clicking on your links and which devices are in the most use.&lt;/p&gt;
&lt;p&gt;If you&apos;re in a bind (like I was today) or don&apos;t quite have the budget to sign up for a service, you can setup a special path on your web app that does a redirect to your deep link. This will allow your mobile e-mail client to have a &quot;proper&quot; link. The user taps on it, which launches their mobile browser. The endpoint redirects the user to the applications deep link, and the browser will prompt you to open the link in that app. Problem solved. Sure it&apos;s a &quot;double hop&quot; but it&apos;s better than losing a lot of your users.&lt;/p&gt;
&lt;p&gt;Oh, and if you&apos;re using Laravel, you can set this up quite easily in your routes.php file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\* Deep Link Redirect - For mobile redirect to application */ 
Route::group([&apos;prefix&apos; =&amp;gt; &apos;mobile&apos;], function() 
{
    Route::get(&apos;activate/{userId}/{key}&apos;, function($userId, $key) 
    { 
        return Redirect::to(&apos;epicapp://activate/key?userId=&apos;. $userId. &apos;&amp;amp;key=&apos;. $key); 
        die(); 
    }); 
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&apos;s my example: I have my mobile e-mail contain with a link to&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://epicapp.com/activate/99/w00tk3y&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Larval will hit this and redirect to my special deep link&lt;/p&gt;
&lt;p&gt;&lt;code&gt;epicapp://activate/key?userId=99&amp;amp;key=w00tk3y&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This prompts me to open the app and we&apos;re gravy!&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Be A Vagrant Its Better Than You Think</title><link>https://dillieo.me/posts/development/2016-04-06-be-a-vagrant-its-better-than-you-think/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-06-be-a-vagrant-its-better-than-you-think/</guid><description>vagrant-logo</description><pubDate>Wed, 06 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday I built my first &lt;a href=&quot;https://www.vagrantup.com&quot;&gt;Vagrant&lt;/a&gt; machine, with some help form some existing resources, and now I&apos;m officially hooked. No more XAMPP, MAMP, WAMP, or anything else. Here&apos;s why I think you&apos;ll enjoy it too.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;If you haven&apos;t heard of it before, &lt;a href=&quot;https://www.vagrantup.com&quot;&gt;Vagrant&lt;/a&gt; is a tool that allows you easily build a development environment from a script file and then run it through &lt;a href=&quot;https://www.virtualbox.org&quot;&gt;VirtualBox&lt;/a&gt;, &lt;a href=&quot;https://www.vagrantup.com/vmware/&quot;&gt;VMWare&lt;/a&gt;, or other platforms. Vagrant allows you to create a fully configured machine, not just configuring a subset of platforms or libraries that you need.&lt;/p&gt;
&lt;p&gt;I&apos;m no Linux expert, so setting up a full Linux environment would be a little daunting (and time consuming) for me. Fortunately, Vagrant has an entire &lt;a href=&quot;https://atlas.hashicorp.com/boxes/search&quot;&gt;atlas library&lt;/a&gt; of images preconfigured and updated by the community at your disposal. Grab one and go. Once you have the box you need, you can update your Vagrant scripts to run additional tasks upon the initial provisioning of the machine. Maybe you need to install an additional package using apt-get. Maybe you need to install an initial database. Maybe you want to run a diagnostic script. All of this can be setup in the Vagrant file to run for you.&lt;/p&gt;
&lt;p&gt;While Vagrant provides a isolated development environment, it doesn&apos;t mean that your code has to live in that isolated environment as well. You can easily setup linked paths from your &quot;root&quot; machine to your &quot;box&quot; so that any changes you make are immediately reflected on the box. No need to SSH into your machine (oh yeah, that is included 8^D), install PHPStorm, and do your develop there. You can develop on your root machine, save your changes, and see the updates reflected immediately on your box.&lt;/p&gt;
&lt;p&gt;So what&apos;s the &quot;real world&quot; example of how this all plays out? For an existing client, we have four different &quot;systems&quot; that their platform is built on. We have a Web API built using Laravel. We have a web app built using AngularJS, but hosted from a &quot;static&quot; AWS S3 bucket. We have a WordPress install setup to contain the news/blog/pages that we want SEO optimization with, as well as serve up a &quot;shell&quot; for the AngularJS web app. Finally we have another &quot;common&quot; set of images and stylesheets that sits in a separate S3 bucket. We need to easily replicate this environment for local development, and make it easy for anybody on our team to get up and running with.&lt;/p&gt;
&lt;p&gt;To handle this we have two separate Vagrant boxes. The first box hosts the API. Upon running &quot;vagrant up&quot; for the first time, a fresh Ubuntu server, preconfigured to have PHP, MySQL, Nginx, and a bunch of our other dev tools (git, node, bower) in place. The box then links to our local git repository of the API site itself and serves things up. The second box does something similar, but for our WordPress instance. We also setup a couple of other &quot;websites&quot; that serve our static resources and our web app, similar to how we would see them served up through S3.&lt;/p&gt;
&lt;p&gt;To wrap all of this up in a pretty little bow, we use the &lt;a href=&quot;https://github.com/cogitatio/vagrant-hostsupdater&quot;&gt;Hosts Updater&lt;/a&gt; plugin so to automatically map our apps to the following URLs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;api.myapp.dev&lt;/li&gt;
&lt;li&gt;www.myapp.dev&lt;/li&gt;
&lt;li&gt;app.myapp.dev&lt;/li&gt;
&lt;li&gt;cdn.myapp.dev&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When I close down the boxes, the domains go away. Finally, we took the extra time to generate self signed SSL certificates and map them to the domains, so we can better code and test against the SSL environment on our servers. I also use a handy tool called &lt;a href=&quot;http://www.vagrantmanager.com/&quot;&gt;Vagrant Manager&lt;/a&gt; to easily see what machines are running and to manage them accordingly.&lt;/p&gt;
&lt;p&gt;There you have it! A complex dev environment can be made &quot;development ready&quot; for a member of our team in roughly 20 minutes, or however long it takes the initial boxes to be downloaded for the first time. All subsequent builds are much faster, since a copy of the base box is saved elsewhere for reuse.&lt;/p&gt;
&lt;p&gt;I&apos;ve been a long time user of MAMP, and while it may be quicker to map up a new version, you still have to make sure you&apos;re using the version of PHP that is going to map to your app instance, and some of the more advanced Apache configurations start to get convoluted. I think the biggest help is getting SSL support through the Vagrant machine, since that can add to headache as well. You also don&apos;t have to worry about which version of Apache or PHP is running after you update your version of OSX (for Mac folks). The vagrant machine is locked down to what you want it to be.&lt;/p&gt;
&lt;p&gt;Oh yeah, and all of this is available for Windows too...&lt;/p&gt;
&lt;p&gt;If you haven&apos;t done so, give Vagrant a try. Let me know what clever tricks you have setup and anything else you have done to streamline your development experience.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 5</title><link>https://dillieo.me/posts/development/2016-04-01-freeform-friday-5/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-04-01-freeform-friday-5/</guid><description>1452865048_1.jpeg</description><pubDate>Fri, 01 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A couple of cool tech notes worth sharing for the week...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;If you&apos;re an iPhone / iPad user, make sure you get the latest iOS update and enable the &lt;a href=&quot;http://www.apple.com/ios/updates/?cid=wwa-us-kwm-features&amp;amp;cp=ios9.3&quot;&gt;night shift&lt;/a&gt; feature that they enabled. I&apos;ve been a long time user of &lt;a href=&quot;https://justgetflux.com&quot;&gt;f.lux&lt;/a&gt;. I find a huge benefit on the eyes (and the sleep) that having a &quot;warm&quot; screen during the evening hours provides. The automatic shift based on the time is an added convenience. I noticed an immediate benefit at night when peeking at my phone. Now if they can only create a solid version for Android.&lt;/p&gt;
&lt;p&gt;Microsoft continues to embrace making the right tools available for the right job, regardless of platform. A year or so ago they started releasing the.Net platform (open source too) to be runnable on Mac/Linux platforms thanks to the &lt;a href=&quot;https://blogs.msdn.microsoft.com/webdev/2016/02/01/an-update-on-asp-net-core-and-net-core/&quot;&gt;ASP.Net Core&lt;/a&gt; platform. The other day, at the build conference, Microsoft announced that you can get a &lt;a href=&quot;http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx&quot;&gt;full fledged bash prompt at the command line&lt;/a&gt; in Windows 10. No cygwin, no fancy ports. A full fledged version of Ubuntu has been setup to be made available. This is huge in bridging the gap between the Visual Studio toolset used along side the vi/emacs/redis development typically available only in Linux. With these tools in place, who knows what machine I&apos;ll be &quot;primarily&quot; developing from in the future, and that&apos;s a good thing!&lt;/p&gt;
&lt;p&gt;So now that you have your tech fix in, go disconnect for the weekend and fix your deck, or go for a run, or read a book (on paper) or something. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Ragnar Is Here Ragnarnwp</title><link>https://dillieo.me/posts/development/2016-03-31-ragnar-is-here-ragnarnwp/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-03-31-ragnar-is-here-ragnarnwp/</guid><description>1074972_10151518111841587_1329960238_o</description><pubDate>Thu, 31 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Here’s what we do: long distance, team, overnight running relays that take place in the most breathtaking places in the world. Teams come together to conquer a course over two days and one night, and push their limits, on little amounts of sleep, with friends and a community of runners by their side. ~ &lt;a href=&quot;https://www.runragnar.com/ragnar&quot;&gt;What is a Ragnar?&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sound exciting to you? It sounds VERY exciting to me and I&apos;m finally getting to participate in one again this summer (on my birthday nonetheless!)&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;While the prospect of running a 200 mile relay seems pretty crazy to a lot of people, the thing I loved most was that in a lot of ways RAGNAR isn&apos;t about the run, it&apos;s about the bonding experience you get being in a van with six other people, meeting up with your other van of 6 people in the middle of the night, and cheering each other on (strangers too) as you participate in this. The first time I ran this there were a few people at Fresh that were just staring at the company and being the remote guy, our contact had been minimal. After the race, whenever I bump into them, I immediately think of the &quot;battle&quot; we conquered together and we both smile.&lt;/p&gt;
&lt;p&gt;The RAGNAR was also a great reminder for me of reaping the benefits of hard work over the long run. I hadn&apos;t run a mile in nearly a year or two (probably longer) and the prospect of running three 6 mile legs or so was a bit scary. I knew from running a marathon a long time back that adequate training was going to be needed or I would crash hard. So I hit the trails. I had to start slow. I ran three miles twice or three times a week and slowly worked up. Some weeks were rough. My mileage increases took longer than planned and the pace I had reported for my race pace seemed a little aggressive to me. In the end, I was tired, sore, and ready to do it all again as I conquered my legs with a pace faster than my planned pace. Working hard and looking towards the long game payed off big time.&lt;img src=&quot;@assets/images/posts/2016-03-10874136825_0507764f7f_o.jpg&quot; alt=&quot;10874136825_0507764f7f_o&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So this year it is time to assemble RAGNAR warriors new and old. I&apos;ve been given the opportunity to be the captain this year of our team and I&apos;m honored to do it. While there is some &quot;paperwork&quot; involved, I&apos;m more excited to be able to meet those that are &quot;new to me&quot; at work, encourage them to train, build out the team so they can finish their legs, and make sure we all have the same fun and bonding I remember so much from before.&lt;/p&gt;
&lt;p&gt;Look out &lt;a href=&quot;https://www.runragnar.com/event-detail/relay/northwestpassage&quot;&gt;RAGNAR Northwest Passage&lt;/a&gt;... here I come!&lt;/p&gt;
</content:encoded></item><item><title>Guest Post Azure More Than A Web Hosting Platform</title><link>https://dillieo.me/posts/development/2016-03-25-guest-post-azure-more-than-a-web-hosting-platform/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-03-25-guest-post-azure-more-than-a-web-hosting-platform/</guid><description>azure_hosting</description><pubDate>Fri, 25 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a guest post at work this week outlining all the really cool things that I put together on a project recently using Microsoft Azure. It&apos;s pretty amazing how the cloud is streamlining a lot of coding that used to take weeks or months.&lt;/p&gt;
&lt;p&gt;Give it a read here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/microsoft-azure-more-than-a-web-hosting-platform/&quot;&gt;http://www.freshconsulting.com/microsoft-azure-more-than-a-web-hosting-platform/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Layout Preview</title><link>https://dillieo.me/posts/projects/2016-03-22-layout-preview/</link><guid isPermaLink="true">https://dillieo.me/posts/projects/2016-03-22-layout-preview/</guid><description>20160322_165021000_iOS</description><pubDate>Tue, 22 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is effectively a re-blog of my post over at Prayer Odyssey&lt;/p&gt;
&lt;p&gt;https://prayerodyssey.wordpress.com/2016/03/22/new-layout-preview/&lt;/p&gt;
&lt;p&gt;The new layout with &lt;a href=&quot;https://material.angularjs.org/latest/&quot;&gt;Angular Material&lt;/a&gt; is working nicely and you can take a poke at it if you want too. Click over to the blog post above for more details.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Pi Music The Octal Remix</title><link>https://dillieo.me/posts/development/2016-03-16-pi-music-the-octal-remix/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-03-16-pi-music-the-octal-remix/</guid><description>pi-music</description><pubDate>Wed, 16 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Man! Seems like I just can&apos;t get enough of this stuff lately. A tool and a simple script can go a long way these day! Two days ago was Pi Day, and I &lt;a href=&quot;/posts/growth/2016-03-14-pi-music/&quot;&gt;found some fun music&lt;/a&gt; to go with it. However, not quite happy with the results, I decided to try and make the music more &quot;authentic&quot; by building out &lt;a href=&quot;/posts/development/2016-03-15-pi-music-decatonic-style/&quot;&gt;Pi music using a decatonic scale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Listening to the mysterious (and potentially haunting) music kept me thinking and pondering a bit more. Then I had an interesting idea on my run this morning. The decatonic scale is more accurate to the base 10 nature of our Pi digits, but what if we were able to make the Pi digits more accurate to the traditional 8 note scale. What came next I call the &quot;Octal Remix&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;TLDR;&lt;/h3&gt;
&lt;p&gt;Interestingly enough, converting pi to an octal base lends nicely to a standard 8 note scale and gives us lots of &quot;tweaking&quot; options through &lt;a href=&quot;http://sonic-pi.net/&quot;&gt;Sonic Pi&lt;/a&gt;. Here&apos;s a key of Bb rendition (a HT to my tuba roots 8^D) of Pi.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://soundcloud.com/dillie-o/octal-pi-remix&quot;&gt;https://soundcloud.com/dillie-o/octal-pi-remix&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;The Math&lt;/h3&gt;
&lt;p&gt;Instead of refactoring our music scale to a 10 note scale, better representing the decimal or base 10 system of numbers the pi uses, we want to refactor pi to be based on an 8 digit number system. Sounds kind of weird right? That&apos;s what binary is, a two number system (0, 1). There are a few different number systems in use. Hexadecimal (base 16) is used a lot for color codes and other things. Fortunately, another rather popular number base is the Octal system, which is an 8 digit system, 0 through 7. This maps up nicely to our 8 note scale. Fortunately, it&apos;s quite easy to convert from decimal to octal.&lt;/p&gt;
&lt;h3&gt;Composing the Music&lt;/h3&gt;
&lt;p&gt;Thanks to the amazing &lt;a href=&quot;http://sonic-pi.net/&quot;&gt;Sonic Pi&lt;/a&gt;, there is already a quick way to select a scale to use and play notes with it. Since our octal numbers are 0 based, we don&apos;t have to worry about shifting any numbers. In this case, 0 is our &quot;low&quot; number, so it may be worth refactoring our decatonic scale to put the 0 at the bottom. Here&apos;s what the script file looks like. It&apos;s a lot simpler:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gist.github.com/a5b1e9a38739341c3d76&quot;&gt;https://gist.github.com/a5b1e9a38739341c3d76&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Listen Away&lt;/h3&gt;
&lt;p&gt;The great thing about having a standard scale is that we can really start doing some additional tweaks to the output. What does pi sound like when its using a minor key. Do we want to try to and transpose it? Sonic Pi also has &quot;beat machines&quot; and other fun scripts to setup. I just might be able to make my &quot;symphony&quot; of sorts. Lots of options here.&lt;/p&gt;
&lt;p&gt;So for today, enjoy Pi music in the key of Bb (&quot;B Flat&quot;), giving a slight homage to my days as the &quot;Tubanator&quot;. Note how using a more standardized scale gives the music a more &quot;whimsical&quot; feel. Is this true to form? I might have to double check my numbers a bit more. Who know&apos;s what&apos;s next down the pipe 8^D&lt;/p&gt;
</content:encoded></item><item><title>Pi Music Decatonic Style</title><link>https://dillieo.me/posts/development/2016-03-15-pi-music-decatonic-style/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-03-15-pi-music-decatonic-style/</guid><description>pi-music</description><pubDate>Tue, 15 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday was &lt;a href=&quot;/posts/growth/2016-03-14-pi-music/&quot;&gt;Pi day&lt;/a&gt;, and while I enjoyed the links to the music I shared, there was one thing that was bugging me a little, and that was the use of the melodic scale. Since the typical scale has 8 notes between octaves, why not use a 10 note (or decatonic) scale in order to compose this music. Doing so would reflect the base 10 number system that the digits of pi use. So that&apos;s what I did...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;TL;DR;&lt;/h3&gt;
&lt;p&gt;Here&apos;s the slightly mysterious (and maybe haunting) music that Pi sounds like when we equate the digits of a base 10 nature to a melodic scale of a base 10 nature. If you&apos;re interested in how I did it, read on. Regardless, listen away.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://soundcloud.com/dillie-o/decatonic-pi-2&quot;&gt;https://soundcloud.com/dillie-o/decatonic-pi-2&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;The Math&lt;/h3&gt;
&lt;p&gt;We break down music notes to simple sine waves and their frequencies. Middle C (C4) on the piano comes in at a lovely 261 Hz. The C one octave above (C5) registers at 523 Hz. If we want to calculate the approximate frequency between notes, we can use the following formula:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(523-261) / 8 = 32.75 HZ between notes&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If we test this out, we calculate that the D note above middle C would be 261 + 32.75 = 293.75 HZ. This just so happens to be the case according to &lt;a href=&quot;https://en.wikipedia.org/wiki/Piano_key_frequencies&quot;&gt;Wikipedia&lt;/a&gt;. Taking this formula into consideration, we can then break out our scale into 10 notes as follows:&lt;/p&gt;
&lt;h3&gt;(523-261) / 10 = 26.2 HZ between notes&lt;/h3&gt;
&lt;p&gt;Now that we had our formula. Its time to make some music!&lt;/p&gt;
&lt;h3&gt;Composing the Music&lt;/h3&gt;
&lt;p&gt;Now that I knew my frequencies, I simply needed to convert each digit of pi to be a &quot;note&quot; on my scale and output the frequency involved. There are plenty of synthesizer type apps out there, but most of them let you play notes, and not frequencies. Fortunately, there is this AMAZING (and free) app out there called &lt;a href=&quot;http://sonic-pi.net&quot;&gt;Sonic Pi&lt;/a&gt; that is a &quot;live coding synth&quot;. It has a simple code editor interface (it uses Ruby) and makes it really easy to play around with music notes, beats, and the like. Most importantly, it has this great function that allows you to input a frequency (instead of a note) and it I&apos;ll play that accordingly. Here&apos;s the script file I created:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gist.github.com/2ed76b997539e0002a4a&quot;&gt;https://gist.github.com/2ed76b997539e0002a4a&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Admittedly there is some testing code in there to verify the sound, but you can see where I&apos;ve generated my own method to calculate the frequency of the note and play it. We have 400 digits worth of Pi in there, so it makes for an interesting melody.&lt;/p&gt;
&lt;h3&gt;Listen Away&lt;/h3&gt;
&lt;p&gt;There we have it, a kind of haunting and mysterious melody that Pi plays on a decatonic scale. If you&apos;re a music person, and have a better way of generating the decatonic scale, I&apos;d love to hear about it. Something seems a little off to me during the &quot;test scale&quot; and I&apos;m not sure if I&apos;m not getting a &quot;pure&quot; translation of the Hz to the Midi notes as the documentation outlines. I might have to keep playing with this more and have some fun, now that I can add beats, new synthesizer sounds, and other goodies.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;For more listening, check out the &lt;a href=&quot;/posts/development/2016-03-16-pi-music-the-octal-remix/&quot;&gt;Pi Music: The Octal Remix&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pi Music</title><link>https://dillieo.me/posts/growth/2016-03-14-pi-music/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-03-14-pi-music/</guid><description>what-day-is-it_16627345938_o</description><pubDate>Mon, 14 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s Pi Day!!!! For those unaware, March 14th, or 3-14, or better yet, 3.14 Is the first three digits of that mathematical number Pi. I&apos;m particularly fond of this day in part to a couple of math instructors who had a competition every year to see who could recite Pi to the most digits.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;One instructor in particular (thank you Dr. Woo) used a musical approach to memorize the digits. He essentially started with middle C and assigned that as 0 and moved up the scale. From there he &quot;sang&quot; the digits and did his best to remember the melody.&lt;/p&gt;
&lt;p&gt;I was never studious enough to try this approach myself, but I found it rather ingenious and always wondered what the &quot;music of Pi&quot; sounded like. Fortunately plenty of others have had this same curiosity and here are a couple of videos to tickle your ear. It&apos;s no &lt;a href=&quot;https://en.wikipedia.org/wiki/Musica_universalis&quot;&gt;music of the spheres&lt;/a&gt;, but it is still rather fun.&lt;/p&gt;
&lt;p&gt;Traditional C scale:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/YOQb_mtkEEE&quot;&gt;https://youtu.be/YOQb_mtkEEE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slightly different scale:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/eP3_NioYP5U&quot;&gt;https://youtu.be/eP3_NioYP5U&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, here&apos;s a really cool app that will generate pi musically to 10,000 places and let you pick a scale in which to play it on (requires flash)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://avoision.com/experiments/pi10k&quot;&gt;https://avoision.com/experiments/pi10k&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy Pi Day!!!&lt;/p&gt;
</content:encoded></item><item><title>Throw Down Some Cards</title><link>https://dillieo.me/posts/growth/2016-03-11-throw-down-some-cards/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-03-11-throw-down-some-cards/</guid><description>Throw Down Some Cards</description><pubDate>Fri, 11 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The day has finally arrived. Earlier this week the girls picked up the “cardboard fever” and started up on a couple of of collectible/trading card games (herein known as CCGs or TCGs): My Little Pony and Pokemon. I’m rather excited for this interest, given my own interest in Yu-Gi-Oh and Legend of the Five Rings (L5R) over the years. Here’s why you should get interested in CCGs too.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: I’ve been a judge and in the tournament scene long enough to know that some of these concepts don’t apply at the &quot;top&quot; levels, but hey, I’m talking about some run of the mill fun around here… 8^D&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Creativity&lt;/h3&gt;
&lt;p&gt;Most CCG/TCGs out there are “deck building” type games. This means that you have a set of mechanics and objectives to play with, but you can have various themes or game styles in which to make that happen. This encourages you to find a style or mechanic that you particularly like or play best with. I often enjoy being the “evil forces of the realm”, so I played with Fiends through Yu-Gi-Oh and Spider Clan in L5R. There appears to be a metal type deck for Pokemon that looks like fun (yes, eventually daddy will get a deck 8^D). I typically preferred a menacing attack over manipulation/control, but all of those options were out there. Once you get familiar with one style, you can apply variants to that or even try out a whole new style. Finding the right cards and playing them out gets all of those good creative juices flowing!&lt;/p&gt;
&lt;h3&gt;Manners&lt;/h3&gt;
&lt;p&gt;Yep. Manners. Most games require a hand shake at the beginning and/or end of the match. Each player takes turns. Often enough, taking an action requires you to give your opponent an opportunity to make a response to that action. All of this helps develop patience, and generally speaking good manners, especially when you lose a game. If you’re a poor sport, nobody really wants to play with you anymore, and there goes the fun. If you do attend a tournament, you must respect the judges and their decisions, whether you agree with them or not. I met quite a few well mannered young children through my judging days and I think playing these games helped reinforce those virtues.&lt;/p&gt;
&lt;h3&gt;Math&lt;/h3&gt;
&lt;p&gt;Managing hit points, damage calculations, cause and effect of battle resources, all of this requires a bit of math. This is great, especially for the younger kids. I remember seeing younger kids doing 4 column addition and subtraction that they might not be touching in school. It&apos;s also a little embarrassing (and thus a motivating factor) when a teenager messes up on some simple math in that regard. There are a lot of mobile apps and score counters out there, but nothing compares to a good old scratch pad to help with those calculations. Shoot, if you aren’t keeping up with your math, your opponent might let that math error slip into their favor, or try and trick you out of some points!&lt;/p&gt;
&lt;h3&gt;Strategy&lt;/h3&gt;
&lt;p&gt;What happens when your hoarde of weakling undead minions (power in numbers here) are suddently wiped out and you won’t have anymore for a few turns?! It’s time to strategize! You know your friend well enough that you recognize their play style, but how can you force them into a corner to play another way? Do you make the aggressive attack to wipe out 3 major defenses of your opponent and leave yourself open to potential retribution? I can’t tell you how many times I had these things running through my head before, and after, my games. I’m already seeing some of this strategizing and planning going on in my kids&apos; heads as they become more familiar with their decks, and their opponents. All of it leads to good problem solving skills and resource management down the road!&lt;/p&gt;
&lt;h3&gt;Fun&lt;/h3&gt;
&lt;p&gt;Overall, these games are about having some fun. Sure I enjoy a good game of Uno or Go Fish like the rest, but CCGs and TCGs add some additional elements into a game that make it fun to play and watch. A lot of times they also try to “cardify” things like battle strategy, or monster battling, or even one on one dueling into a format that is portable and easy to work with. Most games you can pick up relatively fast and play. After that the fun comes from learning to master them.&lt;/p&gt;
&lt;h3&gt;Go Play!&lt;/h3&gt;
&lt;p&gt;You can typically pick up a pair of starter decks that have everything you need to play in them for $40 or less these days. You can worry about “booster packs” and “singles” and “premium content” at a later date. Go try something new! I think you’ll enjoy it!&lt;/p&gt;
</content:encoded></item><item><title>Prayer Journal Is Now Prayer Odyssey</title><link>https://dillieo.me/posts/growth/2016-03-08-prayer-journal-is-now-prayer-odyssey/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-03-08-prayer-journal-is-now-prayer-odyssey/</guid><description>prayerodyssey_logo_large</description><pubDate>Tue, 08 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I guess I can consider myself serious about this when I finally register a domain name for it. Here&apos;s the latest updates for the new domain. I hope you&apos;ll sign up for the app and spread the word.&lt;/p&gt;
&lt;p&gt;https://prayerodyssey.wordpress.com/2016/03/09/same-ideas-new-name-expanded-focus/&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 4</title><link>https://dillieo.me/posts/growth/2016-03-04-freeform-friday-4/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-03-04-freeform-friday-4/</guid><description>1452865048_1.jpeg</description><pubDate>Fri, 04 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s amazing the odd joy that comes when your body finds its running groove. It&apos;s like rediscovering yourself at a more intimate level. You start to know not only what you can do, but how you do it and how to work through each little phase. You also know how to increase the pace or running tempo and how many miles you can make it last. It&apos;s rather profound.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Blogaversary</title><link>https://dillieo.me/posts/development/2016-03-02-blogaversary/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-03-02-blogaversary/</guid><description>Me-JournalinFrance.jpg</description><pubDate>Wed, 02 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Roughly 7 years ago, I started out on this adventure called blogging. Interestingly enough, the saying that &quot;the more things change, the more things stay the same&quot; is ringing true here.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Last year, I did a big &quot;blog renovation&quot; of sorts by following the &lt;a href=&quot;/new-year-new-me-sorta&quot;&gt;10 days to a better blog&lt;/a&gt; series. In there I gave some serious thought to &lt;a href=&quot;/why-i-blog&quot;&gt;why I blog&lt;/a&gt;, and interestingly enough, a lot of those core ideas are the same as when &lt;a href=&quot;/sup-a-dillie-o&quot;&gt;I launched the blog&lt;/a&gt; in the first place.&lt;/p&gt;
&lt;p&gt;As I browse through the list of topics, I&apos;m happy with what I see. There&apos;s a good amount of coding topics in there and a bit of &quot;deep thoughts&quot; along the way. There could probably be more of those in there, and that&apos;s something I&apos;m trying to extract out of myself more.&lt;/p&gt;
&lt;p&gt;I&apos;ve had no &quot;viral posts&quot; to date, though I will say that I&apos;ve had a rather large volume of traffic regarding unexpected things, such as &lt;a href=&quot;/quick-tip-how-to-peel-frozen-bananas&quot;&gt;peeling frozen bananas&lt;/a&gt;, &lt;a href=&quot;/how-to-swap-faces-using-windows-live-photo-gallery&quot;&gt;swapping faces&lt;/a&gt;, and &lt;a href=&quot;/how-to-get-netgear-readyshare-to-work-with-time-machine-and-mountain-lion&quot;&gt;setting up a network TimeMachine backups using a Netgear router&lt;/a&gt;. I like to blog for me, so increasing numbers are nice, but not a personal measure of success.&lt;/p&gt;
&lt;p&gt;Keeping this blogging has made me a better writer (minus my plethora of grammar and spelling gaffes) and a better software engineer. The way I see it, if I can explain some of these technical concepts to others in a way they can grasp, then I&apos;ve demonstrated my own grasp on the concepts beyond the simple &quot;works on my machine&quot; functionality.&lt;/p&gt;
&lt;p&gt;Here&apos;s to another year of blogging!&lt;/p&gt;
</content:encoded></item><item><title>The Teacher</title><link>https://dillieo.me/posts/growth/2016-02-26-the-teacher/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-02-26-the-teacher/</guid><description>teaching</description><pubDate>Fri, 26 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve had the opportunity the last few days to be the “guest instructor” for my kids and it’s been a great experience.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It’s amazing to see how fast they pick up concepts, how excited they are, and seeing how the bigger picture is coming more in focus for them as they learn about the world about them. It also helped that I was able to teach them a bit about weather, something that I’m a bit of a hobbyist on anyway. Having my fancy weather station only made it more fun 8^D&lt;/p&gt;
&lt;p&gt;I was a bit intimidated by the experience as well. There are moments in every day where I see an oppotunity to inject a little lesson in here and there about math, english, Bible, whatever, but to have a “structured” session with them scared me a bit. How do I start? How do I transition? Do they even care? What if I overload them? All of this was racing through my head during my prep and even during the first session. Fortunatley everything worked out great and I have another session to go!&lt;/p&gt;
&lt;p&gt;More importantly, this small glimpse of teaching gives me an even greater appreciation for what my wife does with our girls on a daily basis. She’s planning for months, not days. She works with them all day, and then has to balance everything else out there as well. Honnie, I love you and appreciate even more what you do for our girls as their teacher!&lt;/p&gt;
</content:encoded></item><item><title>The Run</title><link>https://dillieo.me/posts/growth/2016-02-22-the-run/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-02-22-the-run/</guid><description>The Run</description><pubDate>Mon, 22 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I stepped out with my old familiar shoes and heavy sweatshirt. It was 37 degrees this morning, and I was a good 10 months overdue for my appointment with the road.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I hit the start button on my watch and start to jog. Immediately I’m greeted with the fresh bite of cold air rushing through my nose and I breathe. It feels so cleansing and I’ve missed that sensation for a long time. Equally missed, though not always eagerly missed, is my arms and legs telling me that we’re dusting off a lot of cobwebs around here.&lt;/p&gt;
&lt;p&gt;Things aren’t feeling as rusty as I remember them a while ago. I’m on a familiar path, so it helps me to gauge distance and speed. I enjoy feeling the temperature shifts due to the various rise and falls in terrain. It is still early enough that cars aren’t on the road, so I can enjoy the quiet.&lt;/p&gt;
&lt;p&gt;Wow, I’m a mile into it already. I’m feeling good! It isn’t the “let’s run 10 miles” good, but if I ask myself we need to keep pushing hard to make those hills, my body says “check”. My pace is half that of my “golden years” but that doesn’t matter. If anything, I’ve learned that I need to work back into these things slowly. Having kept the slow pace will give me the energy to finish the run.&lt;/p&gt;
&lt;p&gt;Here it is. The final 3/4ths of a mile and this is where the climb begins. It’s amazing at how the instant I start running uphill, my entire body starts to yell at me. This is always the critical point. The body screams “that’s it, call it a day!” and the mind screams “just a little bit further, you can do this!” and your will is caught somewhere in between. Oddly enough, this is where I mentally stumbled across &lt;a href=&quot;http://songl.ink/e2f58&quot;&gt;The Girl from Ipanema&lt;/a&gt; a few years back. The temp of the song is relaxing enough to keep my legs loose, but fast enough to keep them moving at a good pace.&lt;/p&gt;
&lt;p&gt;The half mile uphill becomes grueling. The lungs are now telling me (rather loudly) that they are far out of shape for the volume of oxygen the rest of my body is demanding. But we still have our mental rhythm, we have our breathing patterns in check, and the will is strong. Eventually we crest the top of the hill, and stretch out through the final downhill and straightaway home. There is no “kick” to the finish line today, but there is a triumphant and strong finish.&lt;/p&gt;
&lt;p&gt;There are no records broken today. But there is the first step of confidence built in myself for the next time I approach that hill. Most importantly, there is the joy of meeting an old friend excitement for the next run on Wednesday.&lt;/p&gt;
</content:encoded></item><item><title>On Writing Maintainable Code</title><link>https://dillieo.me/posts/development/2016-02-19-on-writing-maintainable-code/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-02-19-on-writing-maintainable-code/</guid><description>Matrix Code Tunnel</description><pubDate>Fri, 19 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the things that I’ve been asked about over at &lt;a href=&quot;https://wiselike.com/sean-patterson&quot;&gt;WiseLike&lt;/a&gt; and the one thing I think is most important in my career as a software engineer is the ability of writing maintainable code.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’m swiftly approaching the 15 year mark as a software engineer and I’ve worked with a lot of code of various sizes and languages. A lot of this code has been the “one and done” type projects. However, I’m writing _(or leading) _more and more code that I either revisit a few years later (an application is ready to be updated/refactored) or a project that is of a large enough scale that we have several people working on it and active development time is more than just a few months.&lt;/p&gt;
&lt;p&gt;Some of these visits to the code are joyful reunions where we sit and reflect on past days with big smiles. We head forward, hand in hand, skipping through the digital matrix, making it do our bidding, as we do bigger and better things. Some of these visits are quite the opposite. They are awkward reunions where we don’t know much about each other. More impactfully, I’m here to help an ailing patient and I still don’t really know where their sickness is. Much time is lost poking and prodding and we drag each other through the digital matrix, just trying to stand up again.&lt;/p&gt;
&lt;p&gt;Compilers and scripting engines are smart enough nowadays that you can put code nearly anywhere within your project and it will pick it up and run with it without a problem. This enabled RAD coding _(no, not the 80’s thing, but rapid application development) _which helps projects get done faster, but can make your code look like a huge pile of mismatched socks for you (or even more importantly, somebody else) down the road. With that in mind, here are some tips, tricks, and principles that I’ve done my best to use to keep my code as maintainable as possible.&lt;/p&gt;
&lt;h3&gt;Don’t worry about coding standards, as long as it’s consistent.&lt;/h3&gt;
&lt;p&gt;camelCase, PascalCase, underscored_spaced_naming, LOUD_CONTANT. All of these kinds of conventions have been subject to loud heated discussions (and online trolling) through the years. Sadly I took part in a few, especially when I was transitioning from one job to another when the “ideals&quot; had changed. I learned that ultimately, they don’t matter. The compiler converts it all into assembly or binary or CLR anyway. They are there to make things easier to grok when you’re scanning through the code. The important thing is that you keep it consitent within your team and you outline that somewhere. That way when you’re starting to work on Joe’s code, or Joe is working on yours, you both have the common understanding of what means what.&lt;/p&gt;
&lt;p&gt;One of the major benefits of having a consistent coding standard is that you can leverage code scanning tools to help you enforce it. &lt;a href=&quot;https://www.jetbrains.com/resharper/&quot;&gt;ReSharper&lt;/a&gt; and &lt;a href=&quot;http://vsrefactoringessentials.com&quot;&gt;Visual Studio Refactoring Essentials&lt;/a&gt; will both provide prompts (and quick hotkey fixes) to rename your variables if they don’t match a standard, and allow you to defines rules. Similarly, &lt;a href=&quot;https://github.com/squizlabs/PHP_CodeSniffer&quot;&gt;PHP Code Sniffer&lt;/a&gt; can do the same thing for you, and there are various plugins if you wish to use it with an IDE. Even if you’re coding by yourself, these tools have a baseline standard that is widely accepted by the community at large and can keep you coding consistently for yourself.&lt;/p&gt;
&lt;p&gt;Along those lines, when it comes to updating somebody else’s code, try to use their style/conventions as much as possible. Yes, you may use the inline constructor instead of declaring a new object and adding the parameters one by one and that may be a few nanoseconds faster when it comes to code execution. However, having that break in consistency makes the code a little more awkward to read for the next user. If you are going to refactor to your own style, make sure you do it everywhere. Most likely you won’t have that kind of time (or might break something), so keeping to the existing standard is beneficial.&lt;/p&gt;
&lt;h3&gt;Make your variable names meaningful.&lt;/h3&gt;
&lt;p&gt;Long gone are the days of x, y, i, j, s variable names. Memory and disk space are cheap, so spending a few extra characters to define your variable “address&quot; or “firstName&quot; instead of “a&quot; or “fn” go a long way to maintaining your code, especially if you get an e-mail 6 months later from another developer who is working on your code and they send you only the snippet asking why “a * x % z” is throwing an exception. I’m confused now just reading back one sentence. Remember not to go overboard on the opposite extreme as well. “authorizedSecondaryPostalCodeWhenUserSpecifiedInternationalAddress” is indeed descriptive, but probably too much so. Some browsers will probably try to word wrap that variable and we’re not even compiling it. My blog editor just did! Meaningful variable names will also go a long way to help your code be self documenting.&lt;/p&gt;
&lt;h3&gt;Organize by structure or feature.&lt;/h3&gt;
&lt;p&gt;One of the really nice things I like about.Net MVC architecture (as well as others) is that a typical scaffolded project keeps folders aptly named “Models”, “Views”, and “Controllers”. Providing additional benefits through “coding by convention”, you can use the default routing scheme and the “HomeController.cs” file in the controllers folder will automatically be wired up to the /Home route and the various actions will automatically look for the HTML templates in the /Views/Home folder. When you come back to this code later on, you know exactly where to find things for repair or improvement.&lt;/p&gt;
&lt;p&gt;Another really nice design I’ve seen in some AngularJS code is what is can be referred to as organization by feature. In this layout, each feature has a folder, and the appropriate templates, services, and controllers are all stored in the same folder. The required “top level” needs are often stored in a “globals” folder or something similar. That way, if you need to update the profile feature, you aren’t jumping around between model/controller/view folders, it is all in one place. This can be quite nice when you have a lot of features (and subsequent files) in an application.&lt;/p&gt;
&lt;p&gt;You can apply this to any project that doesn’t have any coding by convention features built in. Early on, I found a huge benefit from structuring my web applications into BLL (business logic layer) and DAL (data access layer) folders the appropriate classes built in. This also helped me keep my code separated by function, so that future updates could be pieced out easier.&lt;/p&gt;
&lt;h3&gt;Make a readme file, and use it!&lt;/h3&gt;
&lt;p&gt;One thing that I have to thank Github and BitBucket for is their feature that if you put a readme.md file (formatted in markdown) at the root of your project, it will automatically render this file on the repository home page in the browser. Some projects don’t make much use of this feature, but we’ve used this feature to provide an overview and springboard to getting a new developer up and running with the project. Typically we outline a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A quick summary of the project&lt;/li&gt;
&lt;li&gt;Project requirements&lt;/li&gt;
&lt;li&gt;Step by step on getting the project up and running locally&lt;/li&gt;
&lt;li&gt;Packaging and deployment procedures&lt;/li&gt;
&lt;li&gt;Any special “gotchas” or development notes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When done right, we can point a new developer to the repo, and they can get the code up and running on their machine. Then we can sit down with them and outline any special needs or point them to the task to be completed. This is especially important when a project has special software that needs to be installed and can save hours of HBAK (head banging against keyboard) time.&lt;/p&gt;
&lt;h3&gt;Reuse! Reuse! Reuse!&lt;/h3&gt;
&lt;p&gt;If you have a chunk of code that is around 5 lines of code or longer and it is used more than once, extract it out to a “Helper” class and make it a function. Do this early and often. On one had it may make your code seem a little more scattered, but with large teams or projects, you’d be surprised at how frequenly the same code process (fetch the records from the lookup table and put them into a list) winds up being duplicated. Worse yet, it gets duplicated with subtle differences, based on the coder’s style, and thus causes problems when that process needs to refine itself and you have to change it in 5 different places.&lt;/p&gt;
&lt;h3&gt;Code to 80 characters.&lt;/h3&gt;
&lt;p&gt;Wow, that’s a little harsh. Yeah, I know. Honestly I have a hard time sticking to this one myself. I wrote a &lt;a href=&quot;/coding-to-80-columns&quot;&gt;blog post about this&lt;/a&gt; quite a while ago and I think the concepts and merits are still the same. Keeping your code at 80 columns allows you to easily view your code on the screen without the hassles of horizontal scroll or awkward word wrap. Nowadays retina displays and huge monitors will eliminate this problem. From a maintainability perspective, keeping code to 80 characters will force you to make sure your variable names aren’t too long &lt;em&gt;(oh wait, I mentioned that above, see what I did there)&lt;/em&gt;. It’ll also help you think about whether or not you need those 8 different conditions to process your if statement. Maybe you do. In that case, splitting them out in a multiline style will help you identify the various statement evaluations, which will help you target the bug in your logic, instead of the ugly horizonal scrolling or word wrapping, which I mentioned above.&lt;/p&gt;
&lt;p&gt;With the complexity of some of the code needed these days (or even referencing the object types for declaration) it is often hard to stick to 80, so I typically let my code drift to 100 columns and if for some reason I hit 120, I take a step back and see what I’m doing. A lot of times it can’t be helped, but as much as possible crafting the code to those conventions is very helpful. Plus having a large chunk of code that is crafted succintly and can self document itself is a piece of beautiful code that can stand many years of use and refactoring.&lt;/p&gt;
&lt;h3&gt;What else?!&lt;/h3&gt;
&lt;p&gt;If I’ve learning anything over the years, it’s never stop learning! What tricks do you use to keep your code maintainable? Let me know!&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Fried Apple Cinnamon Rings</title><link>https://dillieo.me/posts/growth/2016-02-17-worth-sharing-fried-apple-cinnamon-rings/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-02-17-worth-sharing-fried-apple-cinnamon-rings/</guid><description>Worth Sharing Fried Apple Cinnamon Rings</description><pubDate>Wed, 17 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a complete HT (hat tip) to &lt;a href=&quot;http://tiphero.com&quot;&gt;Tip Hero&lt;/a&gt;, but I had to make sure to keep a record of this for my own use. This recipe isn’t as complicated as it may look and is great with breakfast.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;1 - Prep Apples&lt;/h3&gt;
&lt;p&gt;Take 3 to 4 apples and cut them horizontally into rings (you’ll see the “apple star” in the middle of it). Then use a cookie cutter to cut out the middles and make rings. Place them between two sheets of paper towels and press lightly to get some of the excess moisture out of them. Set them aside to dry out a little more.&lt;/p&gt;
&lt;h3&gt;2 - Prep Batter&lt;/h3&gt;
&lt;p&gt;In a large bowl, add the following ingredients and mix them together:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1c Flour&lt;/li&gt;
&lt;li&gt;2tbsp Sugar&lt;/li&gt;
&lt;li&gt;1/4tsp Cinnamon&lt;/li&gt;
&lt;li&gt;1/4tsp Baking Powder&lt;/li&gt;
&lt;li&gt;1/4tsp Salt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In a smaller bowl, add the following ingredients together and mix them together:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1c Buttermilk (you can mix a cup of milk and a tsp of vinegar and let it sit for 10 minutes too)&lt;/li&gt;
&lt;li&gt;1 large egg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mix the wet ingredients into the dry and mix until it is blended. It may take a couple of minutes to fully thicken.&lt;/p&gt;
&lt;h3&gt;3 - Prep Topping&lt;/h3&gt;
&lt;p&gt;In another wide bowl, mix together the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1/2c Sugar&lt;/li&gt;
&lt;li&gt;2tsb Cinnamon&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4 - Fry Rings&lt;/h3&gt;
&lt;p&gt;Add vegetable oil (coconut oil works nice too) in to a skillet or a pan and heat to 350 degrees. Dip the apple rings in the batter until well coated and put in the skillet. Fry until golden brown and set on a cooling rack to drain.&lt;/p&gt;
&lt;p&gt;Once slightly cooled, but drained, place both sides of the rings in the bowl with the topping so they get a slight coating.&lt;/p&gt;
&lt;h3&gt;5 - Eat&lt;/h3&gt;
&lt;p&gt;Once fully cooled (though slightly warm is great too) eat away! If you want to have some extra fun, put in a few spoonfulls of the batter in the oil to make hush puppies as well.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Fixing Ssh Bitbucket Error In Windows 10 On Vmware Fusion</title><link>https://dillieo.me/posts/development/2016-02-11-quick-tip-fixing-ssh-bitbucket-error-in-windows-10-on-vmware-fusion/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-02-11-quick-tip-fixing-ssh-bitbucket-error-in-windows-10-on-vmware-fusion/</guid><description>Quick Tip</description><pubDate>Thu, 11 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I started seeing an odd bug when trying to push/pull code from Bitbucket:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh: Could not resolve hostname bitbucket.org: Non-recoverable failure in name resolution fatal: Could not read from remote repository.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Oddly enough doing a ping against the site works just fine. In my case I&apos;m using VMWare Fusion, and changing the network settings from Bridged to NAT doesn&apos;t solve anything.&lt;/p&gt;
&lt;p&gt;While full diagnostics are still not in, it appears that Visual Studio 2015 is installing a newer version of msysgit, which seems to cause the problem. The solution is to simply add the IP address to bitbucket in your hosts file and everything starts to work again.&lt;/p&gt;
&lt;p&gt;It looks like VMWare might be looking into this, but it&apos;s hard to &quot;point blame&quot; at this point. Things are working, so I&apos;m happy for now. 8^D&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>In Which I Graciously Thank Starbucks For Exceeding Customer Service</title><link>https://dillieo.me/posts/growth/2016-02-08-in-which-i-graciously-thank-starbucks-for-exceeding-customer-service/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-02-08-in-which-i-graciously-thank-starbucks-for-exceeding-customer-service/</guid><description>20160209_043403473_iOS</description><pubDate>Mon, 08 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;All I wanted was a new mug for my coffee...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;...I was about half way through my cup of coffee (a unique and smooth West Java Preanger) at the &lt;a href=&quot;http://roastery.starbucks.com&quot;&gt;Starbucks Reserve Roastery &amp;amp; Tasting Room&lt;/a&gt; when I noticed a few drips in my hand. I had put a napkin there since a little had spilled when first being set on my tray. Alas no, there was a tiny crack near the bottom of my mug and it was causing a noticeable beading of coffee that would drip.&lt;/p&gt;
&lt;p&gt;I walked up to the counter, pointed it out, tried not to drip on the counter, and asked for a new mug to pour the remaining coffee into so I could enjoy the rest drip free. Apparently this wouldn&apos;t do. The barista asked what I was was drinking and said she was make a fresh mug up for me. I said that wasn&apos;t necessary but she insisted and asked where I was sitting.&lt;/p&gt;
&lt;p&gt;A few minutes later she brought me a new tray, with a fresh mug full of coffee (and it&apos;s not cheap either). In addition to that, there was a gift card next to it saying &quot;Your next drink is on us.&quot;&lt;/p&gt;
&lt;p&gt;Sakes alive! That was a double whammy of generous customer service I wasn&apos;t expecting! Thank you Starbucks. I think that sealed the deal that I&apos;ll be making a visit whenever I&apos;m back up in the Seattle neck of the woods.&lt;/p&gt;
</content:encoded></item><item><title>On The Joys Of Mvc Architecture</title><link>https://dillieo.me/posts/development/2016-02-04-on-the-joys-of-mvc-architecture/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-02-04-on-the-joys-of-mvc-architecture/</guid><description>On The Joys Of Mvc Architecture</description><pubDate>Thu, 04 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As part of the goals for 2016, one of them is to “reface” my &lt;a href=&quot;http://prayerjournal.apphb.com&quot;&gt;Prayer Journal&lt;/a&gt; app using the &lt;a href=&quot;https://material.angularjs.org/latest/&quot;&gt;Angular Material library&lt;/a&gt; provided by Google. In the process of doing this, I’ve come to appreciate (yet again) the joys of building things using MVC architecture.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For those of you not familiar, MVC stands for Model / View / Controller. For your typical application structured in this manner (very popular on the web right now) your application is broken down into three main components:&lt;/p&gt;
&lt;p&gt;Models - These are the objects or data points in your application. If you have an app with prayer records sitting in a database, you create a “Prayer” model that contains all of the properties that you have in the database. Models are pretty lightweight this way, though some frameworks prefer to have the actual CRUD methods (create, retrieve, update, delete) within the model classes as well.&lt;/p&gt;
&lt;p&gt;Views - This is what the user actually sees when using your application. This is the web pages, mobile apps, or whatever you decide to have for users to interface with. Unlike previous ways of building apps, the view is predominantly “dumb”. It’s not responsible for doing complex processing of the data, simply to present it. You may need to show/hide a few things, but for the most part the view is all display code.&lt;/p&gt;
&lt;p&gt;Controller - Most of your work is done in the controller. It’s the major workhorse for things. It takes a request from the view (go grab all my prayers), checks the security (user is logged in, check), grabs the data and puts it into the appropriate model (or talks to the model directly to do this) and then sends the necessary data back to the view for display. Lately a lot of “controllers” are built using a web based API (Prayer Journal is) so that you can have multiple views (web app, mobile app, some device) interface with your “app core” without much rework.&lt;/p&gt;
&lt;p&gt;…which leads us into my point for today. Since I’ve built things using a MVC mindset with WebAPI serving as my “controller”, swapping out my views has been relatively painless. There is a little bit of a learning curve with how I want to present and restructure the pages themselves, but ultimately I’m making the same controller calls as I was before, so I don’t have to worry about any of that, I’m just putting on a new coat of paint.&lt;/p&gt;
&lt;p&gt;It seems pretty commonplace to take this approach, but I’ve been through the years where your presentation/controller/data layers were all pretty tightly coupled and setting something up like this took a LOT of work. This is definitely a breath of fresh air.&lt;/p&gt;
</content:encoded></item><item><title>Random Pro Tips Shoveling Snow</title><link>https://dillieo.me/posts/growth/2016-02-02-random-pro-tips-shoveling-snow/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-02-02-random-pro-tips-shoveling-snow/</guid><description>Pro tipss for shoveling snow</description><pubDate>Tue, 02 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is partially an excuse to have a picture of ducks in the snow (what?! they do that?! Yes they do!) but here are a couple quick &quot;pro tips&quot; I&apos;ve come to find when digging your vehicle (and driveway) out of the snow...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Galoshes&lt;/h3&gt;
&lt;p&gt;Spend the $15 at Tractor Supply Company for a good pair of galoshes. They&apos;ll keep your feet impervious to melting snow (even through those boots) and they are double effective when trudging through the mud during the rainy season. Just make sure to have some good wool socks too. Impervious to wet, yes. Impervious to cold, no.&lt;/p&gt;
&lt;h3&gt;Timing&lt;/h3&gt;
&lt;p&gt;It may mean getting up a little bit earlier, or potentially going out a little later, but if you can start shoveling before that first round of warm sun comes in and converts all that powder into ice block chunks of evil, then do it! The same amount of snow I shoveled took me 30 minutes as opposed to an hour because it was that much easier to move!&lt;/p&gt;
&lt;p&gt;Do you have any tips? I&apos;d love to hear them!&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 3</title><link>https://dillieo.me/posts/growth/2016-01-29-freeform-friday-3/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-01-29-freeform-friday-3/</guid><description>1452865048_1.jpeg</description><pubDate>Fri, 29 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Squirrel!!!! Yeah, I needed something to fill in my quota for the week, it&apos;s been a busy day.&lt;/p&gt;
&lt;p&gt;Sidenote, and slightly more serious. &lt;a href=&quot;https://azure.microsoft.com/en-us/services/media-services/&quot;&gt;Azure Media Services&lt;/a&gt; is truly amazing.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Same And Different</title><link>https://dillieo.me/posts/growth/2016-01-27-same-and-different/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-01-27-same-and-different/</guid><description>Same And Different</description><pubDate>Wed, 27 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a father of multiple kids, I forget at times that I treat my kids differently.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The way I interact and connect with my girls is unique. Rylee would love to just spend time building something with legos (or even organizing them). When I talk with her, often I’m “breaking things down” a bit more with her because she’s very analytical that way. Haylee on the other hand, is more the “runner and jumper” of the two. Most of the time, she’s more “matter of fact”. I can tell her this is why something is and she’s fine with it. When left to a daddy/daughter day Rylee would enjoy being home crafting something up or playing pretend, while Haylee would rather go somewhere. It’s these unique facets of their personalities I take into consideration when I’m with them.&lt;/p&gt;
&lt;p&gt;In doing this, however, I’m still the same me. The virtues of attitude, behavior, and character that I seek to instill into my children everyday come from the same person. I don’t change who I am, though my approach will change with each child for maximum effectiveness, because I know what will reach them best. It can be hard at times, especially when “flip flopping” between both kids in the day to day activities of life, but it is worth it.&lt;/p&gt;
&lt;p&gt;All of this has led me to think deeper about my relationship with God. Every soul out there is unique, and thus each soul’s relationship with the creator would be unique, especially when God is seeking to have that deep an intimite relationship with each one of us. I should clarify that I don’t believe that we each have an individual god. I firmly believe there is one God in the universe. Our relationship with Him though, is going to be different. The ways in which we speak, the ways in which He speaks to us, are going to be different. The trials and events in life are going to be different, and in each, God will reach us personally through them, since they speak to us effectively.&lt;/p&gt;
&lt;p&gt;This is why it is important to gather with others, to see what their relationship is like with God. While each relationship is unique, there are still plenty of commonalities that we go through in which we can share, and grow, and gain perspective wtih. More importantly, as I’ve been discovering slowly, is that I should seek what my relationship is like with God. Books, and videos, and all sorts of things can be helpful, but ultimately I need to build my own relationship with God, because He knows how to speak to me in a way that will most effectively change my life.&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 2</title><link>https://dillieo.me/posts/development/2016-01-22-freeform-friday-2/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-01-22-freeform-friday-2/</guid><description>1452865048_1.jpeg</description><pubDate>Fri, 22 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind …. NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Books!!!!! I found this really interesting article a while back called &quot;&lt;a href=&quot;http://io9.gizmodo.com/5924625/10-science-fiction-novels-you-pretend-to-have-read-and-why-you-should-actually-read-them?utm_campaign=socialflow_io9_facebook&amp;amp;utm_source=io9_facebook&amp;amp;utm_medium=socialflow&amp;amp;utm_expid=66866090-67.e9PWeE2DSnKObFD7vNEoqg.0&amp;amp;utm_referrer=http%3A%2F%2Fio9.com%2F5924625%2F10-science-fiction-novels-you-pretend-to-have-read-and-why-you-should-actually-read-them%3Futm_campaign%3Dsocialflow_io9_facebook%26utm_source%3Dio9_facebook%26utm_medium%3Dsocialflow&quot;&gt;10 Books You Pretend to Have Read (And Why You Should Really Read Them)&lt;/a&gt;&quot; and I&apos;ve taken it upon myself to do so!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m going out of order, but I&apos;ve started with &lt;a href=&quot;https://en.wikipedia.org/wiki/Foundation_series&quot;&gt;Asimov&apos;s Foundation&lt;/a&gt;. I&apos;m going to read the &quot;original three&quot; to start and then branch out to others. I remember back in junior high trying to read Foundation and getting bored with it pretty fast. But starting it up again, this book feels like a &quot;legacy&quot; type book spanning multiple generation, and I really enjoy the long story at this point, probably not so much back then. 8^D&lt;/p&gt;
&lt;p&gt;Speaking of books, I also finished off the first book in the &lt;a href=&quot;https://www.goodreads.com/book/show/6828998-molly-fyde-and-the-parsona-rescue&quot;&gt;Molly Fyde series&lt;/a&gt; by Hugh Howey (of Wool acclaim). I&apos;ll admit that it wasn&apos;t as gripping in the beginning as Wool was for me, but I started to enjoy the plot and character development involved. Plus there are some really interesting aliens in the mix here. While I won&apos;t be devouring them as fast as I did Wool, I&apos;m definitely going to work through the series.&lt;/p&gt;
&lt;p&gt;What books have you been reading lately. What ones are you planning on starting?&lt;/p&gt;
</content:encoded></item><item><title>Everything As A Service</title><link>https://dillieo.me/posts/development/2016-01-21-everything-as-a-service/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-01-21-everything-as-a-service/</guid><description>service-button.png</description><pubDate>Thu, 21 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Having signed up for the full Amazon Prime experience over the weekend, I started looking around again to see how proliferate “as a service” is becoming out there...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;A quick overview of services I’ve seen or signed up for are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unlimited 2 Day Shipping - Amazon Prime&lt;/li&gt;
&lt;li&gt;Unlimited Music - Spotify, Google Music, Apple Music, Rdio, Amazon Music&lt;/li&gt;
&lt;li&gt;Unlimited Book Reading - Amazon Kindle Unlimited, Amazon Prime Books, Audible&lt;/li&gt;
&lt;li&gt;Unlimited Video Watching - Netflix, Amazon Prime Video&lt;/li&gt;
&lt;li&gt;Unlimited TV Watching - Hulu, Amazon Prime Video, Sling.TV&lt;/li&gt;
&lt;li&gt;Food and Recipes at your Doorstep - HelloFresh, FoodApron&lt;/li&gt;
&lt;li&gt;Crafts at your Doorstep - Tinker Crate&lt;/li&gt;
&lt;li&gt;Game Rentals - GameFly&lt;/li&gt;
&lt;li&gt;Specialized Coding for Kids - Tynker (Hour of Code)&lt;/li&gt;
&lt;li&gt;Web Platform (more than just a host server) - Microsoft Azure, Amazon Web Services, AppFog, AppHarbor&lt;/li&gt;
&lt;li&gt;Specialized Wine - Wine of the Month Club&lt;/li&gt;
&lt;li&gt;Specialized Coffee - Gevalia, Starbucks, Several Fair Trade organizations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phew… I’ve lost count. I’m sure each of these categories has a dozen more “new players” and there are other services I’m not even aware of.&lt;/p&gt;
&lt;p&gt;From what I’ve found, there’s always a fine line to take with these services. Am I using them enough to warrant the fee? We do SOOO much purchasing online through Amazon now that Prime shipping is a no brainer. It has saved us tons of money. However, we dropped audible recently because the single book we were using per month wasn’t worth the $15 a month fee we were paying. How much am I getting? We took a 50% off sample for a Gluten Free “food box” club. The snacks were nice, and we got a nice pasta sample, but we polished that off in less than a week. For a family of 4, this wasn’t cost effective for us. Personally, I would need about 3 subscriptions to those coffee of the month clubs to adequately fuel our household drinking. 8^D&lt;/p&gt;
&lt;p&gt;Music has always been the biggest “iffy” on my part. I listen to music all day. The variety of stations and types I listen to help keep me focused and motivated during the day. While I work from home, there are those times that I’m working outside the home, or while I’m on one of my work trips, and having the music available becomes something that makes one of the “unlimited” services worthwhile since I can download them to my phone. Sure I have our collection of music pushed up to Google Music, but that doesn’t help for the newer stuff that I listen to. Why pay $7 - $12 for an album when I can consume them all for $10 a month AND download them? Since we transferred over to our own Prime account, I’ve been making heavy use of Amazon Prime Music to try this out. They don’t have the wide selection that other services have, and I’m missing a few of my favorites, but we’ll see how things play out after my next business trip next month.&lt;/p&gt;
&lt;p&gt;What “services” are you using? Are you getting the value out of them? How do you keep from “service overload” since a “mere $9.99” a month can add up fast when you have 10 services to subscribe to?&lt;/p&gt;
</content:encoded></item><item><title>Freeform Friday 1</title><link>https://dillieo.me/posts/growth/2016-01-15-freeform-friday-1/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2016-01-15-freeform-friday-1/</guid><description>1452865048_1.jpeg</description><pubDate>Fri, 15 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Simply write about the first thing that comes to your mind.... NOW!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It’s not that I necessarily have writers block at times, it’s just that soemtimes I get too worried about what I’m going to write, and one of the best blogging times was early in the “&lt;a href=&quot;/10-day-retrospective&quot;&gt;10 days to a better blog&lt;/a&gt;” series I did where I was to simply “just write”.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Powerball mania has come and gone again and admittedly I was sucked into it. I only spent a whopping 12 bucks total, but it made me start to wonder where the tipping point is at where things get exponential in purchasing. This small town had a few lines outside of the convenience stores and you could hear people talking about it. Now that are winner and things are back to normal, I’ll forget about it again, and think about what if those numbers from Lost are powerful enough. 8^D&lt;/p&gt;
&lt;p&gt;I’ve started reading Henri Nouwen’s “The Inner Voice of Love” and it is an unexpected and powerful read. They are journal entries, and not large ones at that. The author encourages us to only read one or two entries at a time, because they are powerful words from a time of extreme anguish that he went through. Rather profound was today’s entry about having to “choose” the truth, even when you don’t feel it. This is a muddled description, better to just quote it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You must believe in the yes that comes back when you ask “Do you love me?” You must &lt;em&gt;choose&lt;/em&gt; this yes even when you do not experience it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I remember back in college during one of my Torrey sessions where our instructor talked about this a little bit as well. Some times we command ourselves (just like in the psalms) to “Bless the Lord, O my Soul”, even when we are feeling alone, lonely, doubtful. Oddly enough the soul obeys. It make for an immediate turn around, but I think it helps bridge that head/heart gap that we can so easily have in our beings.&lt;/p&gt;
</content:encoded></item><item><title>Buffy And Angel</title><link>https://dillieo.me/posts/development/2016-01-13-buffy-and-angel/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-01-13-buffy-and-angel/</guid><description>BuffyAngelLogos</description><pubDate>Wed, 13 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Nowadays, it’s rare to find something that you’ll go back to more than once. Last night Jen and I finished our third pass though on the Buffy and Angel series, taking about 5 months to get through 12 seasons worth of TV.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve always been a little more partial towards Angel. The series is a bit darker, the story of redemption seems a little more appealing to me. The journeys each character goes through seems more profound as well, especially given the situation they are thrust into during the final season.&lt;/p&gt;
&lt;p&gt;At the same time, Buffy has this beautiful balance of quirkiness, fun, and intesity wrapped up into one. The series feels more “episodic” (except near the end) and it’s crazy to see how some of the “perils” of high school life in Sunnydale translate into some really deep ideas at the end of the day.&lt;/p&gt;
&lt;p&gt;I guessing I’m getting a little too vague here and I really want you to check these series out, so here’s a little more about it...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Buffy_the_Vampire_Slayer&quot;&gt;Buffy&lt;/a&gt;, which came first, is a teenage vampire slayer. She’s been given powers granted to only one girl at a time on the earth and she just so happens to be sitting on top of a “hell mouth” from which all sorts of evil likes to come out and try to play. Buffy must stop these evils, all while going through your typical woes of high school life. She has a mentor and a few close friends that helps her get through the day. Sounds a bit cheesy? You bet it is! Especially during the first few seasons, but stick with it, you’ll see how you’ll come to truly enjoy this style of writing within the show. Back in college we used to have a whiteboard with the “quote of the week” which often came from the show we watched that week.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Angel_(1999_TV_series)&quot;&gt;Angel&lt;/a&gt; is a spinoff from Buffy, featuring the most promenent “side character” of the first three seasons. He’s a vampire with a soul (yeah, see how that might play rather interesting with a girl who is a vampire slayer, but I say no more) and has relocated to Los Angeles to setup shop and keep doing his thing. He’s rather broody and tormented to some degree. He’s spent over a hundred years as the worst killer on the planet and with his soul back he has a lot of remorse and atonement to achieve. While that seems a little typical, he’s up against “the powers that be” on almost a daily basis, and with friends new and old (and non-human 8^D) they will all go on this journey together. Often times it isn’t pretty, and results don’t come by the end of the first (or fourth) episode, but change is indeed happening.&lt;/p&gt;
&lt;p&gt;Both of these series come from the brain of Joss Whedon, who does some truly amazing writing and story telling. You’ve seen his name all over the place, and the writers and actors in the shows he’s make often show up in other shows or have gone off to do other things. Once you get started, you won’t want to stop. 8^D They’re both on Netflix, so go give them a whirl.&lt;/p&gt;
&lt;p&gt;That said, it’s time to start &lt;a href=&quot;https://en.wikipedia.org/wiki/Firefly_(TV_series)&quot;&gt;Firefly&lt;/a&gt;, another fabulous (yet sadly short lived) series of his. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Database Migrations With Azure Ef7 And Dnx</title><link>https://dillieo.me/posts/development/2016-01-07-database-migrations-with-azure-ef7-and-dnx/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-01-07-database-migrations-with-azure-ef7-and-dnx/</guid><description>1452196112_1.png</description><pubDate>Thu, 07 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With the newest release of ASP.Net 5 (vNext) and Entity Framework 7, it appears that the traditional web.config transform method and startup code will no longer work to have your database migration scripts automatically run when you deploy your code from source control to Azure. Here’s a new way that you can accomplish the same task and keep your continuous integration setup running smoothly.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;In order for this solution to work, we modify the existing kudu deployment script and take advantage of the &lt;a href=&quot;http://docs.asp.net/en/latest/fundamentals/environments.html&quot;&gt;environment configuration&lt;/a&gt; that comes with the new framework.&lt;/p&gt;
&lt;h3&gt;1. Configure Environments&lt;/h3&gt;
&lt;p&gt;The first step is to add a new environment configuration for our deployment environment on Azure. We’re going to create a “Staging” environment in this case, since our app isn’t quite ready for production release yet. This staging configuration is going to have our updated datbase connection string, since default “Development/Local” configuration points to the machine database.&lt;/p&gt;
&lt;p&gt;To do this, create a new file named appsettings.Staging.json and add the configuration section(s) that need updating:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{ &quot;Data&quot;: { &quot;MyConnection&quot;: &quot;MY_STAGING_CONNECTION_STRING&quot; } }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The way the new configuration model works is that the default appsettings.json file is loaded. Then if an environment variable is detected, it loads the corresponding environment file, named app settings.{Environment}.json, and overrides any default settings that are found. There are also options to have customized application startup code files as well with this new model.&lt;/p&gt;
&lt;p&gt;In order for our application deployment to use this configuration string (for deployments and for the web application), you’ll need to log into the Azure control panel, navigate to your application service, select “Application Settings” and add a new “App settings” entry with the following details&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Name: ASPNET_ENV Value: Staging&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Make sure to save the changes. Now whenever the web application is started, it will use yoru staging configuration for the database connection. Eventually you’ll want to do this for production as well.&lt;/p&gt;
&lt;h3&gt;2. Customize Your Deployment Script&lt;/h3&gt;
&lt;p&gt;When you first hook up your web application to your continuous integration repository, a deployment script is automatically created for you. This script will download all the appropriate DNX resources, restore dependencies, run the appropriate publishing commands, and then copy the deployment assets to the live site if everything is successful. Azure uses &lt;a href=&quot;https://github.com/projectkudu/kudu&quot;&gt;Kudu&lt;/a&gt; to fascilitate all of this. Fortunately, Kudu allows you to easily create your own deployment scripts to override the default one. As an added bonus. The Azure portal allows you to easy access your Kudu setings and scripts.&lt;/p&gt;
&lt;p&gt;Go back to your Application Service section and click on the “Tools” button. Then select “Kudu” and click the “Go” link to launch the Kudo control panel:&lt;img src=&quot;@assets/images/posts/2016-01-1452196116_2.png&quot; alt=&quot;1452196116_2.png&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2016-01-1452196119_3.png&quot; alt=&quot;1452196119_3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the Kudu control panel, click on the “Tools” menu option and then select “Download Deployment Script”. This will send you a zip file with two files:.deployment and deploy.cmd. Save these files into the root of your repository, not necessarily your project root. If you don’t save them to the repository root, Kudu won’t detect them during the deployment and will use the defaults instead.&lt;img src=&quot;@assets/images/posts/2016-01-1452196122_4.png&quot; alt=&quot;1452196122_4.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Open the deploy.cmd file in a text editor. Note: you may get a security warning about opening a.cmd file. You can trust this file and edit it.&lt;/p&gt;
&lt;p&gt;Since we have already added our environment configuration variable through the portal, it is also exposed as an environment variable at the command line that runs for the deployment. When we run our “dnx ef database update” command, we can specify which environment to use for the process. However, since the deployment script itself runs in the repository root and not the project root, we’ll need to change to our project root directory in order for dnx to properly retrieve the necessary resources. Take a look at the deployment file. You’ll find somewhere in there is a “Run DNU Bundle section”. Notice how the command in here contains the path to our project.json file. We will want to use this path for our migration update command.&lt;/p&gt;
&lt;p&gt;Right below the DNU Bundle command, we add another command to run the database migrations:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:: 5. Run EF Migration echo Running EF Migrations... echo Environment %ASPNET_ENV% call cd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In the code above, I’ve setup a lot of output so that I can properly track if something goes wrong. I add an echo statement so I can track when I’m starting the migration process of the script. I also echo the environment variable for ASPNET_ENV so I can track that the proper environment variable is being called. Finally I use the -v option on my database update command to get the output of it’s process, to help identify any issues if they come up.&lt;/p&gt;
&lt;p&gt;I like running the EF migration before the Kudu Sync process, since that final step involves running all of the grunt scripts, which downloads node/bower modules and runs minification steps too (everything in your “prepublish” section of your project.json file).&lt;/p&gt;
&lt;h3&gt;3. Deploy Your Updates&lt;/h3&gt;
&lt;p&gt;Once this is in place, push the code to your repostitory and check out the results. Once the Azure deployment is complete, you should be able to look in the deployment log and see where the EF migration started, the environment it used, and when it completed. Check your staging database, all tables (or updates) should now be there.&lt;img src=&quot;@assets/images/posts/2016-01-1452196124_5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Flexibility&lt;/h3&gt;
&lt;p&gt;I’ve seen a few other solutions about how to achieve the same result, but while there is a little bit of upfront work for this solution, it is a lot more flexible. By leveraging the ASPNET_ENV option, you can use the same deployment code on any range of environments, and only need to add the proper file/portal variable. The deployment script stays with your code repository, so there is no worry about “grabbing a fresh copy” of the deployment script in your next application instance. Unfortunately the path to the project root is hard coded, but that value should remain the same between your Test/Staging/Production deployments in Azure, and who knows, maybe there is a way to work on configuring that as well.&lt;/p&gt;
&lt;p&gt;Finally, I like how this solution “de-couples” itself from the web portion of the deployment. Some initial attempts at this solution had the migration command in the “prepublish” section of the project.json file, but that was a “code smell” to me. Ideally we want to verify the database has updated before we even bother with the web code, and this allows us to do so elegantly.&lt;/p&gt;
&lt;h3&gt;Improvements?&lt;/h3&gt;
&lt;p&gt;Let me know if you try this out and if it works for you. If you have any improvements or suggestions, I’d love to hear them!&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>How To Test Fake Email Addresses</title><link>https://dillieo.me/posts/development/2016-01-05-how-to-test-fake-email-addresses/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2016-01-05-how-to-test-fake-email-addresses/</guid><description>How To Test Fake Email Addresses</description><pubDate>Tue, 05 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;…otherwise subtitled “Fake e-mail addresses aren’t so fake afterall…&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As part of an ongoing project, we needed to setup a large amount of dummy accounts, to test workflow, messaging, and other critical aspects to the system. In order to do this, we used a standard “faker” type library that allows us to easily generate as many fake names, e-mail addresses, addresses, whatever you need. We then run our unit tests, which involve sending e-mail messages through Mandrill. This worked fine until...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;...one day we received an e-mail message from an actual person, wondering why they were getting a notification about Event X occurring. This was a genuine surprise, especially considering the “fake” e-mail address wasn’t attached to a hotmail or gmail domain, but to a randomized domain that was generated as well. Discovering this issue also led into some further investigation which showed that our Mandrill rating had been tarnished due to the large volume of “rejected” e-mails that the testing attempted to send. Mandrill does have a test mode, but we hadn’t turned this on.&lt;/p&gt;
&lt;p&gt;So how can you do some form of proper e-mail testing without those complications. Here are two tricks that worked out for us.&lt;/p&gt;
&lt;h3&gt;Use example.com domain&lt;/h3&gt;
&lt;p&gt;The example.com domain has been setup to automatically accept any e-mail messages that come to it. The e-mail is dropped, but for purposes of making sure Mandrill is functioning properly, or your internal mail code is delivering e-mail, you can create random accounts using the example.com domain and test away.&lt;/p&gt;
&lt;h3&gt;Use Gmail +1 addresses&lt;/h3&gt;
&lt;p&gt;Another trick that helps is that if you have a Gmail account, you can send an e-mail to [YourEmailId]+1@gmail.com and the message will be sent to your “main” email address. The +X works with nearly anything: joe+1, joe+test, joe+superrandomness, etc. All of these e-mails will all go to the main “joe&quot; e-mail account. This also works for Google Apps hosted e-mail accounts.&lt;/p&gt;
&lt;p&gt;Using the +1 addresses allows you to setup multiple accounts in your application that require e-mail addresses and use them beyond your unit tests. Typically the e-mail address must be unique for accounts, so this will give you the unique addresses you need and all of the important e-mails will be funnelled into a single account that you can use to verify/track notifications, workflow, etc. In addition, there is no need to sign up on multiple platforms (outlook, yahoo, etc.) just to do some basic testing.&lt;/p&gt;
&lt;p&gt;Once we reconfigured our faker scripts to use example.com domains and setup multiple “working accounts” using the +1 tagging, our e-mail testing went a lot smoother.&lt;/p&gt;
&lt;p&gt;Do you have any other tricks for app testing that requires e-mail, I’d love to hear them!&lt;/p&gt;
</content:encoded></item><item><title>2015 In Photos</title><link>https://dillieo.me/posts/growth/2015-12-29-2015-in-photos/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-12-29-2015-in-photos/</guid><description>17598031158_7650820d68_z</description><pubDate>Tue, 29 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve never considered myself a good photographer (that would be my &lt;a href=&quot;/old-age-is-not-for-sissies&quot;&gt;grandfather&lt;/a&gt;) but I do like to capture those random moments in life, as well as a few staged ones.&lt;/p&gt;
&lt;p&gt;Here are a couple of my favorite pictures over the past year, and the rest are stored in a handy &lt;a href=&quot;https://flic.kr/s/aHskojJfK1&quot;&gt;Flickr album here&lt;/a&gt; (yeah, I&apos;m one of those weirdos that still uses Flickr 8^D).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;img src=&quot;@assets/images/posts/2015-12-18262445876_21327cd643_z.jpg&quot; alt=&quot;18262445876_21327cd643_z&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-12-19128222223_793c451f21_z.jpg&quot; alt=&quot;19128222223_793c451f21_z&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I hope you&apos;ve had a memorable year. Here&apos;s to MMXVI!!!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Breakpoint Failed To Bind In Visual Studio 2015</title><link>https://dillieo.me/posts/development/2015-12-28-quick-tip-breakpoint-failed-to-bind-in-visual-studio-2015/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-12-28-quick-tip-breakpoint-failed-to-bind-in-visual-studio-2015/</guid><description>Quick Tip Breakpoint Failed To Bind In Visual Studio 2015</description><pubDate>Mon, 28 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Are you running into an unusual amount of “Breakpoint failed to bind.” errors in Visual Studio 2015? This is probably due to a change in how the debugger is working. In the past when you fired up the debugger, Visual Studio automatically triggered a rebuild of the source code in debug mode, so that all the debug symbols are up to date and ready to debug. It appears that this is no longer the case in VS MMXV.&lt;/p&gt;
&lt;p&gt;The solution is simple enough. Make sure to change your compile target to “Debug” before pressing that magical F5 button and you should be all set! It’s always the simple things… 8^D&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Merry Christmas Eve</title><link>https://dillieo.me/posts/growth/2015-12-24-merry-christmas-eve/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-12-24-merry-christmas-eve/</guid><description>Courthouse Christmas Lights</description><pubDate>Thu, 24 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Time was with most of us, when Christmas Day, encircling all our limited world like a magic ring, left nothing out for us to miss or seek; bound together all our home enjoyments, affections, and hopes; grouped everything and everyone round the Christ.&lt;/p&gt;
&lt;p&gt;~ Charles Dickens&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Review Star Wars The Force Awakens</title><link>https://dillieo.me/posts/growth/2015-12-22-review-star-wars-the-force-awakens/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-12-22-review-star-wars-the-force-awakens/</guid><description>Review Star Wars The Force Awakens</description><pubDate>Tue, 22 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;TL;DR (spoiler free) 8.5 / 10&lt;/strong&gt;: J.J. Abrams has done a brilliant job at bringing us back to the Star Wars universe with the fun, drama, and magic that made us fall in love with the originals. While giving a nod to the original films (and a big of the expanded universe), you’ll want to see this one again AND be itching for the next installment to come out.&lt;/p&gt;
&lt;p&gt;For a LOT of spoilers (and my own thoughts) keep reading...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’m no movie critic, so instead of laying out a crafted plot review/summary, I’m just going to go through the topics that come to mind (in no particular order) after having seen this movie twice (hopefully a few more times in the theatre to boot 8^D)&lt;/p&gt;
&lt;h3&gt;Opening Sequence&lt;/h3&gt;
&lt;p&gt;I’ve been a fan of Abram’s work for quite a while now (yes, I really did like Lost) and so I was eager to see what he would do to the Star Wars universe. I was also a little anxious that there might be a huge change in the overall universe to which I was familiar. I was even afraid that we might not have the opening theme song and scrolling of text that we all know and love. Fortunately both of those were here and we were off and running. Luke Skywalker is missing?! What?! Why?! How?! I’m hooked!&lt;/p&gt;
&lt;h3&gt;Finn&lt;/h3&gt;
&lt;p&gt;Finn will prove to be a really interesting character. I suspect that given his conditioning throughout his entire life may come back to haunt him, and ideally will give him some character growth through the series. He’s definitely poised to be the new “roguish charm” character of the series, with a scuffed up jacket to boot.&lt;/p&gt;
&lt;h3&gt;Humor&lt;/h3&gt;
&lt;p&gt;The humor in Star Wars may be missed by some of the younglings (“Are you talking first? Or am I? Who’s supposed to talk first?”) there was plenty of humor mixed into this movie that everybody will enjoy without going over the top to be “Jar Jar-ish” The BB-8 “thumbs up” is my all time favorite. I need an animated gif of that pronto!&lt;/p&gt;
&lt;h3&gt;Han Solo’s Death&lt;/h3&gt;
&lt;p&gt;A friend I know had predicted this one before the movie came out, and you had a pretty good hunch what was going to happen when he stepped out onto that bridge to confront Kylo Ren. It seemed oddly fitting in a way. Solo had come full circle to deal with (and face) what had happened to his son instead of running away. Even after a second viewing, there was that moment where you could see the tension in Kylo’s eyes as he’s handing Solo his lightsaber, and you yearn for that handoff. But then the light from the sun fades and it seems to have darkened Kylo’s demeanor. Mere seconds could have swayed things differently. You could see the compassion in his eyes, despite his gruffy demeanor, and I hope that last look and brush of his face haunts Ben back to the light side. On a more “practical” level, Solo’s death helps pass the torch on to the new generation.&lt;/p&gt;
&lt;h3&gt;Kylo Ren&lt;/h3&gt;
&lt;p&gt;He seems to have inherited the “whiny” nature of his uncle (and grandfather’s) youth. To some degree I think this was Snoke’s intention, to grab him early before he has matured to let his unruly nature (and flare-up of emotion) keep him immersed in the dark side. We also know that Kylo hasn’t completed his training yet, so maybe in the next installment we’ll see the “formidably evil” opponent we’ve come to associate with the dark side.&lt;/p&gt;
&lt;h3&gt;Lightsabers&lt;/h3&gt;
&lt;p&gt;For all the grief that went around when we first saw Kylo Ren’s lightsaber (with the two horizontal blades sticking out) it appears that it does serve some legitimate purpose, being able to get a jab into Finn’s shoulder when their blades were locked. I was hoping there would be some more “epic lightsaber duels” along the lines of Obi-Wan and Darth Maul, and I really haven’t seen one since. It also seemed odd that two complete newcomers to the saber (Finn and Rey) were able to hold their own against Kylo. But you have to figure that a bowcaster to the side, no matter how strong you are in the force, is going to knock you down quite a bit. Here’s hoping we get some amazing “saber play” later on.&lt;/p&gt;
&lt;p&gt;Did you notice the difference in saber “character” Luke’s saber had a pure blue energy to it and Kylo&apos;s seemed to “burn” or “flame” with raw energy. Is this saber technology 2.0 that causes this difference or maybe it’s a more subtle inflection of the characters of the force.&lt;/p&gt;
&lt;p&gt;Sidenote: You may be wondering how a Storm Trooper could be fending off a lightsaber during that fight with Finn. I suspect that the Storm Trooper was equipped with a Vibroblade, which has some special engineering in it to prevent a lightsaber from cutting through it. It was quite handy in the exapnded universe.&lt;/p&gt;
&lt;h3&gt;Rey&lt;/h3&gt;
&lt;p&gt;What a wonderful and powerful heroine they have introduced into this series! Daily Ridley does such an amazing job with her character and you can feel the power and independence she has in herself. While Princess Leia was a strong character in her own right, she didn’t get center screen to the trilogy like I believe Rey is going to have in this trilogy. I suspect once the next movies come out I’ll be getting the “Rey” lightsabers for my girls 8^D&lt;/p&gt;
&lt;h3&gt;Personal Theory&lt;/h3&gt;
&lt;p&gt;Rey is Luke’s daughter. When she first touched Luke’s saber and had such a vivid flashback, my mind was set. Generally speaking, you don’t have that powerful of a force intuition when touching an object unless there is some direct lineage going on, or a very strong and close friend to said person. I suspect that when things went sour at the Academy, he whisked Rey away to keep her safe. Which also leads to...&lt;/p&gt;
&lt;h3&gt;Luke Skywalker&lt;/h3&gt;
&lt;p&gt;For a person that had NO spoken lines in the entire movie, the two minutes or so of screen time he had was so powerful. Do you see the look in his eyes. They shift from disbelief (I can’t believe you’re here - though guised under that Jedi “sageness”) to surprise (you’re giving me my lightsaber back) to agony (my precious daughter, YOU are here and you don’t know what you’re asking me do to by handing this back to me). I suspect we’ll get a good quarter to a third of the next movie with Luke in it, to help flesh this out further. I suspect our story will be very emotional.&lt;/p&gt;
&lt;h3&gt;The Handoff&lt;/h3&gt;
&lt;p&gt;It was exciting to hear that our main trilogy characters would be in the next “saga” of the movies. In a way, I’m rather excited to see them exit the picture. The acting and story that we are seeing in the next triology is so well done that Luke/Leia/Han (RIP) doesn’t need to really carry things forward. This is about a new generation continuing the saga and they will do so brilliantly. I suspect we won’t see Leia in the next movie (or maybe briefly) and Luke will need to give us some good back story (and hopefully Jedi training) and then we will move forward.&lt;/p&gt;
&lt;h3&gt;Why Not 10 out of 10?&lt;/h3&gt;
&lt;p&gt;Simply put, this wasn’t a “profound” movie that I would give full points to. It wasn’t supposed to be either. This was just the beginning of the bigger story, and it starts out marvelously. Some people have criticized the fact that this story borrows too much from the original “A New Hope”. I agree that the pacing is nearly identical, but having this level of familiarity while introducing new things (We don’t have the Empire, we have the First Order, we don’t have the Sith, we have the Knights of Ren) gives us a lot of room in which to explore moving forward. The lineage of Kylo Ren and the death of Han Solo weren’t as dramatic as the imfamous “&lt;strong&gt;I&lt;/strong&gt; am your father”, but we still get some good drama out of it.&lt;/p&gt;
&lt;h3&gt;How About You?&lt;/h3&gt;
&lt;p&gt;What are your thoughts about “The Force Awakens”? Are you going to see it multiple times in the theatre? Like it, love it, hate it? I’d love to hear it! May the Force be with you!!!&lt;/p&gt;
</content:encoded></item><item><title>Where Were You When You First Saw Star Wars</title><link>https://dillieo.me/posts/growth/2015-12-17-where-were-you-when-you-first-saw-star-wars/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-12-17-where-were-you-when-you-first-saw-star-wars/</guid><description>star_wars_force_awakens</description><pubDate>Thu, 17 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The original Star Wars trilogy started with “A New Hope” back in 1977. The story goes that my mom and dad saw it at the drive in a year later when I was 3 weeks old. I suspect that the force was strong with me, since I remember nothing of my first viewing, but something got me hooked early on.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;From there, the countless hours of lightsabers, Darth Vader, X-Wings and more as a kid made some strong bonds with friends that last until this day. I never did see any of the originals in the theatres, but I’m pretty sure I saw it every time it was on TV and I remember the day I bought my first copy of the trilogy on VHS (look it up kids). This was the “restored” one, not the updated one where Han shoots second (though that comes later 8^D).&lt;/p&gt;
&lt;p&gt;Oh, did I mention how I actually took out the Death Star using nothing by my will power, a simple two button joystick, crazy piloting skills, more hours than I can recollect, and mastery of keyboard macros to pilot my ship. Technically I would have died in the subsequent explosion, because my engines had gone out as I was pulling away from the exhaust port, but I like to think that I drifted far enough away for a ship to come rescue me. 8^D&lt;/p&gt;
&lt;p&gt;When the prequel trilogy started, it was 1999. I was well on my way into college and most of those friends from the early days were still in the area. So it wasn’t a question of IF we were going to see Star Wars, but when. That when would be 3 times opening night (midnight, 4PM, 7PM). It would also mean doing an epic camp out the week before just to buy the tickets to see the movie three times opening night. This was before “camping out” for movies was a cool thing to do (I suspect we Star Wars fans could have pioneered it). It was also before camping out got too extreme (in my opinion). The night of new friends, volleyball using toilet paper and two palm trees, battery operated blenders, and the never ending chain of extension cords and multi-prongs still comes fresh upon recollection.&lt;/p&gt;
&lt;p&gt;Then there was opening night itself! Having dressed for the occasion (with tons of others) it turned into this crazy family reunion of sorts. I remember walking around, cheering with other people, having my picture taken with a kid or two (Darth Vader is always the coolest), and cooking some form of food on a disposable hibachi grill behind the movie theatre building (since that’s where this particular line was wrapping). It makes for great “war stories”. I was king of the world because a special woman (who would later become my wife) made the trek down for one of the showings as well.&lt;img src=&quot;@assets/images/posts/2015-12-star_wars_me_zach.jpg&quot; alt=&quot;star_wars_me_zach&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-12-star_wars_me_jen_old.jpg&quot; alt=&quot;star_wars_me_jen_old&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What are your Star Wars stories and memories? Where were you when first saw the movies? Keep the legacy alive and share!&lt;img src=&quot;@assets/images/posts/2015-12-img_1468.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>2015 Blogging In Review</title><link>https://dillieo.me/posts/development/2015-12-15-2015-blogging-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-12-15-2015-blogging-in-review/</guid><description>2015 Blogging In Review</description><pubDate>Tue, 15 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I realize it could be a bit premature since there are a couple of weeks left in the year, but now is as good a time as any in the month to see how this year went...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;The Biggest Year Yet&lt;/h3&gt;
&lt;p&gt;This was a BIG blogging year for me. Having been a part of the &lt;a href=&quot;http://desk.pm&quot;&gt;DeskPM&lt;/a&gt; team through the beta and into the big community forum launch, I took up the challenge to &lt;a href=&quot;/new-year-new-me-sorta&quot;&gt;better my blog in 10 days&lt;/a&gt;. It was a great opportunity to put a bit more focus and direction to my blog. The biggest step was a commitment to blog twice a week for the entire year. The best part is that I DID IT!!! Technically there was one crazy week where I didn’t blog, but with some of the other weeks where I blogged extra, it all comes up to a nice twice a week blog post.&lt;/p&gt;
&lt;p&gt;While I always seem to have something brewing in my head, taking the time and energy to sit down and &quot;just write&quot; (&lt;a href=&quot;http://john.do/today/&quot;&gt;as John Saddington has encouraged&lt;/a&gt;) can often be the most daunting. But when you take away distractions, take away worry about what I’m going to say, or how I’m going to say it, the writing comes and it’s quite freeing. If you’ve never started a blog, I’d encourage you to do so. It’s not about fame or fortune. For me, it’s about &lt;a href=&quot;/why-i-blog&quot;&gt;sharing the love, and doing some introspection&lt;/a&gt;. Maybe it’s something different for you, but the writing process is a good one. I highly encourage it.&lt;/p&gt;
&lt;h3&gt;Top Posts for 2015&lt;/h3&gt;
&lt;p&gt;That said, a bit of numbers never hurt, especially for a type-A organizational/data junkie like me. Intersetingly enough my most popular posts are all several years old now (maybe due to the bots or something). So I did some digging and here are my top 5 posts from just this year:&lt;/p&gt;
&lt;p&gt;1 - &lt;a href=&quot;/fixing-video-display-issues-with-vmware-fusion-and-windows-10&quot;&gt;Fixing Video Display Issues with VMWare Fusion and Windows 10&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With the Windows 10 release this past year, and quite a few folks like myself doing development thanks to VMWare Fusion, this one actually cracked my top 5 overall. It turns out that the solution became a simple reinstall type solution, but sometimes the hardest problems seem to have the simplest solutions.&lt;/p&gt;
&lt;p&gt;2 - &lt;a href=&quot;/laravel-5-configurations-in-aws-elastic-beanstalk&quot;&gt;Laravel 5 Configurations in AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Part of why I blog is to dogfood my own code and make notes for later. Having started a huge project this past year that was built on Laravel and Amazon Web Services, this proved to be an elegant solution since it played nice with source control and automated deployments. I’m sure I’ll be using this one again.&lt;/p&gt;
&lt;p&gt;3 - &lt;a href=&quot;/how-to-add-foundation-icons-to-zurb-foundation-for-applications&quot;&gt;How to Add Foundation Icons to Zurb Foundation for Applications&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another “dog fooding” for my &lt;a href=&quot;http://prayerjournal.apphb.com&quot;&gt;Prayer Journal&lt;/a&gt; side project. I really love the AngularJS based &lt;a href=&quot;http://foundation.zurb.com/apps.html&quot;&gt;Zurb Foundation for Applications&lt;/a&gt; that was released this year and managed to build a scaffold for it. Additionally, I added the Zurb Icon library since the library that was included by default was too limited.&lt;/p&gt;
&lt;p&gt;4 - &lt;a href=&quot;/unboxing-and-initial-review-acurite-2032crm-pro-weather-station&quot;&gt;Unboxing and Initial Review - AcuRite 2032CRM Pro Weather Station&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This was a fun one! I’ve always been a bit of a weather junkie and this year thanks to some birthday money I finally was able to get a really snazzy one! Once I get a Raspberry Pi I’ll be able to track the data online and not just in my home!&lt;/p&gt;
&lt;p&gt;5 - &lt;a href=&quot;/how-to-debug-laravel-apps-in-phpstorm&quot;&gt;How to Debug Laravel Apps in PHPStorm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another Laravel post for the year, and debugging it was always a bit tricky. Now I have something to reference when I get it setup on my new computer.&lt;/p&gt;
&lt;h3&gt;In Retrospect&lt;/h3&gt;
&lt;p&gt;In 2015 I nearly quadrupled the posts I had compared to 2014. However, the traffic only went up by about 12%. One of the common “blogging tips” is to provide more consistency in order to increase traffic. It’s hard to see if the consistency is increasing the traffic, but I don’t care too much about that. I’d like to see a few more “pensive” blog posts climb in the ranks, to balance things out a bit more. I’ll admit I think I need to be a little more open with myself for those kinds of posts, and that is probably another journey.&lt;/p&gt;
&lt;h3&gt;What’s Next?&lt;/h3&gt;
&lt;p&gt;Next year I plan on keeping the same pace as I did last year. I’ve even debated about going to three times a week. I could do a “freeform friday” type post where I can really embrace “just write” and do anything. Maybe an interesting news article I read, a silly meme, just some things off the top of my head. Who knows. We’ll see what the future holds!&lt;/p&gt;
</content:encoded></item><item><title>Coding Snow</title><link>https://dillieo.me/posts/development/2015-12-10-coding-snow/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-12-10-coding-snow/</guid><description>terminal_snow</description><pubDate>Thu, 10 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I take absolutely no credit for this one. I just happened to be at the right place at the right time online...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Looking to add a bit of festiveness to your OSX terminal this winter? As long as you have ruby installed (&lt;a href=&quot;/new-tool-for-rebuilding-your-dev-environment&quot;&gt;Superlumic&lt;/a&gt; is a nice way to make this happen), simply drop this command into your terminal and enjoy!&lt;/p&gt;
&lt;p&gt;http://gist.github.com/12799a732f84febf5f0d&lt;/p&gt;
&lt;p&gt;Need a PowerShell script? I haven&apos;t tested it yet, but &lt;a href=&quot;https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Snow-63c631ae&quot;&gt;this one&lt;/a&gt; looks promising.&lt;/p&gt;
&lt;p&gt;Merry Christmas!!!&lt;/p&gt;
</content:encoded></item><item><title>Life Legos And Letting Go</title><link>https://dillieo.me/posts/development/2015-12-08-life-legos-and-letting-go/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-12-08-life-legos-and-letting-go/</guid><description>lego_7722</description><pubDate>Tue, 08 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was about 10, I received a Christmas gift that would last until this day, a lego train set! This set had a working engine, 3 cars, a small loading station, and a WHOLE heap of fun. I slowly collected the various cars, stations, extra track, and I think everything in the collection. I kept this set in pristine collection and loved pulling it out every year and setup a new track around the Christmas tree. Fast forward 25 years and now my kids have learned about daddy’s collection...&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I first pulled out the train set again two or three years ago. My girls, lego fiends that they are, loved this thing. It took some direction about how to setup the track, but they had their own plans for everything. Within no time, my prized collection looked something like this:&lt;img src=&quot;@assets/images/posts/2015-12-lego_pile.jpg&quot; alt=&quot;lego_pile&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I’m a pretty type A kind of guy, so seeing all this hard work (and treasured pieces) from my childhood get dismantled and reconstructed &lt;em&gt;[gasp - incorrectly too!]&lt;/em&gt; was a bit hard to take. However, I played the “good daddy” role and let things pan out as they did. We boxed everything up after our time together, making sure all the set pieces stayed together and not get mixed into the “big bin”, and went on.&lt;/p&gt;
&lt;p&gt;Somewhere between then and now we saw Toy Story 3 AND Lego Movie. Yeah, I know, a story about toys is bound to land somewhere in here. More importantly though, I realized the importance of having fun and the legacy of being able to pass this down to my kids. Sure it may not be as “pristine” as I had originally wanted it, but man, you should see how the eyes light up as the set comes out and they dream up big ideas about what tracks are going where and which buildings to setup. In that moment it all becomes worth it, no matter what state the train set is in.&lt;/p&gt;
&lt;p&gt;This year, we pulled out the train again. The girls immediately started going to town on things. We have a new tree, and a little more space to afford to put around it, so they got their creative juices flowing...&lt;img src=&quot;@assets/images/posts/2015-12-20151207_033457002_ios.jpg&quot; alt=&quot;20151207_033457002_iOS&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can see this year they pulled out Grandpa Harry’s old Christmas Village set (well, part of it) to make things more festive. They even built their first tunnel this year out of a cardboard box (over on the right). They woke up the other morning, had breakfast, and immediately ran over to the train set afterwards to play with it. Our engine is showing some wear and tear (and noise) with age, so currently we can only fit three cars on it, but I’m starting to look for a new one. We intended for some presents to fit down there, but it looks like Santa will have to get creative and look somewhere else to place things 8^D.&lt;/p&gt;
&lt;p&gt;Sure it may seem a little “bare” (the train station and cargo holds need to be rebuild and we don’t have room this year) but this is &lt;em&gt;&lt;strong&gt;their&lt;/strong&gt;&lt;/em&gt; own configuration and we got to work on it &lt;em&gt;&lt;strong&gt;together&lt;/strong&gt;&lt;/em&gt;, which means the world to me. Next year we can figure out how to make things even bigger and as long as we keep the pieces and parts in their own tub (that has the original directions too), the type A personality inside of me stays content. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Lets Start The Advent Music</title><link>https://dillieo.me/posts/development/2015-12-01-lets-start-the-advent-music/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-12-01-lets-start-the-advent-music/</guid><description>Lets Start The Advent Music</description><pubDate>Tue, 01 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;No matter what day you mark it (day after Thanksgiving, Advent Sunday, December 1st), it’s time to pull out the Christmas music and start the advent celebration! I have an assortment of items to get you started!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;img src=&quot;@assets/images/posts/2014-11-christmaslounge.jpg&quot; alt=&quot;ChristmasLounge.jpg&quot; /&gt;For starters, let’s get to the streaming radio! Look no further than &lt;a href=&quot;http://somafm.com/christmas/&quot;&gt;SOMA.fm’s Christmas Lounge&lt;/a&gt; (previously known as the Santa Lounge). It contains “chilled holiday grooves and classic winter lounge tracks” and is safe for the office and for home. They surprise me with some new tracks every year.&lt;/p&gt;
&lt;p&gt;When I’m not streaming, I’ve thrown together a playlist of all time favorites that I’ve affectionately called my “Phat Chunk ‘O Christmas”. It covers everything from the classic Charlie Brown Christmas to the eclectic Nitro Praise Christmas collection. You can give it a listen below.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/6iapIFkfx2L1RVJ4eXUQRL&lt;/p&gt;
&lt;p&gt;The only thing better than my own playlist is one that was put together by friends and family! Last year I used the power of the interwebz and told all my friends and family to submit their favorite album to add to the list. The result the fabulous “Friendly Chunk O Music” set and I discovered a whole slew of Christmas music I never heard before. Give it a listen below.&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/user/dillie-o/playlist/4sTdb9paGcm6GSZFoYiSj4&lt;/p&gt;
&lt;p&gt;I enjoyed this so much that I’m starting my SECOND “Friendly Chunk O Christmas” set. Give a listen below and contribute an album to it, or add it in the comments (if you’re not a Spotify user) and I’ll make sure to add it.&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/user/dillie-o/playlist/6P8DWFY9raDRvFxyPqcYlP&lt;/p&gt;
&lt;p&gt;Finally, if you just need a nice distilled list of my all time favorites, check out my “Essential Christmas Mix” and enjoy the advent season.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/2bJa1XC3Oy2EVLLiHPyOoT&lt;/p&gt;
&lt;p&gt;Have any Christmas favorite albums? Let me know in the comments and I’ll try to add them to the friendly mix.&lt;/p&gt;
&lt;p&gt;Merry Christmas! Enjoy the Advent season!!!&lt;/p&gt;
</content:encoded></item><item><title>A Hayao Miyazaki Primer Two Alternative Lists</title><link>https://dillieo.me/posts/growth/2015-11-30-a-hayao-miyazaki-primer-two-alternative-lists/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-11-30-a-hayao-miyazaki-primer-two-alternative-lists/</guid><description>Ponyo</description><pubDate>Mon, 30 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A week or so ago, I wrote my own little &lt;a href=&quot;/a-hayao-miyazaki-primer&quot;&gt;Hayao Miyazaki&lt;/a&gt; Primer as a means to help newcomers get introduced to the world of Miyazaki&apos;s film. &lt;a href=&quot;https://twitter.com/biotrom&quot;&gt;Tim Motte&lt;/a&gt; commented on my list...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Great list and well thought out. Really gives a wide range of Miyazaki styles and... shall we say intensity levels? Spirited Away really is amazing, but it&apos;s WEIRD. And Totoro is great, but coming after Spirited Away its slowness might be something of a shock.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;He proposed two alternative lists, which I really really liked and had to share here (partially for my own dog fooding and partially because it was worth sharing).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Tim&apos;s lists provide two routes: one to ease you into it, and one to jump in the deep end. Here are his lists and comments regarding them.&lt;/p&gt;
&lt;h3&gt;The &quot;Ease In&quot; List&lt;/h3&gt;
&lt;p&gt;If you want to start with movies that are more accessible to Western viewers, then try this.&lt;/p&gt;
&lt;p&gt;**The Wind Rises **- It&apos;s got more realism than many of the others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kiki&apos;s Delivery Service&lt;/strong&gt; - Low-stress plotline, but mixes fantastical elements into a normalish setting. And it&apos;s super adorable.&lt;/p&gt;
&lt;p&gt;**My Neighbor Totoro **- After Kiki&apos;s Delivery Service, Totoro lowers the intensity even more. Pretty much nothing happens. Safe for toddlers but artistic enough for parents.&lt;/p&gt;
&lt;p&gt;**Ponyo **- Now that you&apos;ve got a feel for Miyazaki&apos;s world, let&apos;s introduce more of the strangeness but keep the cuteness. This is a loose retelling of The Little Mermaid.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Castle in the Sky&lt;/strong&gt; - This is a good transition between the light material and the heavy material.&lt;/p&gt;
&lt;h3&gt;The &quot;Strange and New&quot; List&lt;/h3&gt;
&lt;p&gt;If you are up for just seeing something strange and new. Then this list might work better.&lt;/p&gt;
&lt;p&gt;**Spirited Away **- Sean&apos;s right about this being a good first viewing. It&apos;s pretty thoughtful and profound, but you have to get used to the weirdness and decode it a bit. All of the beauty and story elements that Sean mentioned make it very attractive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Princess Mononoke&lt;/strong&gt; - This was my first Miyazaki film. It absolutely floored me. Such a beautiful and compelling world.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nausicaä of the Valley of the Wind&lt;/strong&gt; - It&apos;s got a lot of the same majestic world-building elements that Mononoke and Spirited have, but it feels a little less accessible to me. And perhaps a little more of a sci-fi feel mixed in with the fantasy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ponyo&lt;/strong&gt; - This is just a great film and needs to be on both my lists.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Porco Rosso&lt;/strong&gt; - Really strange and light hearted. Doesn&apos;t answer all your questions. Features airplanes. Tries to be Italian.&lt;/p&gt;
&lt;p&gt;If you take one of these lists for a spin, let me know what you think. Thanks again &lt;a href=&quot;https://twitter.com/biotrom&quot;&gt;Tim&lt;/a&gt; for letting me re-publish this!&lt;/p&gt;
</content:encoded></item><item><title>My Post Thanksgiving Rant</title><link>https://dillieo.me/posts/growth/2015-11-27-my-post-thanksgiving-rant/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-11-27-my-post-thanksgiving-rant/</guid><description>My Post Thanksgiving Rant</description><pubDate>Fri, 27 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ugh… I remember walking into a Walmart BEFORE HALLOWEEN and seeing Christmas trees up and decorations scattered throughout the store. It seems to happen earlier and earlier every year. I suspect soon we’ll mark the first day of school as the day you put your Christmas decorations up or something.&lt;/p&gt;
&lt;p&gt;Don’t get me wrong, Christmas, and the entire advent weeks leading up to the day we celebrate Christ’s birth, is my favorite time for more. I affectionately say that Christmas lights are like Jell-O… there’s always room for more. I have two solid playlists now that will run for weeks during this season to keep my spirits high and my mind contemplative.&lt;/p&gt;
&lt;p&gt;But let’s give Thanksgiving it’s due. It’s a time to take a step back, reflect on the abundance of blessings we have, both large and small. Enjoy your family, enjoy some food, and let it linger beyond that single day into a small “season” of it’s own until December. That’s all. Thanks for listening.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Thanksgiving Thought</title><link>https://dillieo.me/posts/growth/2015-11-26-thanksgiving-thought/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-11-26-thanksgiving-thought/</guid><description>ThanksgivingTable.jpg</description><pubDate>Thu, 26 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;We are blessed in so many ways; many things we take for granted but we should stop and be thankful each and every day.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;~ Catherine Pulsifer&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2015</title><link>https://dillieo.me/posts/life/2015-11-20-thankful-tree-2015/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2015-11-20-thankful-tree-2015/</guid><description>Thankful Tree 2015</description><pubDate>Fri, 20 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With Thanksgiving arriving next week, we have a tradition where we write things on leaves and add them to a “thankful tree” in the house. Here are three things that are going up on my tree this year.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Time Off&lt;/h3&gt;
&lt;p&gt;It’s been a rather crazy year with work, working on two major projects simultaneously. Most of my time off the last couple of years has been consumed by travelling to doctors appointments, but not this year! Being able to spend the time either travelling for our big family vacation to Texas or taking a day off to simply see a movie and play board games has been doubly important for me this year.&lt;/p&gt;
&lt;h3&gt;My Kids&lt;/h3&gt;
&lt;p&gt;My kids teach me so much about myself and give me a small glimpse at how God loves me (despite all of my failures 8^D). This year they really seem to be coming into their own and it’s a beautiful thing to see. They still give me plenty of excuses to goof around and have fun. I’m proud at the young girls they are becoming and excited to see what their future holds. I&apos;m humbled that I have the opportunity to guide them along the way.&lt;/p&gt;
&lt;h3&gt;Weather Station&lt;/h3&gt;
&lt;p&gt;I’ve been &lt;em&gt;itching&lt;/em&gt; for &lt;a href=&quot;/unboxing-and-initial-review-acurite-2032crm-pro-weather-station&quot;&gt;one of these&lt;/a&gt; for years now and finally was able to get one for my birthday. It’s fun to track the weather daily to see patterns and give my kids a little bit of science along the way. It’s a great conversation starter and if I can get a Raspberry Pi setup, I’ll have my own little “dot” on the weather underground site to track my weather from anywhere. Sometimes it’s nice to be thankful for the “not so profound” things.&lt;/p&gt;
&lt;p&gt;What about you? What are you thankful for this year?&lt;/p&gt;
</content:encoded></item><item><title>A Hayao Miyazaki Primer</title><link>https://dillieo.me/posts/growth/2015-11-18-a-hayao-miyazaki-primer/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-11-18-a-hayao-miyazaki-primer/</guid><description>A Hayao Miyazaki Primer</description><pubDate>Wed, 18 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently found out that Amazon is releasing a special “&lt;a href=&quot;http://www.amazon.com/Collected-Miyazaki-Amazon-Exclusive-Blu-ray/dp/B0117V8BX8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1447853363&amp;amp;sr=8-1&amp;amp;keywords=Hayao+Miyazaki&quot;&gt;collected works&lt;/a&gt;” of most of Hayao Miyazaki’s movies (2020 Update: You can see them on &lt;a href=&quot;https://www.engadget.com/2019-10-17-hbo-max-studio-ghibli-streaming-deal.html?guccounter=1&amp;amp;guce_referrer=aHR0cHM6Ly93d3cuYmluZy5jb20vc2VhcmNoP2Zvcm09TU9aTEJSJnBjPU1PWkkmcT1oYm8rbWF4K3N0dWRpbytnaGlibGk&amp;amp;guce_referrer_sig=AQAAAEZHv00SOdpqXmI22LHgug4h05mWMovtm5Laal9VgQTx6dnUIha9m3pqrcaOxZdzn9OoflXZ-LZyiupRKEldBqQlHnrSlm8KrL-gYTWYJVwWfHaXEy3V9SAzApN-RNMryu3FNAFD-c_f0j9wNLo3dVUBxroQapXH3UyP8DDBc8dN&quot;&gt;HBO Max&lt;/a&gt; now too!). I also realized that with the large volume of movies out there, you may not know where to begin when watching them. While there really isn’t a “wrong order” to watching them, here are the first five I would recommend seeing and the order in which to do them.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Why Miyazaki?&lt;/h3&gt;
&lt;p&gt;Miyazaki’s films were the first foray I took into the world of anime. I think I was first caught by the sheer beauty of the animation in the films. The way in which clouds float through the sky or wind brustles along the grass evokes this amazing sense of awe as you move from scene to scene. The stories he tell are fabulous as well. They range through all sorts of genres and characters, but each one has a magic of its own. He has strong female characters. There are princesses that are working and fighting alongside their people, not just cooped away in a castle. There are girls who learn about bravery and who find their own value in their actions and growth, not through others. They provide great examples and talks with my daughters.&lt;/p&gt;
&lt;p&gt;Overall there is amazing balance of strangeness and beauty I get when watching his films. They are strange to me because the storyline drives at a different pace than most American films I see. The movie will often find it’s climax, and then abruptly end, and you are left wanting to know more about the characters and what happens next. Sometimes you get a few glimpses during the credits, but often not. There are lots of Japanese folklore and cultural references that I’m unaware of, and at times can make you wonder “why are they doing or saying that?” But all of this is packaged in a wonderful story, with beautiful scenery and animation. It leaves me eager to get the next movie and to rewatch the same ones over and over again. What is really amazing to think about too is that most of the movies listed below were made in the 80s. It just goes to show you that great stories don’t need fancy computer graphics. 8^D&lt;/p&gt;
&lt;p&gt;With that said, here’s what I would recommend as a “watching order” if you are new to Miyazaki’s films...&lt;/p&gt;
&lt;h3&gt;Spirited Away&lt;/h3&gt;
&lt;p&gt;This was the first Miyazaki film I ever saw. I think for a lot of people it was their first as well, since it won an Academy award for best animated film back in 2001. This is the story of a girl named Chihiro who is moving to the suburbs with her parents and a little scared about it all. They make a wrong turn and come across a seemingly vacant town, but it turns to life with ghosts, spirits, and a talking frog at night. Chihiro’s parents have vanished and now she is stuck here, not sure of what to do or how to get back to her parents. The journey she takes is full of wonder and personal growth and she works through it all.&lt;/p&gt;
&lt;p&gt;I still remember the night my wife and I watched this film on the couch with a friend who was introducing us to all of this. All things that I love about these films immediately became apparent and we were immediately seeking out to get anything else he had made.&lt;/p&gt;
&lt;h3&gt;My Neighbor Totoro&lt;img src=&quot;@assets/images/posts/2015-11-my-neighbor-totoro-full_-34268.jpg&quot; alt=&quot;&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;Admittedly this movie isn’t necessarily as profound as most of his other films, but it is still my favorite. Two girls move out to the countryside with their father so that they can be closer to their mother, who has been in the hospital for a while. They have moved next to a ancient tree, and in there lives a giant troll, or a “totoro” (in Japanese). The daughters befriend the totoros and have some magical adventures together.&lt;/p&gt;
&lt;p&gt;In a lot of ways I like the simplicity of this movie involved. There isn’t a lot of complex plotlines, and the tototro is just a cute looking thing. I admire the bond that the daughters share, despite their age, and also enjoy the “big sister / little sister” growth that they are sharing together. Their mother’s illness isn’t focused on a lot in the movie, but there are plenty of scenes where you get the feeling that it is still very real in their lives. This was the first movie my girls saw, and watched again, and several more times that first week. 8^D&lt;/p&gt;
&lt;h3&gt;Castle in the Sky&lt;img src=&quot;@assets/images/posts/2015-11-laputa.jpg&quot; alt=&quot;laputa.png&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;In a world full of flying machines (a gorgeous visual display in itself), a simple boy with big dreams named Pazu is whisked into a world of conflict and ambition when a mysterious girl floats down to here one day. While she isn’t sure herself of who she is, it is rumored that she is the last descendent of a people from Laputa, so advanced that they had a full land living in the clouds. Pazu remembers his late father saying he once saw a “castle in the sky” though nobody believed him. He sets out to protect her from both the military and secret organizations and see if this castle really exists.&lt;/p&gt;
&lt;p&gt;This movie is my wife’s favorite. Again isn’t hard not to get lost in the beauty of the animation. This film has a bit of a “steampunk” like look to it, with the airships powered by coal/steam and not fancy jet engines. It also provides some good insights and discussion about how far technology can go to help (or ruin) us.&lt;/p&gt;
&lt;h3&gt;Nausicaä of the Valley of the Wind&lt;img src=&quot;@assets/images/posts/2015-11-nausicaa-wall.jpg&quot; alt=&quot;&quot; title=&quot;Nausicaa and the Ohm&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;Most people consider this Miyazaki’s masterpiece. Humans have been pushed to the outskirts of the world as a result of a huge war and a “poison jungle” that continues to spread through the land. A mere spore from one of the poisonous plants can ruin an entire crop, and it is fatal to humans. In addition to this, huge insects protect the jungle and those that try to destroy it. Amidst all this is Nausicaä, the Princess of the Valley of the Wind, who doesn’t fear the jungle or the insects, but instead treats them gently and investigates the origins and the nature of the jungle. However, another nation is attempting to resurrect one of the ancient warrior beasts to eliminate the jungles once and for all, which angers the insects even more and leads to a conflict that could eliminate everybody.&lt;/p&gt;
&lt;p&gt;It’s hard to figure out where to begin on what I like about this movie. I think the best way to describe things is having seen all of the previous movies and distilling all of the best aspects of each one is packaged in Nausicaä. I recently watched this again and found new depths to the relationship of the jungle and the humans that had slipped my perception before. The emotions are intense, especially at the end. I won’t tell you how it ends.&lt;/p&gt;
&lt;h3&gt;Princess Mononoke&lt;img src=&quot;@assets/images/posts/2015-11-princess-mononoke.jpg&quot; alt=&quot;&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;This is the darkest of the movies that Miyazaki has created. I save it for the last I think to help provide a deeper connection with the topics in the movie, that you might not see if you’re new to anime in general and especially to Miyazaki’s works. This movie follows at young warrior, Ashitaka, with a curse on a journey to seek a cure. During his travel, he is caught up between the struggle of a mining colony and the spirits that guard the forest. Some of the spirits take the form of wolves and a human girl, San, rides one of them, though she resents humanity. The fight between the people and the spirits will bring Ashitaka and San together, but resolving this conflict is nothing simple.&lt;/p&gt;
&lt;p&gt;With a deep investment into Miyazaki’s storytelling, it’s rather intense watching this movie. There isn’t any overt blood or anything like that, but rather you’re drawn in to the conflict early on and you struggle, on both sides, to find the resolution so a conflict that nodoby is really wining, though they seem like they are. This is the only film my kids (who are currently 9) have not seen yet, and we might wait a little longer before they do. It is a wonderful movie, but contains more mature themes that the other movies don’t have.&lt;/p&gt;
&lt;h3&gt;What’s Next?!&lt;/h3&gt;
&lt;p&gt;If you’ve seen all five of these movies, I think you have an amazing overview at the beauty, depth, and brilliance that Hayao Miyazaki brings to his films. You can find a full list of his films &lt;a href=&quot;https://en.wikipedia.org/wiki/Hayao_Miyazaki#Filmography&quot;&gt;here&lt;/a&gt;. While the five listed up here could be considered his “best” movies, I don’t believe any of his films have been “bad” films and you will thoroughly enjoy all of them. I still have a few more to see! Let me know which ones are your favorites.&lt;/p&gt;
&lt;p&gt;Back in 2013, Miyazaki announced that he was retiring and a fan put together a lovely 8 bit tribute video a short time after. I’ll leave it here to give you a glimpse of the characters you’ll see in his movies. 8^D&lt;/p&gt;
&lt;p&gt;https://vimeo.com/104063954&lt;/p&gt;
&lt;h3&gt;2020: Added Bonus!&lt;/h3&gt;
&lt;p&gt;Thanks to places like Spotify, you can easily enjoy the gorgeous music that accompanies all of these wonderful movies: https://open.spotify.com/playlist/0UAK0lTLywZE8PZpQ87Tx9?si=Pk-GcjszTtGRDOjBGU8glw&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Dont Resize The Bootcamp Partition</title><link>https://dillieo.me/posts/development/2015-11-13-quick-tip-dont-resize-the-bootcamp-partition/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-11-13-quick-tip-dont-resize-the-bootcamp-partition/</guid><description>quick-tips.jpg</description><pubDate>Fri, 13 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you created that BootCamp partition and after a night of &quot;install-a-palooza&quot;, you&apos;ve run out of space. &lt;em&gt;[Zut alors!]&lt;/em&gt; There are several resources out there that indicate that you can use Disk Utility to open up some free space, then use a partition tool on the Windows side of things to consume that free space. However, there are several other resources, and a bit of personal experience, that indicate doing this may not allow your partitions to be properly identified when the process completes, causing the whole endeavor to fail. Similarly the space might not be visible (or accessible) to one (or both partitions).&lt;/p&gt;
&lt;p&gt;In the end, it&apos;s a bit of a pain, but worthwhile to simply flush the partition and start over to avoid the risk. With the speed at which modern computers are running (with SSD/Fusion Drives as well), this shouldn&apos;t take too long. Plus, with cool &lt;a href=&quot;/rebuilding-your-dev-environment-quick-and-easy-on-windows-with-boxstarter&quot;&gt;environment building tools&lt;/a&gt;, you can get everything up and running in no time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Old Songs With New Tones</title><link>https://dillieo.me/posts/growth/2015-11-11-old-songs-with-new-tones/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-11-11-old-songs-with-new-tones/</guid><description>Old Songs With New Tones</description><pubDate>Wed, 11 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Often times the best and wisest things that can be said aren’t particularly new, they simply provide a fresh voice to things we already know. A couple of amazing movies I’ve seen over the past few days have really driven this home.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Note: Spoilers Ahead&lt;/p&gt;
&lt;p&gt;Pixar’s latest movie, _Inside Out, _is a fun and beautifully crafted story. Somewhere a friend had posted a line that the movie showed “feelings with feelings”, just like how previous movies had “toys with feelings”, “monsters with feelings”, “cars with feelings” and so on. One of the big points (if not the main point) that the movie drives home is that our most impactful feelings and memories (our &quot;core memories&quot;) aren’t packaged into one single instance of joy, or sadness, or something else. They are complex: made up of multiple feelings at once. Sometimes these core memories start with one feeling, lead to another, and then come back or go somewhere else. It is very important that we recognize this and not try to shut out one feeling for another. The worst thing possible isn’t to have one feeling to excess (which admittedly can cause its own set of problems), but to shut down and avoid having any feelings at all.&lt;/p&gt;
&lt;p&gt;Did you see how Joy’s hair and patterns on her dress had the same color match as Sadness?! I didn’t really notice this until about three quarters of the way through the movie as the pair started working together more. I found it particularly interesting how during our first encounter with other “insides” we get so see mom and her “leader” is Sadness. But she wasn’t the mopey, unsure sadness that we see in Riley, but a wiser and mature emotion, who appears to have a better grasp on the big picture. It would be really intersting to start looking into these “feeling leaders” and see how these blends affect our life and perspective.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Peanuts Movie&lt;/em&gt; was a wonderful jaunt back into a world a lot of us grew up with, and still do thanks to the continued reruns of the comics. Having seen nearly every movie that had come out, it was great to see a lot of the classic “themes” or “stories” played out in the movies and comics. Charlie Brown still has issues with kites (and that kite eating tree). Snoopy has the best imagination out there. Lucy still loves her nickels. Linus is a good friend. Charlie Brown makes another go at it with the football. We get a nod to the original Christmas movie and a few other small things, like Snoopy’s extended family. For the most part I could figure out where each scene was going in the movie, and the eventual climax.&lt;/p&gt;
&lt;p&gt;In a lot of ways, I think that was the best part of the movie. Despite all of his goofs, blunders, and mishaps through the movie, “Good ‘ol Charlie Brown” is honest, and compassionate. He doesn’t give up and can be a little funny at times too. It is those things that ultimately we love about Charlie Brown and should seek to instill in our own lives.&lt;/p&gt;
&lt;p&gt;Ultimately we should know all of this already, and for kids, these are things they should start to learn and embrace early on. Having movies like this, which take advantage of new storytelling techniques (movies, CGI, etc) but still reflect upon old ideas and principles are a great way for “new comers” and “old farts” to come together and explore the same thing.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Insert Sequentially Random Data In Mysql</title><link>https://dillieo.me/posts/growth/2015-11-04-quick-tip-insert-sequentially-random-data-in-mysql/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-11-04-quick-tip-insert-sequentially-random-data-in-mysql/</guid><description>quick-tips.jpg</description><pubDate>Wed, 04 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I ran into this problem yesterday. In the process of flushing and reloading a lookup table in a MySQL database, I had accidentally flushed one of the join tables that it used as well since it had a cascading delete attached to it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I needed to reseed this table in two ways. The first was the job_id field, which was sequential for all the job records I had. The second was the category_id table, which at this point could be a random id from 1 to 6 for testing purposes. While I could have manually done this for a trivial amount of rows, I had 3000 rows to update and not a lot of time, so I needed a smarter solution.&lt;/p&gt;
&lt;p&gt;Thanks to some StackOverflow questions and a little tweaking, I was able to put together this little stored procedure that did the trick:&lt;/p&gt;
&lt;p&gt;[gist]50133cf07309d86872ee&lt;/p&gt;
&lt;p&gt;You can see that we use the v_counter as our incremental updater for our job_id column, which is why we start things at 1. Make sure to remove the stored procedure when done.&lt;/p&gt;
&lt;p&gt;Know a more elegant way? I&apos;d love to see it!&lt;/p&gt;
</content:encoded></item><item><title>Azure Tip Check Cross Project Connection Strings</title><link>https://dillieo.me/posts/development/2015-11-02-azure-tip-check-cross-project-connection-strings/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-11-02-azure-tip-check-cross-project-connection-strings/</guid><description>Azure Tip Check Cross Project Connection Strings</description><pubDate>Mon, 02 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR; - When using multiple project solutions, make sure you database context and configuration connection strings are named the same across all projects.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I spent a good 4 hours last week (probably more) going slightly mad trying to diagnose an odd Azure issue. I had setup a web app, setup a database, and all of the deployment / synchronization goodies that went with it. However, when I went to launch and work with the application, I was getting the dreaded “network” error indicating that the application couldn’t find the database specified. To make matters even more maddening, I was able to setup a firewall rule and connect to the database from my local machine without a hassle.&lt;/p&gt;
&lt;p&gt;I finally tracked the issue down. We had muliple projects in our solution, two of them being a typical MVC app and a data access layer (DAL) app to manage all the data interaction. The DAL app had it’s base context name set to “TechConnection” whereas the MVC application had a value named “DefaultConnection” in the web.config file. While this worked fine locally (not sure why just yet) the mismatch caused problems in the deployed Azure environment. A quick name change in the web.config file restored functionality (and my sanity).&lt;/p&gt;
&lt;p&gt;Say… can I get my $30 tech support subscription money back since I solved it first Microsoft? 8^D&lt;/p&gt;
</content:encoded></item><item><title>How Much To Know</title><link>https://dillieo.me/posts/growth/2015-10-30-how-much-to-know/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-10-30-how-much-to-know/</guid><description>How Much To Know</description><pubDate>Fri, 30 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;I hear babies crying, I watch them grow&lt;br /&gt;
They&apos;ll learn much more than I&apos;ll never know&lt;/p&gt;
&lt;p&gt;~ Louie Armstrong What a Wonderful World&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&apos;s a great line from a beautiful song and wonderful musician. However, that second line haunts me at times...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve always thought myself a rather “knowledgable” soul. I try to make it a point to learn something new, even if it is small, every day. To some degree I have to in order to stay on top of my job. Amidst all this are my kids, learning large number multiplcation and Mandarin far sooner than I did. I had to teach and train myself on the ins and outs of my computers, and my girls are flying through their tablets with ease. I was the kid in the house that had to teach my parents how to use the computer, and now I’m starting to wonder what things my kids are going to teach me how to use, since I’ll be completely ignorant on what it is or how it works!&lt;/p&gt;
&lt;p&gt;Then there will come a point in time where the things my kids are learning (and forgetting) will surpass my years of studying, learning and growing. It’s amazing that we can continue as a whole to probe and discuss and think and discover new ideas and understandings about how this universe was designed by God. It’s a bit saddening and haunting to a “learn moar everythingzzzz” kind of guy that I am that I won’t be the catalyst for it because quite I might not be able to comprehend it fully.&lt;/p&gt;
&lt;p&gt;So how much is enough? Is there a “core” that is sufficient to get us along in this life? A professor of mine gave us a saying early in college: Non sapere aude - Dare not to know. In one way this gives us the encouragement, nay the challenge, to be comfortable with the fact that you won’t know everything. In another way it challenges us to seek something deeper: wisdom.&lt;/p&gt;
</content:encoded></item><item><title>Crud And Cream</title><link>https://dillieo.me/posts/growth/2015-10-28-crud-and-cream/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-10-28-crud-and-cream/</guid><description>Crud And Cream</description><pubDate>Wed, 28 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My history teacher for my sophomore year in high school was also the football coach. While we had some rather non-conventional lessons and activities during that year, he made a statement in passing one day that still mulls around in the back of my mind:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can be the cream of the crud, or the crud of the cream. Make your choice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Being the “cream of the crud” is so nice. It provides a sense of accomplishment. It’s a bit of an ego booster too. There may be a fair amount, but not a whole lot of effort that goes into maintaining your place as the “cream&quot;. It’s a bit like the “big fish in a small pond” scenario. It also provides a wonderful opportunity to help and mentor others. They look up to you and you can share your knowledge with others. There’s respect that comes with that as well.&lt;/p&gt;
&lt;p&gt;But there are limits to this. You can only go so far being the cream on top of the crud that you can’t grow any higher. You may lull yourself into a point where you think you have everything. You don&apos;t even know what you don’t known in order to grow: technically, virtuously, socially, spiritually, anything.&lt;/p&gt;
&lt;p&gt;Being the “crud of the cream” is quite a different story. Everyday is humbling. Surrounded by those who are wiser, smarter, more mature than you, it can provoke feelings of envy, discontent, and even defeat at times. Every day feels like a sprint, to try to “catch up” to those around you, to become their peers, gain respect, and continue to grow. It seems like there is an inexhaustable amount of things to learn, cultivate, and transform in oneself.&lt;/p&gt;
&lt;p&gt;Most of my life I’d like to say I’ve been “crud”. I was part of a great books program where some insanely smart and insightful people discussed the great books and how to apply the authors concepts to our lives and the world. I was able to take engineering classes with people that would later on found their own companies and work in major companies helping redefine how chips are designed and made. Daily I try to read those that have the wisdom to bridge the gap between our spiritual forefathers and our spiritual contemporaries and cast a vision on how to influence our world for the better. I work with a team designers, developers, and programmers that can easily get gigs wherever they want and build amazing things daily.&lt;/p&gt;
&lt;p&gt;It’s all a bit humbling. No, it’s a REALLY humbling. It’s all a bit frustrating at times, climbing and swimming through the crud, looking for the cream, trying to be the cream. But it’s worth it. As strange as it sounds, it’s worth it. It’s a bit harder to see unless you take a step back, but you can see where you’ve grown. You see that there is far more to learn, and that is motivation to plugging forward, to keep learning. You have mentors to learn from, as long as you have the humility to ask. You can keep your pride in check. You can continuously be inspired. You may never be the “cream” but there will be a far more dynamic and changed you by the end.&lt;/p&gt;
&lt;p&gt;Strive to be the “crud of the cream”. It’s not easy, but it’s worth it. The sense of accomplishment will not be found in external markers, but in internal change and growth.&lt;/p&gt;
</content:encoded></item><item><title>Technology Flip</title><link>https://dillieo.me/posts/development/2015-10-22-technology-flip/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-22-technology-flip/</guid><description>Technology Flip</description><pubDate>Thu, 22 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Past and future have really been dancing around lately, with the latest trailer for Star Wars Episode 7 and Back to the Future Day happening all in the same week. I also heard a funny story about how sometimes technology doesn’t work so well.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Back in good ‘ol ’99, Star Wars Episode 1 came out. Me, as well as a bunch of my buddies, did what any die hard fan growing up with dreams of the Force and X-Wings would do. We camped out to get tickets. Yep, a week before the release, we went down to Edwards Big in Newport Beach and camped out in a crazy long line, playing toilet paper volleyball, listening (and speculating) over what the pre-released soundtrack means, and all sorts of other fun things. The following week we wore our costumes (many hand made) and celebrated at a midnight showing.&lt;/p&gt;
&lt;p&gt;Sure the Internet was around, but it was still pretty “new” to the average person. No ordering of tickets, or fancy auction sites (well eBay was just getting off the ground really at that point), or streaming your favorite TV shows over it. It’s pretty amazing at how far the information flow has progressed. Nowadays if I want to see a new movie, I can order my tickets from the comfort of my home (and avoid that huge line) and simply walk up to the theatre and get them and enjoy. Or I can wait a few months and simply rent it from my living room and stream it to my TV. What a crazy convenience.&lt;/p&gt;
&lt;p&gt;…until it isn’t. With Star Wars Episode 7 tickets going on pre-sale earlier this week &lt;em&gt;[what?! no amazing campout lines?! Nearly a two month wait?! Argh!!!],&lt;/em&gt; news spread about the &lt;a href=&quot;http://money.cnn.com/2015/10/19/media/star-wars-movie-tickets/index.html&quot;&gt;online ticketing sites crashing&lt;/a&gt; due to the huge demand. I chuckled to myself a little since I’ve heard this story one too many times for previous events in the past. That’s when I was surprised to hear about a friend (and coworker) who snagged 50 tickets _[you’re now allowed THAT many tickets!!!] _in a major metropolitan area on that same day! I got to talk to him briefly and asked how he pulled it off. Was he lucky with the timing? Did he have a bunch of family hit the site from multiple computers? Some kind of trickery?&lt;/p&gt;
&lt;p&gt;Nope. He drove to the movie theatre and ordered them &lt;em&gt;in person&lt;/em&gt;!!! Nothing fancy. There was one person in front of him in line being serviced, and they werne’t even getting pre-sale tickets. He ordered, paid, and walked out in mere minutes. Pure genius right?!&lt;/p&gt;
&lt;p&gt;It helps remind me that technology is great, but sometimes it isn’t the be-all-end-all to our needs, as it should be.&lt;/p&gt;
</content:encoded></item><item><title>How To Git And Ssh In Powershell</title><link>https://dillieo.me/posts/development/2015-10-20-how-to-git-and-ssh-in-powershell/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-20-how-to-git-and-ssh-in-powershell/</guid><description>How To Git And Ssh In Powershell</description><pubDate>Tue, 20 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently Microsoft announced that they will be working with the OpenSSH project to bring all of the SSH goodness natively into PowerShell. This is great news! In the meantime, here’s how you can run SSH (and Git) from PowerShell with only a little bit of effort.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Step 1: Install Chocolatey&lt;/h2&gt;
&lt;p&gt;The first step is to get the &lt;a href=&quot;https://chocolatey.org&quot;&gt;chocolately package manager&lt;/a&gt; installed if you haven’t done so already. Chocolatey makes it super easy to install the libraries we need, as well as a bunch of other things. Once installed, you’ll need to start up PowerShell as an administrator. For whatever reason you can’t install packages without being an admin. In addition, we’ll want to unrestrict our account so that we can run any PowerShell scripts we want. To do that we execute the following command at the prompt:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Set-ExecutionPolicy Unrestricted&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When prompted, specify “A” (Yes to All) so that all scripts can be executed.&lt;/p&gt;
&lt;h2&gt;Step 2: Install Git / SSH Tools&lt;/h2&gt;
&lt;p&gt;Now that we have things ready, let’s install our tools. Enter the following one by one at the PowerShell prompt to install our tools:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;choco install git choco install git-credential-winstore choco install poshgit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Those three tools are the core of what we need. By default git comes with the SSH tools needed for our basic operations, and poshgit gives us our Git commands available through PowerShell, so now all we need to do is get everything to talk to each other.&lt;/p&gt;
&lt;h2&gt;Step 3: Configure PowerShell Scripts&lt;/h2&gt;
&lt;p&gt;Since we&apos;re going to be running our own PowerShell scripts, we need to modify the security a little. Launch PowerShell as an Administrator and then enter the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Set-ExecutionPolicy Unrestricted&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll be asked to confirm this, and do so. After that you can close the PowerShell and continue.&lt;/p&gt;
&lt;p&gt;There are two main scripts we need to register with our PowerShell session. The first one is the SSH agent utilities script. This is a set of functions that ties in the SSH executable installed with Git to be accessible from PowerShell. I take no credit for this one. &lt;a href=&quot;http://markembling.info&quot;&gt;Mark Embling&lt;/a&gt; did a fabulous job with this (6 years later and they still function fine) and you can get it &lt;a href=&quot;https://gist.github.com/markembling/187305&quot;&gt;here&lt;/a&gt;. Once you’ve downloaded the.ps1 file, save it to your {UserId}\Documents\WindowsPowerShell folder.&lt;/p&gt;
&lt;p&gt;The second script is the one to add Git to your environment, register SSH Agent Utils, and get your PoshGit prompt running. You can save this script to a separate file and call it if you prefer, but I simply overwrite my existing Microsoft.PowerShell_profile.ps1 file with the following:&lt;/p&gt;
&lt;p&gt;[gist]89145ed6636b76b6dd0a&lt;/p&gt;
&lt;p&gt;There are two tweaks to make to this file.&lt;/p&gt;
&lt;p&gt;The first is to check your git installation path. Depending on which version of Git you installed from chocolatey, you may have the 32bit or 64 bit version. If you have the 64 bit version, it will be installed into the “Program Files” (and not “Program Files x86”) folder. This script was originally configured for the 64 bit version, so if you have 32 bit change &quot;Env:ProgramFiles” to &quot;Env:ProgramFiles(x86)” on lines 2 and 3.&lt;/p&gt;
&lt;p&gt;Finally, since chocolatey pulls the latest version of PoshGit with the install, the path to the example prompt file may have changed. Check your PoshGit installation. It will typically be in the C:\tools\poshgit folder. In there will be a dahlbyk-posh-git-XXXXXX folder. If the name of that folder doesn’t match what is on line 12 of the script, change accordingly, typically it is just the last segment of the folder name.&lt;/p&gt;
&lt;p&gt;Now save the script and restart PowerShell. When you startup, you should see a comment about the SSH agent starting and the PID value for it. If something goes wrong, it is typically path related items that you can double check and resolve.&lt;/p&gt;
&lt;h2&gt;Step 4: Generate your SSH Key&lt;/h2&gt;
&lt;p&gt;The final step is to generate your SSH key. By default the SSH scripts look for a.ssh folder in the user’s home directory. If you haven’t done so yet, at the PowerShell prompt, execute the following commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mkdir ~/.ssh cd ~/.ssh ssh-keygen&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will create the hidden ssh folder in your user root directory, navigate there, and then execute the keygen utility to generate a key. Use the default on the key’s name/location and give it a password. Once done, you’ll see a fun randomized pattern. You’ll also have an id_rsa and id_rsa.pub file in the ssh folder.&lt;/p&gt;
&lt;p&gt;For the final piece of magic, restart PowerShell. This time you will be prompted for the password for the SSH key you generated. Once verified, the SSH key will be “auto-authenticated” whenever you perform any git commands that require your SSH key for authentication. This lasts for the entire duration of the PowerShell session. With all the pulls, merges, and commits, it’s quite handy.&lt;/p&gt;
&lt;p&gt;You’ll need to register your SSH key using the id_rsa.pub details with the repository provider you’re working with. Each one has documentation on how to set that up.&lt;/p&gt;
&lt;h2&gt;PoshGit in Action&lt;/h2&gt;
&lt;p&gt;With all of these items in place, navigate to a folder that has a Git repository attached to it. You should see something like in the screenshot at the beginning of the post.&lt;/p&gt;
&lt;p&gt;You’ll see that my SSH agent is running, my key has been verified, and when I go to the location of my project, I have a nice color coded layout which includes the branch I’m on, and any additions/modifications/deletions to the repository.&lt;/p&gt;
&lt;p&gt;Enjoy! Let me know if you’re using any other tools for Git/SSH at the PowerShell prompt, I’m always looking for more!&lt;/p&gt;
</content:encoded></item><item><title>Ho Now Its Bombadil</title><link>https://dillieo.me/posts/development/2015-10-16-ho-now-its-bombadil/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-16-ho-now-its-bombadil/</guid><description>Ho Now Its Bombadil</description><pubDate>Fri, 16 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Hey dol! merry dol! ring a dong dillo! Ring a dong! hop along! fal lal the willow! Tom Bom, jolly Tom, Tom Bombadillo!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So my new computer has arrived and after an unusually difficult pondering session, the new MacBook Pro has been christened...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Bombadil!&lt;/p&gt;
&lt;p&gt;Fond memories began to sweep through my mind of this very insignificant yet powerful person that Frodo and company encounters at the start of their journey. He seems almost playful and nimble at their first encounter, and I get the same impression as this computer nimbly and playfully loads and installs applications with amazing speed.&lt;/p&gt;
&lt;p&gt;But there was much power to Tom Bombadil, and this computer has much power too. Maxed out the gills on graphics, CPU, and RAM, there is much power to create now. I’ve had to rebuild my Win10 VM twice now in a day and moved effortlessly in the background while I was busy coding away with another project.&lt;/p&gt;
&lt;p&gt;So there you have it, a profoundly-not-so-profound new companion that should take me on many coding adventures with the power to keep evil viruses and bugs at bay.&lt;/p&gt;
&lt;p&gt;Ring a dong dillo!&lt;/p&gt;
</content:encoded></item><item><title>New Tool For Rebuilding Your Dev Environment</title><link>https://dillieo.me/posts/development/2015-10-14-new-tool-for-rebuilding-your-dev-environment/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-14-new-tool-for-rebuilding-your-dev-environment/</guid><description>superlumic-logo</description><pubDate>Wed, 14 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My new MacBook Pro is here and the first step is to get all the tools up and running! I&apos;ve mentioned before using &lt;a href=&quot;/rebuilding-your-dev-environment-quick-and-easy-on-osx-with-kitchenplan&quot;&gt;KitchenPlan&lt;/a&gt;, but now there&apos;s a new kid on the block: &lt;a href=&quot;https://github.com/superlumic/superlumic&quot;&gt;SuperLumic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;SuperLumic was created by the same person that created &lt;a href=&quot;https://github.com/kitchenplan/kitchenplan&quot;&gt;KitchenPlan&lt;/a&gt;, so there&apos;s a lot of similar things working for it. However, this is built on top of Ansible, so it provides &lt;a href=&quot;http://vanderveer.be/2015/09/27/using-ansible-to-automate-osx-installs-via-superlumic.html&quot;&gt;more speed and maintainability&lt;/a&gt;. SuperLumic allows you to &quot;rerun&quot; your scripts as much as you want, and it will simply bypass (or update if necessary) the apps you have installed, making it easy to change your configuration as you need.&lt;/p&gt;
&lt;p&gt;That said, I was able to fork the same configuration, make a few tweaks to add some additional programs from my KitchenPlan configuration, and I was up and running in no time!&lt;/p&gt;
&lt;p&gt;Between GitHub for code, OneDrive for personal photos/files, and SuperLumic for development tools, you can have a new machine up and running in a few hours, instead of a full day. It&apos;s pretty amazing.&lt;/p&gt;
&lt;p&gt;Give it a whirl! I think you&apos;ll like it. Let me know what you think.&lt;/p&gt;
</content:encoded></item><item><title>Total Control Of Logging In Laravel 51</title><link>https://dillieo.me/posts/development/2015-10-08-total-control-of-logging-in-laravel-51/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-08-total-control-of-logging-in-laravel-51/</guid><description>Laravel-5.png</description><pubDate>Thu, 08 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little while back I showed how to &lt;a href=&quot;/quick-tip-adding-logentries-to-laravel-5-0&quot;&gt;configure LogEntries with Laravel 5.0&lt;/a&gt;. Now that I’ve updated to 5.1, I needed to update the configuration to use Laravel’s new layout. In addition, I needed to control the level at which log entries were being saved to remove the clutter of the logs in the staging/production environment. Here’s how you set that up.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;With Laravel 5.1, they offer a configureMonologUsing method that you can add to your bootstrap/app.php file and customize what and how Monolog is setup. Looking through some of the existing code, the different Monolog handler types support a “log level” parameter. They are just set to “debug” by default in it’s core configuration. What we do then is add a couple of extra variables to our.env file:&lt;/p&gt;
&lt;p&gt;LOGGING_LEVEL - Can be set to DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, or ALERT&lt;/p&gt;
&lt;p&gt;LOG_MAX_FILES - Maximum files to use in the daily logging format.&lt;/p&gt;
&lt;p&gt;From there we add the following code to our bootstrap/app.php file right before the final line that returns the $app variable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$app-&amp;gt;configureMonologUsing(function($monolog) {

// Configure default file logger to follow level conventions in // environment configuration. $logLevels = Logger::getLevels(); $logLevel = env(&apos;LOGGING_LEVEL&apos;, &apos;DEBUG&apos;); $logMaxFiles = (int)env(&apos;LOG_MAX_FILES&apos;, 5); $storagePath = realpath(__DIR__.&apos;/../&apos;). &apos;/storage&apos;;

$monolog-&amp;gt;pushHandler( $handler = new RotatingFileHandler( $storagePath. &apos;/logs/laravel.log&apos;, $logMaxFiles, $logLevels[$logLevel]) );

$handler-&amp;gt;setFormatter(new LineFormatter(null, null, true, true));

// Configure logentries to follow level conventions in environment configuration. $logEntriesHandler = new LogEntriesHandler(env(&apos;LOGENTRIES_TOKEN&apos;)); $monolog-&amp;gt;pushHandler($logEntriesHandler, $logLevels[$logLevel]); });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s all there is to it. If you compare this to the default code, you may have noticed that I didn’t use the storagePath variable, because that value hasn’t been defined yet. Instead we use the “raw” pathing that the storagePath call when setting itself up.&lt;/p&gt;
&lt;p&gt;The final step (and another blog post) will be to allow upating the logging configuration on the fly, something that &lt;a href=&quot;/changing-log4net-configurations-dynamically&quot;&gt;I like to do with my.Net based apps&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Whats In A Name Ideas Wanted</title><link>https://dillieo.me/posts/development/2015-10-06-whats-in-a-name-ideas-wanted/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-06-whats-in-a-name-ideas-wanted/</guid><description>Whats In A Name Ideas Wanted</description><pubDate>Tue, 06 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some people like to name their vehicles, but I like to name my electronics &lt;em&gt;[well, technically I name my vehicles too 8^D]&lt;/em&gt;. Maybe it’s because I’ve loved computers since I was a kid, or by giving them a name I mentally take better care of the devices, I’m not sure…&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I typically name my phones after droids, since my first smartphone was indeed an droid. There was R4, then Whistler on my Windows Phone, and now IG-88 on my iPhone. With my new found love of Doctor Who, I named my 9” Nexus tablet K9. See what I did there?&lt;/p&gt;
&lt;p&gt;My computers have been a little more profound. I’ve named them after philosophers or theologians. It could be because I do more work, or see the programming work I do as a creative process, who exactly knows. Aquinas, Boethius, and Kierkegaard have been recent incarnations of my computers.&lt;/p&gt;
&lt;p&gt;Kierkegaard has served me well for nearly 5 years now. However, it’s starting to show it’s age with random app and system crashes and a very low battery life. Admittedly, part of the battery life is due to the &lt;a href=&quot;http://www.freshconsulting.com/get-more-life-out-of-your-computer-with-a-ssd-upgrade/&quot;&gt;SSD upgrade&lt;/a&gt; I gave it a couple of years back. The time has come and I’m fortunate (and quite giddy) to be having a new MacBook Pro with a maxed out 16GB of RAM and 1TB flash drive arriving at the end of the week.&lt;/p&gt;
&lt;p&gt;What name shall I give it? I’m a little lost at this point. Do I pull out a new theologian/philosopher to use? Do I try a new route, such as Star Wars planets, Middle Earth locations, or something new?&lt;/p&gt;
&lt;p&gt;Thoughts? Anybody? Bueller?&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Iam S3 Policy For Deploybot</title><link>https://dillieo.me/posts/development/2015-10-01-quick-tip-iam-s3-policy-for-deploybot/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-10-01-quick-tip-iam-s3-policy-for-deploybot/</guid><description>Quick Tip</description><pubDate>Thu, 01 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For one of the projects I’m working on, we’re using &lt;a href=&quot;http://www.deploybot.com&quot;&gt;DeployBot&lt;/a&gt; to handle deploying our code from our bitbucket repository to an AWS S3 bucket. For security reasons, we want to keep the IAM policy a restrictive as possible, so that it can only add/remove files in that bucket. However, DeployBot needs to be able to connect to S3 and get a list of buckets to provide a list for you to choose from in the deployment wizard. After a little bit of tweaking, this is the IAM policy that worked for me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;You can build this using the “Inline Policy” feature in AWS IAM. If you had a S3 bucket named “bucket-of-fish”, your policy would look like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{ &quot;Version&quot;: &quot;2012-10-17&quot;, &quot;Statement&quot;: \[ { &quot;Effect&quot;: &quot;Allow&quot;, &quot;Action&quot;: \[ &quot;s3:ListAllMyBuckets&quot;, &quot;s3:GetBucketLocation&quot; ], &quot;Resource&quot;: \[ &quot;arn:aws:s3:::\*&quot; ] }, { &quot;Effect&quot;: &quot;Allow&quot;, &quot;Action&quot;: \[ &quot;s3:\*&quot; ], &quot;Resource&quot;: \[ &quot;arn:aws:s3:::bucket-of-fish&quot; ] }, { &quot;Effect&quot;: &quot;Allow&quot;, &quot;Action&quot;: \[ &quot;s3:\*&quot; ], &quot;Resource&quot;: \[ &quot;arn:aws:s3:::bucket-of-fish/\*&quot; ] } ] }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;From what I’ve read, you need to have actions at the root and at the sub-levels of your bucket, which is why we have those two resource entries. The top level one is for simple login / bucket list retrieval.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>A Random Analogy About The Merits Of Clean Code And Unintended Consequences</title><link>https://dillieo.me/posts/development/2015-09-29-a-random-analogy-about-the-merits-of-clean-code-and-unintended-consequences/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-29-a-random-analogy-about-the-merits-of-clean-code-and-unintended-consequences/</guid><description>A Random Analogy About The Merits Of Clean Code And Unintended Consequences</description><pubDate>Tue, 29 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week after having the kids an overview on how they can &lt;a href=&quot;/simple-and-fun-diy-record-player&quot;&gt;make their own record player&lt;/a&gt;, we decided to pull out our old record player from the garage. Since our receiver for the record player is long gone, I went into “hacker” mode and started piecing things together.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I picked up a phono preamp on Amazon so that our turntable would have a strong enough signal to plug into any audio source we had (until I get my long awaited sound bar). I then grabbed an extra set of 2.1 speakers (two speakers and a subwoofer) we had and started to hook things up.&lt;/p&gt;
&lt;p&gt;Working on the fly, I was looking for something that would convert my RCA audio output to the 3.5mm (headphone jack) input required by the speakers. I went to my drawer and pulled out the AV cable we use for our Roku box on occasion.&lt;/p&gt;
&lt;p&gt;Since there was no “video” signal from the record player, I simply didn’t bother to put anything on there. The plug fit, the audio connections were there, and things were working.&lt;/p&gt;
&lt;p&gt;Well, not exactly. The sound was barely audible coming out of the speakers (even at full volume) and there was a buzzing noise clearly heard, especially if the subwoofer was turned up. It turns out that even though there was no video signal, the connector was causing some noise on the line with some drastic consequences. I purchased a proper cable, plugged things in, and voila, things were soundingly beautiful.&lt;/p&gt;
&lt;p&gt;So where’s the programming analogy in all of this? Sometimes as we build out a new application, we have a ton of methods, variables, or database columns that we create. As the requirements of the application change, some of those fields may no longer be deemed necessary. In the rush to finsh the project, sometimes we simply leave those artifacts in the program. We think that maybe that feature will come back and those columns will already be there, or that since nothing is actually calling the code that we’re aware of, those “empty plugs” will be just fine.&lt;/p&gt;
&lt;p&gt;That’s not always true. An extra database column might cause the search results to come back differently or the indexing optimizations might not be quite right. Another developer may see those extra methods/variables in the code and start to use them, much to the detriment of the app. There may be lingering unit tests in the app no longer required, creating extra “buzz” or performance degradation to build. Those “simple” or “innocuous” things can add up, often when you don’t expect it.&lt;/p&gt;
&lt;p&gt;Writing good code is hard. Writing clean code is just as hard (maybe harder). Take the time to keep your code clean so that those “unused video cables” in your app don’t cause undue noise or problems with your app.&lt;/p&gt;
</content:encoded></item><item><title>Simple And Fun Diy Record Player</title><link>https://dillieo.me/posts/growth/2015-09-24-simple-and-fun-diy-record-player/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-09-24-simple-and-fun-diy-record-player/</guid><description>Simple And Fun Diy Record Player</description><pubDate>Thu, 24 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week the girls were learning about sound, phonographs, and Alexander Graham Bell. Our current record player was on the fritz, but an old episode of &lt;a href=&quot;https://en.wikipedia.org/wiki/Watch_Mr._Wizard&quot;&gt;Mr. Wizard’s World&lt;/a&gt; came back to me in a flash. In a matter of minutes we had our own primitive record player and it was fun and easy to make!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Materials&lt;/h2&gt;
&lt;p&gt;To build your record player, all you need is the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A record - you can get these at Goodwill for a dollar nowadays.&lt;/li&gt;
&lt;li&gt;1 sheet of construction paper&lt;/li&gt;
&lt;li&gt;Tape&lt;/li&gt;
&lt;li&gt;Pin - some kind of sewing pin, not a thumbtack or push pin&lt;/li&gt;
&lt;li&gt;Pencil&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1 - Make your amplifier&lt;/h2&gt;
&lt;p&gt;You need something to amplify the sound. As the girls remembered from photographs, cone shaped objects do a great job with this. Roll your construction paper into a cone, and tape it so it doesn’t come loose.&lt;img src=&quot;@assets/images/posts/2015-09-1_20150924_125642255_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;2 - Attach the pin&lt;/h2&gt;
&lt;p&gt;The pin serves as our record needle. It’s the key element that transfers the sound off the record. Tape the pin to the end of the small opening of the cone. It doesn’t matter how long or short the needle is, as long as it’s secure. As the record spins, the needle will “wiggle” in the grooves cut into the record player. Those vibrations transfer from the needle to the construction paper, and the paper amplifies the sound we have.&lt;img src=&quot;@assets/images/posts/2015-09-1_20150924_125823188_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;3 - Make a turntable&lt;/h2&gt;
&lt;p&gt;We need something to serve as a turntable. If you take the sharpened end of the pencil, and push it through the hole in the record until it is snug, you make a pretty large looking top. But you also have a way to turn your record to get sound.&lt;img src=&quot;@assets/images/posts/2015-09-1_20150924_130041516_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;4 - Go make some music!&lt;/h2&gt;
&lt;p&gt;This is where it gets a bit tricky and most likely will require an extra person. One person spins the record slowly. The actual speed will take some practice, but it’s fun to hear how crazy the sound gets based on the speed. The other person will gently lay the needle to the record at an angle. You want the needle to go with the spin of the record and not against it. You’ll still get the sound and reduce the change of really scratching up the record.&lt;/p&gt;
&lt;p&gt;Put it all together and you have something like this...&lt;/p&gt;
&lt;p&gt;http://www.youtube.com/watch?v=IDpZr1QlXvU&lt;/p&gt;
&lt;h2&gt;Final Note&lt;/h2&gt;
&lt;p&gt;You’re not going to want to get out your pristine collector records for this. Over time the needle can do some permanent damage to the record. Plus it gets a little tiring trying to find the perfect speed to twist. 8^D But it’s fun and the kids learned a few things and solved a puzzle along the way!&lt;/p&gt;
&lt;h2&gt;2017 Update&lt;/h2&gt;
&lt;p&gt;Someone might have copied my DIY turntable idea and turned it into a viable business. Who could ever have thought that would be possible? Anyway, it&apos;s called the SpinBox and it&apos;s a turntable made from cardboard that you&apos;re suppose to build and assemble yourself. It can be build in literally a few minutes in 5 easy steps. Any kid interested in music or vinyl will love this! You can read more about it at this article &quot;&lt;a href=&quot;http://premier-recordsinc.com/spinbox-love-turntable-invention/&quot;&gt;Turntable Developments And Inventions In 2017&lt;/a&gt;&quot; I found over at &lt;a href=&quot;http://premier-recordsinc.com/&quot;&gt;Premier-RecordsInc.com&lt;/a&gt;. I&apos;ll update you with more information as soon as the Kick Starter crowdfunding campaign is finished.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Telerik Sitefinity A Review</title><link>https://dillieo.me/posts/development/2015-09-22-telerik-sitefinity-a-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-22-telerik-sitefinity-a-review/</guid><description>Telerik Sitefinity A Review</description><pubDate>Tue, 22 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week we launched a site for a client that was built upon the &lt;a href=&quot;http://www.sitefinity.com/&quot;&gt;Telerik Sitefinity&lt;/a&gt; CMS platform. Between me and 3 or 4 other developers, we customized the front end, a bit of the back end, and all parts inbetween. I’m quite proud of the launch. There were lots of learning points along the way and I’m sure some folks are wondering if it’s worth using this platform to build a site. Here’s my rundown on the good, the bad, and the ugly with it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The Good&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Out of box features&lt;/strong&gt;: Need a blog? It’s there (as many as you need). Separate news feed? That’s there too. Compared to other CMS systems I’ve worked with, the user interface for building your pages is rather nice. Most of it resides in drag and drop components, so that you don’t accidentally mess up the style of the master templates themselves.&lt;/p&gt;
&lt;p&gt;Sitefinity has this nice notion of “shared content blocks” that allows you to use the same chunks of text (or even images) in various places on the site. We used this, in conjunction with shortcodes, to allow our end users to easily change some pieces of info that is available in multiple places on the site.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extensibility:&lt;/strong&gt; A lot of their modules have WCF web services built to access them. I leveraged this to &lt;a href=&quot;/soup-to-nuts-dynamically-submitting-sitefinity-forms-using-ajax&quot;&gt;dynamically submit forms&lt;/a&gt; to the system. I also was able to update somebody else’s module to &lt;a href=&quot;/something-old-and-new-importing-wordpress-posts-into-sitefinity&quot;&gt;import WordPress blogs into Sitefinity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt; Sitefinity has a pretty extensive online documentation and forums section to help you track down issues and also find out how to implement features. There are a lot of CMS systems out there with skimpy documentation and that can be a problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tech Support:&lt;/strong&gt; If you have a Sitefinity account, take advantage of the support tickets you can respond. While the responses aren’t always the most informative (for my tasks) I received a response within 24 hours every time and there was always some insights to be gleaned.&lt;/p&gt;
&lt;h2&gt;The Bad&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt; The good is also the bad. While the documentation is available, often times it isn’t extensive enough for some of the advanced concepts. The basic documentation gave me the springboard to build out complex &lt;a href=&quot;/creating-custom-formatted-layout-widgets-in-sitefinity&quot;&gt;custom user widgets&lt;/a&gt;, but the example they had was very primitive compared to the widgets I built, and while I can’t confirm for sure, it appears that in order to have multiple “drop locations” in a single widget you also need to be careful how you order the class names in your code. Several interactions with tech support and pouring through documentation yielded nothing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modifying Settings:&lt;/strong&gt; Sitefinity provides a high level of granularity to customize the system, but sometimes that is a bit of overkill. For example, e-mail notifications are disabled by default in a sitefinity install. If you want e-mail notifications for when a form is submitted, you have to update you system settings, notification profile, and also enable notifications for forms. Having this all consolidated would be better. Even if you kept things granular, having a little more robust administrative interface for some of these common features that updates multiple settings behind the scenes could go a long way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Supporting Complex Templates:&lt;/strong&gt; In order to create a really great site for our client, we did a fully reponsive site using bootstrap, google maps, some jQuery interactions and more. When you attempt to load the page in the WSYWIG editor, it became extremely difficult to edit, since the editor was attempting to load those changes up. Sitefinity is working on a “feather” template that is supposed to be more bootstrap friendly, but ultimately we had to write some &lt;a href=&quot;/fixed-more-button-disabled-multiple-forms-and-script-issues-in-sitefinity&quot;&gt;special template code&lt;/a&gt; that didn’t load our custom scripts in the editor. I thnk if there was large scale HTML mode to help with some of those updates, then that could go a long way in helping. Sometimes you just need to edit the raw code.&lt;/p&gt;
&lt;h2&gt;The Ugly&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;CodeSync Tool:&lt;/strong&gt; The Sitefinity CodeSync tool is designed to allow you to do file pushes from Visual Studio to your server of choice and keep a differential. That way only the latest changes you’ve made (or exist on the server) need to be synchronized, saving you valuable bandwidth and guesswork with major updates.&lt;/p&gt;
&lt;p&gt;However, this tool was difficult to setup. There was a server piece and a client piece to download/configure/upload. If you had a value wrong, or didn’t do it quite in the right order, you wouldn’t see the server to sync with. The tool doesn’t work with HTTPS, so that caused a lot of headache when trying to work with our servers when we had HTTPS configured. The “initial configuration” required you to effectively download the entire file source from the server, as opposed to keeping a checksum or other marker on the file to eliminate the need for a full file copy.&lt;/p&gt;
&lt;p&gt;In addition, I ran into numerous problems when developing in conjunction with a team of developers. With three of us working on code and pushing at various times, the server would often report erroneous updates needed. Or updates would be downloaded and the tool reported the files needing updating again. Similarly, if a file was pushed to the server, but I had downloaded the same version of that file through our git repository pull, CodeSync did not notice that the file was actually the same one, and prompt for an update/download. Eventually I abandoned the tool altogether and simply did direct file copies between my local machine and the servers I had to work with. It wasn’t pretty, but easier than the alternative.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I’m rather impressed with Sitefinity. The licensing price seems good compared to other paid tier.Net CMS platforms out there and the out of the box features and extensibility go a long way to get you up and running fast with a site. The templating model is good and the extensible models aren’t overly complicated to work with.&lt;/p&gt;
&lt;p&gt;That said, really customizing your layouts or controls (or dynamic modules for that matter) aren’t quite as easy as it sounds on paper. There was a bit of trial and error to make things work, and sometimes there was a combination of files that needed to be setup and data that needed to be configured through an import tool that added to a bit of the confusion. So make sure to buffer yourself a little extra time when creating your custom modules, even if you have a base sample or documentation to work with.&lt;/p&gt;
&lt;p&gt;I still would recommend Sitefinity to somebody looking to get a fresh CMS off the ground and has some money to spend to get the support that comes with it. My fellow developer still prefers Umbraco a bit more, especially since he’s had more experience with it, but he readily admits that there are a lot more features available that he would have had to code up from scratch, saving us all valuable time. I’m definitely keeping Sitefinity at the front of my tools available for.Net development.&lt;/p&gt;
&lt;p&gt;Have you worked with Sitefinity? I’d love to know your thoughts about the platform. The more information to share, the better!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Writable Laravel Logs With Elastic Beanstalk</title><link>https://dillieo.me/posts/development/2015-09-10-quick-tip-writable-laravel-logs-with-elastic-beanstalk/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-10-quick-tip-writable-laravel-logs-with-elastic-beanstalk/</guid><description>Laravel-5.png</description><pubDate>Thu, 10 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A while ago I wrote an article outlining deploying &lt;a href=&quot;/laravel-5-configurations-in-aws-elastic-beanstalk&quot;&gt;Laravel to Elastic Beanstalk&lt;/a&gt;. While this worked great, I started running into problems surrounding an error that Laravel couldn&apos;t write to it&apos;s log files. I had tried adding code to the pre-deploy scripts to update folder settings, but this didn&apos;t work. After a little more digging, I found you can use a post-deploy script. It looks a bit different (and doesn&apos;t have much documentation) but it does the trick.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;In your.ebextensions folder, create a file and name it what you like, as long as it is sequentially at the end. Mine is named &apos;04postdeploy.config&apos; Then in that file add the following code:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;files: &quot;/opt/elasticbeanstalk/hooks/appdeploy/post/99_make_storage_writable.sh&quot;: mode: &quot;000755&quot; owner: root group: root content: | #!/usr/bin/env bash chmod -R 777 /var/app/current/storage&lt;/code&gt;...and that is it! The first line is the name of the script file to create, and that can be arbitrary, though you can change the numbering if you have multiple post deploy files. Elastic Beanstalk deploys the code into the /var/app/current folder (you may notice &quot;ondeck&quot; being used in pre-deploy scripts, so we can make sure we target the write location to update our permissions.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Adding Logentries To Laravel 50</title><link>https://dillieo.me/posts/development/2015-09-09-quick-tip-adding-logentries-to-laravel-50/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-09-quick-tip-adding-logentries-to-laravel-50/</guid><description>Quick Tips</description><pubDate>Wed, 09 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve used &lt;a href=&quot;http://www.logentries.com&quot;&gt;LogEntries&lt;/a&gt; on a couple of projects now and I really like it. They provide a really simple API in which you can send your logging entries to and be able to view it online. This comes in handy when you don&apos;t always have access to the servers, or want some additional alerts without having to set them up yourself.&lt;/p&gt;
&lt;p&gt;While there isn&apos;t a &quot;specialized&quot; plugin for Laravel, Laravel does use MonoLog by default, which has a LogEntries writer built into it. The &lt;a href=&quot;https://blog.logentries.com/2014/09/logging-from-php-web-frameworks-like-laravel/&quot;&gt;current documentation&lt;/a&gt; available works with version 4.2. However, in version 5.0, they removed the start/global.php file, requiring a slightly different approach.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Laravel 5.0 now takes advantage of service providers, instead of the &quot;catch all&quot; that was typically used in the global.php file. While you could build out your own logging provider, I found that since all I&apos;m doing is registering LogEntries in addition to the default file logger, I would use the existing providers. Here&apos;s what you need to do.&lt;/p&gt;
&lt;p&gt;Once you&apos;ve created a LogEntries account and generated you &quot;Manual TCP&quot; token, open up the app/Providers/AppServiceProvider.php file. In here you&apos;ll find a method named register() that may have some code in it. Add the following lines before the end of the method:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$logEntriesHandler = new LogEntriesHandler(env(&apos;LOGENTRIES_TOKEN&apos;)); $log = $this-&amp;gt;app\[&apos;log&apos;]-&amp;gt;getMonolog(); $log-&amp;gt;pushHandler(\$logEntriesHandler);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;One other thing, make sure to add the LogEntriesHandler reference at the top of the file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;use Monolog\\Handler\\LogEntriesHandler;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll notice that we&apos;re storing our token in the.env file in case we want to change it on the fly. This code will pull up the existing application object and get the logger. We&apos;ll then push in the LogEntries handler into it, and we&apos;re done. Now whenever an event is logged, it&apos;ll log to the file AND to our LogEntries account.&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it! Now you should start seeing log entries trickle into your LogEntries account.&lt;/p&gt;
&lt;p&gt;Note, this works with 5.0, and I suspect 5.1. However, 5.1 has a lovely &quot;configureMonologUsing&quot; method that you can put in your app.php file that I think will make this even nicer. I&apos;ll have a followup on that once I upgrade to 5.1&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Build Your Own Netflix With Plex</title><link>https://dillieo.me/posts/development/2015-09-07-build-your-own-netflix-with-plex/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-07-build-your-own-netflix-with-plex/</guid><description>Build Your Own Netflix With Plex</description><pubDate>Mon, 07 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We have a decently sized collection of DVDs. It’s large enough that often times when we want to watch something, we can’t find it. It’s either in the “archive” of old movies downstairs, or it’s in one of the travel cases that we used for a road trip. We also have a growing music collection, and being able to setup playlists or listen to tunes without having to connect to Pandora, Google, iTunes, Spotify is handy at times as well. TV shows? Oh yeah, I have a season or two of Lost that would be nice to catch up on again as well. Fortunately, there is a great tool out there called &lt;a href=&quot;https://plex.tv&quot;&gt;Plex&lt;/a&gt; that gives you all of this, and more!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Get It!&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://plex.tv&quot;&gt;Plex&lt;/a&gt; is a FREE media server platform that is available for nearly any device you can imagine. The server itself doesn’t have any crazy requirements. I installed it on an old Windows 7 machine that was sitting in the garage. You can &lt;a href=&quot;https://plex.tv/downloads&quot;&gt;download&lt;/a&gt; the server app for Windows, Mac, Linux, FreeBSD, and even NAS devices. The biggest concern you’ll have is storage space for your media, but there are plenty of options for that (see below). Setup was easy. A couple of clicks and I was done.&lt;/p&gt;
&lt;h3&gt;Add Your Media!&lt;/h3&gt;
&lt;p&gt;Once you’ve installed the server, you can launch the server admin tool, which loads up in a web browser. Clicking the + icon in the sidebar will allow you to add a new library to the system.&lt;img src=&quot;@assets/images/posts/2015-09-6_5_4_3_2_1_plex-admin.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You have variety of libraries to add: movies, tv shows, home movies, music, photos.&lt;img src=&quot;@assets/images/posts/2015-09-4_3_2_1_plex-libraries.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Next you select a folder where that type of media is stored and Plex does the rest! For items like movies, Plex will analyze the movie and try to provide “cover” images that you see in the first screen shot. Plex recommends that you follow their &lt;a href=&quot;https://support.plex.tv/hc/en-us/categories/200028098-Media-Preparation&quot;&gt;naming guidelines&lt;/a&gt; in order best integrate with the server, but it will work with what it can. I took the time to rename all of my movie files and I think it was worth it. I already had my music stored in artist/album/track type format, so I didn’t change that up. Depending on the size of your library, this may take a while. You can still watch your movies while things are indexing, but depending on your computer, there maybe a little bit of stuttering&lt;/p&gt;
&lt;h3&gt;Watch Your Stuff!&lt;/h3&gt;
&lt;p&gt;Once your media is all set, now you can watch/listen to it! This is where you exit from the free to paid range within Plex, depending on your needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web:&lt;/strong&gt; If you’ve configured things properly, you can always open the Plex site in your web browser from another computer, and start watching movies that way. The interface is nice and easily searchable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Streaming Server:&lt;/strong&gt; Plex is a RTSP streaming server. If you have a device (such as our BluRay player) that supports this protocol, your server should show up there shortly after things are in place. The program you have will most likely need to index (take inventory of) all of your media onto it, so this may take a while.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile:&lt;/strong&gt; Plex offers a standalone apps for both &lt;a href=&quot;https://plex.tv/android&quot;&gt;Android&lt;/a&gt; and &lt;a href=&quot;https://plex.tv/ios&quot;&gt;iOS&lt;/a&gt;. This gives you a convenient way to watch your movies on your tablet, and even Chromecast them to your TV if you happen to have one. These apps will cost you $5 per device, but that isn’t too bad if you’re only running a single device or are using a shared account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Roku:&lt;/strong&gt; Our preferred means of interacting with our movies is through our &lt;a href=&quot;https://www.roku.com&quot;&gt;Roku Box&lt;/a&gt;. We already have Netflix and Hulu on it, so adding a Plex channel was easy to do. After a one month trial, we were required to pay a one time $5 fee to unlock things permanently. Since the fee is tied to the Roku account, we were able to add the Plex channel to our other Roku in the bedroom without a second fee.&lt;img src=&quot;@assets/images/posts/2015-09-3_2_1_20150907_150721661_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plex Pass:&lt;/strong&gt; For those of you that are REALLY into your personal media options, Plex has a ton of features available. If you purchase a &lt;a href=&quot;https://plex.tv/subscription/about&quot;&gt;Plex Pass&lt;/a&gt; ($15 a month), you unlock access to any device you want for viewing. In addition, you can have your plex box available over the web, so you can view your movies while you’re away from home, without having to download them. The Plex server is smart enough to transcode the movies on the fly based on your device, so you’re not sending down a huge 1080p large resolution movie to your 7 inch tablet that is going to ignore most of those bits and potentially stutter anyway. I haven’t found the need for the Plex Pass myself, but down the road it may be worthwhile.&lt;/p&gt;
&lt;h3&gt;Tips&lt;/h3&gt;
&lt;p&gt;As I’ve been working on getting my Plex server up and running, here are a few tips/tricks to help along the way:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Digitizing:&lt;/strong&gt; The biggest step will be to get all of your DVDs digitized. While you could potentially go to the torrent networks, I take the time to use the &lt;a href=&quot;https://handbrake.fr&quot;&gt;Handbrake&lt;/a&gt; application (free) since it is easy to use and has presets in place. I use the “High Profile” preset to get a good quality resolution for our TV.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Network:&lt;/strong&gt; While I don’t have any hard statistics on the issue, I found that connecting the Plex server to the network router using a LAN cable (instead of going wireless) gave the best streaming performance. It didn’t matter that the Roku devices access the server over WiFi, having the server directly onto the network to push media out worked the best.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Storage:&lt;/strong&gt; You’ll run out of space fast! I’ve been helping my father in law get his Plex server setup and he has already filled a 2TB hard drive. Each movie will vary, but currently a “High Profile” movie ripped using Handbrake fills about 1GB of space for an hour and half movie. The nice thing is that your storage devices don’t have to be “directly” connected to the computer. We have his storage connected via USB3 drives and haven’t had any performance issues. I recently ran out of space with my old 100GB drives, so I reconfigured my Plex server to read the movies from the shared network drive (plugged into the router) and I haven’t had any issues with playback. Ideally you’ll have a lovely 8TB SATA drive plugged directly into your server, but it’s nice to know that you can work around that if needed.&lt;/p&gt;
&lt;h3&gt;Enjoy!&lt;/h3&gt;
&lt;p&gt;Plex has a phrase to enjoy “rediscovering your media” and it is definitely true. We had forgotten about a lot of movies we had previously ripped for vacations and it’s been fun to pull up some of those old movies and watch them for fun. We have an old DVD player in the bedroom, but it typically goes unused since we can start a movie in the living room, and then finish it off in the bedroom on those late nights.&lt;/p&gt;
&lt;p&gt;While I was fortunate enough to have an extra computer around, you can get this setup yourself for surprisingly cheap. Then raid your discount movie bin and build up your old library, and add new ones as you go! We really love our Plex setup and I think you will to.&lt;/p&gt;
</content:encoded></item><item><title>What Good Is Certification Upcoming Plans</title><link>https://dillieo.me/posts/development/2015-09-04-what-good-is-certification-upcoming-plans/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-04-what-good-is-certification-upcoming-plans/</guid><description>What Good Is Certification Upcoming Plans</description><pubDate>Fri, 04 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Certifications have been in the tech community for quite a while now. CCNA, ACT, MCP, MCSD, CompTIA+, CCP-V, and a whole slew of other acronyms are certifications you can get by going through specialized training and passing an exam (or 3) each vendor offers with their technology. You don’t need a college degree to get them either, but are they worth it?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve always flip-flopped on the merit of certifications. Some have a reputation for easily being attained. Most of them require one or more tests, and those tests aren’t cheap either. Then comes the renewal process every year or two (depending on certification) which can cost more money and more time. With the ever increasing “github resume” (show me your projects and/or code contributions) and plenty of people earning degrees in computer science out there, it seems like getting a certification is a needless exercise.&lt;/p&gt;
&lt;p&gt;However, there are a lot of businesses out there that use certifications as reference for hiring. A college degree definitely means a lot, but the varying levels of education can leave somebody in doubt. The CCNA standards are well known and acknowledged, and can easily serve as a baseline when you need specific expertise. There are also perks and a bit of prestige to be able to wear that “badge” of accomplishment as well.&lt;/p&gt;
&lt;p&gt;…but are they worth it? Admittedly I’m still on the fence. But that said, if a person was fresh out the door into the programming world and didn’t have a college degree, spending the time to get a certification could potentially give you a leg up when your resume is still a bit short in the experience department.&lt;/p&gt;
&lt;p&gt;With that in mind, I’m starting out a little later this month to get my MCSD certification in web applications. There’s a mixed bag of perk, necessity, and prestige involved in all of this. One of the perks of the MCSD is that it allows us to enroll our company in the Microsoft Partner Network, which gives us more exposure to potential clients as well as some MSDN licenses that we can use for software development. There’s pros and cons to all of that as well.&lt;/p&gt;
&lt;p&gt;While my 12+ years in.Net land gives me a sense of confidence I can pass these exams (there are 3), the sheer “certification” nature of it all makes me a little nervous at the same time. I’ll be taking some “test prep” type courses to refresh my knowledge on what is expected on the exams and to make sure I haven’t accidentally been hiding under a rock when it comes to new.Net technologies.&lt;/p&gt;
&lt;p&gt;Hopefully in a month or so there will be a nice little badge in my sidebar. 8^D I’ll keep you posted.&lt;/p&gt;
</content:encoded></item><item><title>Homemade Bacon Round 4 Refinement</title><link>https://dillieo.me/posts/development/2015-09-01-homemade-bacon-round-4-refinement/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-09-01-homemade-bacon-round-4-refinement/</guid><description>20150728_144941583_iOS.png</description><pubDate>Tue, 01 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There’s a saying I heard once that says “Software is never finished, only abandoned.” I’m starting to wonder if that might apply to recipes as well. With family coming into town and not a whole lot of time for curing, I held off on a bacon cure I wanted to try and went back to my &lt;a href=&quot;/homemade-bacon-round-3-success&quot;&gt;“standard” recipe&lt;/a&gt;, but made some more tweaks based off of some feedback from Jen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I added another 3/4c of maple syrup to the recipe. I trimmed back the smoked salt to a single tablespoon. Everything else remained the same. I cured for three days. Oh, those three days can always be so maddening when it comes to bacon!&lt;/p&gt;
&lt;p&gt;However, once cooked up, the bacon really hit the sweet spot (not quite literally though). There was only a bit of saltiness to the taste (that good kind that you expect) and it was the first batch I was ready to make more of since everybody ate it up. Hazzah for diy recipes! The final step will be to try adding a cold smoke to this recipe, once I can cobble one together.&lt;/p&gt;
&lt;p&gt;For those keeping score at home, here’s the final “abridged” directions of the recipe. Full directions can be found &lt;a href=&quot;/yes-you-too-can-make-your-own-bacon&quot;&gt;here&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 quarts water&lt;/li&gt;
&lt;li&gt;2-3/4 c cups maple syrup&lt;/li&gt;
&lt;li&gt;1 c kosher salt&lt;/li&gt;
&lt;li&gt;1 tbsp smoked salt (optional)&lt;/li&gt;
&lt;li&gt;1 onion, cut into quarters&lt;/li&gt;
&lt;li&gt;2 sprigs fresh rosemary&lt;/li&gt;
&lt;li&gt;6 garlic cloves, peeled and smashed&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Put all of this into a large pot and bring nearly to a boil on medium high heat.&lt;/li&gt;
&lt;li&gt;Let cure/brine cool back down to room temperature.&lt;/li&gt;
&lt;li&gt;Complete submerge bacon in cure (I use ziploc bags) and place in refrigerator.&lt;/li&gt;
&lt;li&gt;Cure bacon for 3 days, rotating once per date and giving it a little rub to help the cure penetrate.&lt;/li&gt;
&lt;li&gt;Give a quick rinse to get loose brine off. Slice. Cook. Enjoy!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you use this recipe, let me know. I’d love your feedback!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Close Your Eyes By R7</title><link>https://dillieo.me/posts/development/2015-08-28-song-of-the-week-close-your-eyes-by-r7/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-08-28-song-of-the-week-close-your-eyes-by-r7/</guid><description>r7-close-your-eyes</description><pubDate>Fri, 28 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I haven&apos;t done these in a while, but man this one is great!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been a big fan of &lt;a href=&quot;http://r7.net&quot;&gt;R7&lt;/a&gt; (formerly Rubicon 7) for a while now. They do an amazing job with progressive house, techno, whatever you want to call it (I&apos;m still rather dense in this area). They do a weekly show on &lt;a href=&quot;http://di.fm/mainstage&quot;&gt;di.fm&lt;/a&gt; that I try not to miss.&lt;/p&gt;
&lt;p&gt;Anyway, they came out with a new single, called &lt;em&gt;Close Your Eyes&lt;/em&gt; and I really really like it! It&apos;s topping some of the charts, and they have a preview of it available online.&lt;/p&gt;
&lt;p&gt;https://soundcloud.com/r7duo/close-your-eyes-ep-preview&lt;/p&gt;
&lt;p&gt;Go grab a listen and then go buy it! 8^D&lt;/p&gt;
</content:encoded></item><item><title>Something Old And New Importing Wordpress Posts Into Sitefinity</title><link>https://dillieo.me/posts/development/2015-08-27-something-old-and-new-importing-wordpress-posts-into-sitefinity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-08-27-something-old-and-new-importing-wordpress-posts-into-sitefinity/</guid><description>sitefinity_logo.jpg</description><pubDate>Thu, 27 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I can&apos;t take too much credit for this, however, I made enough updates to the library that I felt it warranted a post.&lt;/p&gt;
&lt;p&gt;If you&apos;re migrating your blog from WordPress into Sitefinity, I&apos;ve taken an existing tool (major HT to &lt;a href=&quot;http://www.codemoar.com&quot;&gt;timw255&lt;/a&gt;) and modified it. I disabled some features with loading tags/metadata that caused errors. More importantly, I added the ability to have a &quot;default&quot; e-mail address, properly import the full image from the &quot;thumbnail&quot; images that WordPress typically uses, and cleaned up the summary field.&lt;/p&gt;
&lt;p&gt;It&apos;s on Github, so as they say, if you don&apos;t like what I did, fork it and improve it yourself! 8^D&lt;/p&gt;
&lt;p&gt;You can get the &lt;a href=&quot;https://github.com/Dillie-O/WordPressToSitefinity&quot;&gt;WordPress to Sitefinity tool here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Momentos</title><link>https://dillieo.me/posts/growth/2015-08-20-momentos/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-08-20-momentos/</guid><description>Momentos</description><pubDate>Thu, 20 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been out of town for about a week and the time is always so short and so long simultaneously. The long time away is doubly tough when it’s away from family. Fortunately, I’m packed up with lots of things to keep me company. Half of them are surprises that show up in my bag. I’ll be home soon my loves...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Homemade Bacon Round 3 Success</title><link>https://dillieo.me/posts/growth/2015-08-18-homemade-bacon-round-3-success/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-08-18-homemade-bacon-round-3-success/</guid><description>Bacon</description><pubDate>Tue, 18 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;They say the third time is the charm, and so it was!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I was under a deadline to have some bacon ready before I went out of town for work. Most of the recipes I found took a week or longer to cure, so they were out. So I went back to my &lt;a href=&quot;/yes-you-too-can-make-your-own-bacon&quot;&gt;first recipe&lt;/a&gt; that showed a lot of promise but made a couple small tweaks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I dropped the salt down to 1 cup (instead of 1.5 and added about 3 tbsp of smoked salt for flavor)&lt;/li&gt;
&lt;li&gt;I cured the slab for 3 days instead of 4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After a gentle rinse, partial freeze, cut and cook, we had success! The kids actually ate it up and the bacon wasn’t too salty. We could easily tweak this recipe to add a little more maple syrup to sweeten the flavor. We’re also looking to pan fry the bacon in a cast iron skillet, instead of the oven method, to see if it changes the flavor of it at all.&lt;/p&gt;
&lt;p&gt;Here’s the final recipe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 quarts water&lt;/li&gt;
&lt;li&gt;2 cups maple syrup&lt;/li&gt;
&lt;li&gt;1 c kosher salt&lt;/li&gt;
&lt;li&gt;3 tbsp smoked salt (optional)&lt;/li&gt;
&lt;li&gt;6 peppercorns&lt;/li&gt;
&lt;li&gt;1 onion, cut into quarters&lt;/li&gt;
&lt;li&gt;2 sprigs fresh rosemary&lt;/li&gt;
&lt;li&gt;6 garlic cloves, peeled and smashed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Give this a whirl and see what you think! Next up is a “paste cure” that uses a bourban and brown sugar. I can’t wait!&lt;/p&gt;
</content:encoded></item><item><title>Life Hack Cutting Cold Butter</title><link>https://dillieo.me/posts/growth/2015-08-12-life-hack-cutting-cold-butter/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-08-12-life-hack-cutting-cold-butter/</guid><description>Life Hack Cutting Cold Butter</description><pubDate>Wed, 12 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I take no credit for this! It’s all a HT to my wonderful wife, and it has helped out so many times now!&lt;/p&gt;
&lt;p&gt;Don’t you hate cutting cold butter, especially once your bagel is ready? Sure you can pull out the stick at the same time you put the bagel in the toaster, but sometimes it isn’t soft enough.&lt;/p&gt;
&lt;p&gt;Instead, put your knife over the “vent” of the toaster. It’ll get nice and warm while the bagel toasts, and cut through your butter like a lightsaber.&lt;/p&gt;
&lt;p&gt;Problem solved!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Homemade Bacon Round 2 Molasses Results</title><link>https://dillieo.me/posts/development/2015-08-10-homemade-bacon-round-2-molasses-results/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-08-10-homemade-bacon-round-2-molasses-results/</guid><description>Homemade Bacon Round 2 Molasses Results</description><pubDate>Mon, 10 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I had mentioned a couple weeks back, I’ve started &lt;a href=&quot;/yes-you-too-can-make-your-own-bacon&quot;&gt;making my own bacon&lt;/a&gt;. The first round turned out a little salty, due to curing for too long. This second round I went for a different recipe and had a different result.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This time, I tried a molasses / apple cider vinegar recipe provided by &lt;a href=&quot;http://altonbrown.com&quot;&gt;Alton Brown&lt;/a&gt; in his “&lt;a href=&quot;http://www.foodnetwork.com/recipes/alton-brown/scrap-iron-chefs-bacon-recipe.html&quot;&gt;Scrap Iron Chef&lt;/a&gt;” recipe. I cut the recipe in half since I only had half the bacon and I was a smidge short on the apple cider vinegar, but nothing that seemed like it would be an issue.&lt;/p&gt;
&lt;p&gt;After three days of curing, I pulled the slab out out, patted it dry, and gave it a slight rinse. Since I didn’t have access to a smoker right away (might have to rig the grill up one time for this) I went ahead and froze the bacon for about 30 minutes to help make it slice easier, and then cooked away (using the oven technique).&lt;/p&gt;
&lt;p&gt;The bacon didn’t turn out that good. It had what was best described as a “teryaki” taste to it. I’m not sure if being that shy on the vinegar didn’t cut the molasses taste enough, or I missed something during the curing process. Maybe the smoking is particularly important for this particular recipe, who knows. I was ready to toss the batch out, but Jen brought up a good point that we could freeze this batch, and use it for something like pork fried rice, where that flavor would be welcome. Great idea! Done and done.&lt;/p&gt;
&lt;p&gt;I was a bit sad the recipe didn’t work out, but that’s the way it rolls sometimes. Slab #3 is defrosting in the fridge, and I’ll find another cure to try on Wednesday so the family can have bacon on Saturday before my trip. It appears that Costco is still carying pork belly slabs, so if I come to a nice recipe before the end of my tests, we can continue this into the forseeable future.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Disable Windows 10 Torrent Updates</title><link>https://dillieo.me/posts/development/2015-08-07-quick-tip-disable-windows-10-torrent-updates/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-08-07-quick-tip-disable-windows-10-torrent-updates/</guid><description>DisableWin10TorrentUpdate</description><pubDate>Fri, 07 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you haven&apos;t read about it already, Windows 10 came out with a new feature that allows you to download updates from other computers, either in your local network, or on the Internet. While this is a nice idea, enabling this feature (which it is by default) effectively makes your computer a node on a bittorrent type network. I have no issues with torrents in general, but I&apos;m not too keen on the network traffic it starts to take up, nor any security ramifications there might be. Here&apos;s how to disable it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click your &quot;Notifications&quot; icon in the system tray (that looks like a speech bubble) and then select &quot;All Settings&quot;&lt;/li&gt;
&lt;li&gt;In the settings window that appears, click &quot;Update &amp;amp; Security&quot;.&lt;/li&gt;
&lt;li&gt;In the &quot;Windows Update&quot; section, select &quot;Advanced Options&quot;.&lt;/li&gt;
&lt;li&gt;In the &quot;Advanced Options&quot; section, select the &quot;Choose how updates are delivered&quot; option.&lt;/li&gt;
&lt;li&gt;Under the section &quot;Updates in One Place&quot; click the switch so that this option is turned off. This will make sure your updates come from Microsoft only, and that you aren&apos;t sharing &quot;partial updates&quot; with others.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&apos;s it. You can close the window and continue as usual.&lt;/p&gt;
&lt;p&gt;Update: Naked Security has a &lt;a href=&quot;https://nakedsecurity.sophos.com/2015/08/03/windows-10-spread-the-love/&quot;&gt;nice article&lt;/a&gt; outlining this feature and says that it&apos;s pretty safe given the cryptography used to verify the files and the list. I&apos;m still leaving it disabled for now since my VM seemed to take a little bit of a performance hit 8^D&lt;/p&gt;
</content:encoded></item><item><title>Fixed More Button Disabled Multiple Forms And Script Issues In Sitefinity</title><link>https://dillieo.me/posts/development/2015-08-03-fixed-more-button-disabled-multiple-forms-and-script-issues-in-sitefinity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-08-03-fixed-more-button-disabled-multiple-forms-and-script-issues-in-sitefinity/</guid><description>sitefinity_logo.jpg</description><pubDate>Mon, 03 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I can take no credit for these fixes, but I left enough of a dent in my desk going through them that I felt it important enough to write them out.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h3&gt;Custom Scripts Conflicting with the Editor&lt;/h3&gt;
&lt;p&gt;As we’ve been build a new site with Sitefinity, we’ve put in a lot of custom scripts. We have a custom mouseover navigation, some custom forms, and other things that you would expect in a site of this size. The problem we’ve run into is that when we load our pages into the editor to update content, the scripts are loaded as well, which sometimes interferes with the normal editor functions.&lt;/p&gt;
&lt;p&gt;Typically, we’ve taken advantage of the RadScriptManager tag, which functions almost the same as the standard.Net ScriptManager. It will do bundling/minification of your scripts and make them available as an AXD to help speed up client page loading. Our RadScriptManager block looked something like this:&lt;/p&gt;
&lt;p&gt;After some discussions with Telerik about the issue, the solution was to strip out all of our custom scripts from the RadScriptManager and have a separate script, that we put at the top of our master template, which runs during the Pre_Render event and looks something like this:&lt;/p&gt;
&lt;p&gt;What this script does is detects if we’re loading the design mode for the page or not. If we aren’t, go ahead and add our custom scripts to the RadScriptManager before it starts to do it’s compilation. Otherwise nothing happens, and the RadScriptManager will load the core Telerik scripts as outlined in our RadScriptManager.&lt;/p&gt;
&lt;p&gt;Overall quite simple and helpful. Ideally Telerik will add an attribute to the RadScriptManager to allow us to specify these things in there, since there are already other custom atttributes available.&lt;/p&gt;
&lt;h3&gt;Multiple Forms&lt;/h3&gt;
&lt;p&gt;Generally speaking, in an ASP.Net WebForms application, you can’t have multiple forms on the page. This is because ASP.Net uses the single form there to handle a varitey of postback actions for the various buttons and other elements on the page. However, we were integrating with another in-house application and they had a custom form that we would need to submit to from our page. To handle this, I added another hidden form above the main body form with the parameters we needed, and setup some Javascript to submit to that form at the proper time. This worked just fine.&lt;/p&gt;
&lt;p&gt;A little while after this update was in place, we noticed that when we went into the page designer, that the “More” button that is used for advanced properties and other features of the various objects in a page was no longer working. This is what lead to the script issue mentioned above, but even this didn’t fix the issue. There were some discussions with Sitefinity tech support, but they weren’t much help, other than slowly adding/removing components of your template until things started working properly.&lt;/p&gt;
&lt;p&gt;One of our front end gurus jumped in on this and after about half a day (I think, probably longer) he finally tracked down the solution.&lt;/p&gt;
&lt;p&gt;Instead of adding the “onclick” event to the more button in the code, a more popular means nowdays is to use a jQuery selector once the document is ready to “wire up” an element to its click event. This allows you to wire up multiple items that are the same in one command, instead of multiple, and also helps abstract some of the functional work from the presentation work. This is all a great idea.&lt;/p&gt;
&lt;p&gt;The problem we ran into was that the Sitefinity code was using what I was told was a “flimsy selector”. The selector that was used to find and attach the click event was assuming that there was only one form on the page and simply selecting the first form element it came across. In our case, it was selecting our hidden form, looking for the sfMoreOptions class, and finding none it simply failed to attach an event. Since this wasn’t an error per-se, simply nothing to wire things up to, the code moved on without displaying an error.&lt;/p&gt;
&lt;p&gt;Moving our custom form to the bottom of the template, after the master form, fixed this up really quick.&lt;/p&gt;
&lt;p&gt;Sometimes it’s truly amazing how so much work can go into simple fixes, but that’s the nature of our work 8^D&lt;/p&gt;
&lt;p&gt;That’s a couple more notes from the Sitefinity battleground worth nothing for future use.&lt;/p&gt;
</content:encoded></item><item><title>Windows 10 Upgrade Basics What You Need To Know</title><link>https://dillieo.me/posts/development/2015-07-30-windows-10-upgrade-basics-what-you-need-to-know/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-07-30-windows-10-upgrade-basics-what-you-need-to-know/</guid><description>Windows 10 Upgrade Basics What You Need To Know</description><pubDate>Thu, 30 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, Windows 10 was released. I’ve been working with it through the preview stage and I think Windows 10 has covered a lot of issues that gave Windows 8 such a bad wrap. One very important feature is that Microsoft is offering a FREE upgrade to anybody with Windows 7 or Windows 8.1 for the next year. I finished the upgrade yesterday and here are a few essential things you should know.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Skip the “In App” Update&lt;/h3&gt;
&lt;p&gt;While I’ve seen the tray icon to reserve my free copy of Windows 10, that isn’t the only means of getting your free upgrade. Instead, go &lt;a href=&quot;https://www.microsoft.com/en-us/software-download/windows10ISO&quot;&gt;download the ISO&lt;/a&gt; file (which is essentially the DVD) from the Microsoft site. When you double click on the file, it will “mount” the file just as if you were putting a DVD into your computer and will run the upgrade process, downloading any additional updates you may need along the way.&lt;/p&gt;
&lt;p&gt;There are several advantages to this. If you have multiple computers you need to update, you’re only doing a massive download once (it’s nearly 4 GB in size). Simply copy the ISO to a USB key, copy it to another machine, and start another upgrade. In addition, this is a complete Windows 10 disc, meaning if you want to do a fresh install, you can boot this ISO off a USB key and install that way. You’ll need a Windows 10 product key if you do it this way. Having a full image gives you a lot more options down the road.&lt;/p&gt;
&lt;h3&gt;Roll Back if You Don’t Like It&lt;/h3&gt;
&lt;p&gt;After upgrading, I started digging around the recovery settings and found this nice screen.&lt;/p&gt;
&lt;p&gt;After doing a little more reading online, I found out that the Windows 10 upgrade process is a little different from the past. The upgrade is effectively giving you a clean install of Windows 10 by moving all the old operating system files to a separate folder, putting in the new operating system, and then merging in any documents or applications you have installed, if you choose to keep them. This is a lot better than the “patchy” upgrades that I’ve gone through (and now completely avoid) in the past.&lt;/p&gt;
&lt;p&gt;There’s another perk to this. For the first month after you upgrade, you can click that button to “go back” to your previous version of windows. I won’t be doing this myself, but it will reverse the process, and you can be back to the way you were before, with no issues.&lt;/p&gt;
&lt;p&gt;EDIT: If you are happy with Windows 10 and don&apos;t plan on rolling back, you can delete the old Windows 8 files and save yourself about 15GB of space. Details on how to do that are found &lt;a href=&quot;http://blog.laptopmag.com/delete-windows-old-folder&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A Clean Install Isn’t Available - Almost&lt;/h3&gt;
&lt;p&gt;My initial plan was to grab the ISO and do a fresh install of Windows 10, expecting to be able to use my existing Windows 8.1 key or something that acknowledged the free upgrade. Unfortunatley this was not possible. After installing, I tried to pull up an old tool that would display your activation key, expecting to have a “new” Win10 key that I had heard about, but that dind’t work either. Since the free upgrade is only available for a year, I suspect a clean install along these lines will not be possible.&lt;/p&gt;
&lt;p&gt;However, as part of the new system recovery system, there is a way to do a “reset” of Windows 10 to a pure install and choose not to recover any of your files or apps that you have installed. This will give you a “clean” environment in which to work with, which could be just as close to the real deal.&lt;img src=&quot;@assets/images/posts/2015-07-win10reset.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Go Upgrade!&lt;/h3&gt;
&lt;p&gt;I’ve been quite happy with Windows 10, both during the preview phase and now that the full product is out. I’m really excited to see how the “convergence” features work when you’re swapping between tablet and laptop mode. Overall I think the sweet spot is there between the “classic” desktop/start menu experience and the benefits of the “metro” experience with live tiles. Only time will tell.&lt;/p&gt;
&lt;p&gt;Having issues with the upgrade? Leave a note and hopefully we can work through it or get others to chime in.&lt;/p&gt;
</content:encoded></item><item><title>Yes You Too Can Make Your Own Bacon</title><link>https://dillieo.me/posts/development/2015-07-28-yes-you-too-can-make-your-own-bacon/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-07-28-yes-you-too-can-make-your-own-bacon/</guid><description>Yes You Too Can Make Your Own Bacon</description><pubDate>Tue, 28 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;UPDATE: Check out the refined (and successful) version of this recipe &lt;a href=&quot;/homemade-bacon-round-3-success&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When Costco has a sale on pork belly, it’s hard not to consider making your own bacon. 11.4 pounds of bacon sets us back $24.80, or roughly 2.18 per pound is an amazing deal. However, you can&apos;t just cut up some slices, cook, and eat. You need to cure the bacon first. You’d be surprised that this isn’t as hard as you think!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Above you see a lovely cured bacon. Let’s outline how easy it is to get there...&lt;/p&gt;
&lt;h3&gt;Buy the pork belly&lt;/h3&gt;
&lt;p&gt;The first step is to buy your pork belly. You don’t have to get a huge 11.4 slab like I did. If you go to your local butcher, you should be able to get a nice 2 or 3 pound slab for a good price. I took my 11 pounds and cut it up into roughly 2 pound slabs. I kept one package out and put the rest in the freezer for future use.&lt;img src=&quot;@assets/images/posts/2015-07-1_20150722_030848001_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Take off the skin&lt;/h3&gt;
&lt;p&gt;Don’t forget to take the skin off the bottom of the pork belly. Unless you’re really lucky, or your butcher takes care of it for you, the skin will be there. There’s a delicate balance between taking off the skin without taking off too much fat (which you want to keep). From what I’ve found there’s no easy way to do it. Just get a really sharp knife and slowly cut and pull away from the slab. I didn’t get a picture of this step, but this is roughly what it looks like as you’re going along.&lt;img src=&quot;@assets/images/posts/2015-07-trimbacon.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Wet cure the bacon&lt;/h3&gt;
&lt;p&gt;After digging around the internet a bit, I found that there are two ways to cure bacon, a wet and a dry way. The dry way uses a lot of seasonsings, and takes additional care to not make “hot spots” on your slab. The easier way is to use a “wet cure” approach, which is essentially making a brine for your pork belly to soak in. I found a couple great recipes, adjusted a little bit for some personal preferences, and came up with the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 quarts water&lt;/li&gt;
&lt;li&gt;2 cups maple syrup&lt;/li&gt;
&lt;li&gt;1 3/8 c kosher salt&lt;/li&gt;
&lt;li&gt;1/8 c smoked salt (use more kosher salt if you don’t have this)&lt;/li&gt;
&lt;li&gt;6 peppercorns&lt;/li&gt;
&lt;li&gt;4 bay leaves&lt;/li&gt;
&lt;li&gt;1 onion, cut into quarters&lt;/li&gt;
&lt;li&gt;2 sprigs fresh rosemary&lt;/li&gt;
&lt;li&gt;5 garlic cloves, peeled and smashed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Put all of those ingredients in a large pot and bring it to a boil over medium heat. As soon as it starts to boil, take it off the heat and let it cool fully. Pour the brine through a strainer so that just the liquid remains. Now add the slab to the brine. I put it all in a freezer bag, though you could use a casserole dish with some saran wrap or maybe even a large tupperware with a lid. Put this in the refrigerator.&lt;img src=&quot;@assets/images/posts/2015-07-20150724_141704985_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Wait and massage&lt;/h3&gt;
&lt;p&gt;Let your pork belly sit for three days. Every day, you’ll want to massage some of the brine into the pork belly, and flip it over if you’re having “floating” issues in the bag, like I was.&lt;/p&gt;
&lt;h3&gt;Rinse, cut and cook!&lt;/h3&gt;
&lt;p&gt;After three days, pull your pork belly slab out of its brine. Give it a quick rinse under cold water to get any excess salt off of the outside of the meat. You’ll see the beautiful darkened color of the brine has soaked into the meat.&lt;img src=&quot;@assets/images/posts/2015-07-1_20150728_135651413_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now cut, cook, and eat! From what I’ve read, the best way to cut your bacon is to do so when it is really cold, or slightly frozen, much like chicken breasts. I couldn’t wait that long, and the bacon was still pretty cold, so I cut the slab in half (it’s longer than it looks) and cut off about 10 slices.&lt;/p&gt;
&lt;p&gt;My preferred method of cooking is to line a cooking sheet with foil and put a cooling rack on top of it. I then put the slices on top of the cooling rack and place it into a cold oven. I set the temperature for 400 degrees and set the timer for 15 minutes. Depending on the thickness of your slices, it may take longer than this. Once you’re done put your bacon on to some paper towels to dry and cool. Then eat!!!&lt;img src=&quot;@assets/images/posts/2015-07-20150728_144941583_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;p&gt;Holy cow this was tasty! This bacon is nice and thick. It’s not too chewy (like when your bacon is all fat) but it is far from those thin pieces that crumble and have no flavor. The rosemary adds an amazing dimension to the bacon I haven’t tasted before. The smoked salt added some smokiness to the flavor without requiring me to fire up the grill for an hour.&lt;/p&gt;
&lt;p&gt;The one thing that went wrong was that the bacon was too salty. I mentioned above curing the bacon for 3 days. I actually did 4, based on reading various recipes. I think 3 days would be perfect for this. Additionally, I didn’t do the quick rinse on the slab that was cooked, but I did on the leftover slab I have. I’ll make sure to do a followup post once I go through this again and verify the results. If you try this recipe out, let me know how it works for you!&lt;/p&gt;
</content:encoded></item><item><title>Getting Bamboo Build Notifications In Slack Using Zapier</title><link>https://dillieo.me/posts/development/2015-07-23-getting-bamboo-build-notifications-in-slack-using-zapier/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-07-23-getting-bamboo-build-notifications-in-slack-using-zapier/</guid><description>Getting Bamboo Build Notifications In Slack Using Zapier</description><pubDate>Thu, 23 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://zapier.com/&quot;&gt;Zapier&lt;/a&gt; to the rescue again!!! We’re using the &lt;a href=&quot;https://www.atlassian.com/software/bamboo/&quot;&gt;Bamboo&lt;/a&gt; continuous integration platform that Atlassian provides to verify our unit tests are running before we submit pull requests. With 5 developers on a project, each touching different aspects of the code, having a solid unit test foundation is key. While “cloud” bamboo hosting has a variety of notification options, posting to a Slack channel is not one of them. However, this trick will get you running in no time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I went into a little more detail about setting up Zapier in a &lt;a href=&quot;/getting-appharbor-build-messages-in-slack-using-zapier&quot;&gt;previous post&lt;/a&gt;, so I’m going to keep this post a little more abbreviated and outline the structure, and you should be able to fill in the rest.&lt;/p&gt;
&lt;h3&gt;The Recipe&lt;/h3&gt;
&lt;p&gt;For this integration we’re using a Zapier Email message as a trigger, which will then post to our Slack channel.&lt;/p&gt;
&lt;h3&gt;Zapier Email&lt;/h3&gt;
&lt;p&gt;Bamboo allows you to send build notifications to e-mail addresses that are not users registered in the system. Zapier will give you a free e-mail address to send those messages to. Use the “Zapier Email” trigger option and give it a descriptive name, or use the default. There’s a handy copy button to copy the e-mail address to your clipboard. Do this and then click the “next” button to get ready to test things.&lt;/p&gt;
&lt;h3&gt;Configure Bamboo&lt;/h3&gt;
&lt;p&gt;Back in Bamboo, go to your project settings and select the notifications tab. I decided to have all build statuses (pass and fail) go to my Zapier e-mail address. That was it. At this point, you’ll want to manually trigger a build so that the Zapier has some content to work with. Depending on your project, this may take a minute to complete.&lt;/p&gt;
&lt;h3&gt;Finalize and Test&lt;/h3&gt;
&lt;p&gt;Once the build is done, go back to Zapier and use the test feature. It’ll show you the contents of the e-mail message stripped out into various parts. The options aren’t quite as robust as other zaps for what goes into the notification. I wound up using the “stripped text” option since it had the core results as well as the link to the actual build, which slack will convert to a clickable link. Click the final test button and voila, your build message is posted to your slack channel.&lt;/p&gt;
&lt;h3&gt;Be Fruitful and Build/Test/Deploy!&lt;/h3&gt;
&lt;p&gt;That’s all there is to it. While Bamboo can send me individual notifications, having these get pushed into our team Slack channel allows us to communicate as a team a bit more. Maybe somebody else can jump in to see why the build failed and can fix it really quick, or I might need to merge in a successful build that I wasn’t on the notification list for. It’s quite handy.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Download Telerik Sitefinity Thunder 1372</title><link>https://dillieo.me/posts/growth/2015-07-20-quick-tip-download-telerik-sitefinity-thunder-1372/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-07-20-quick-tip-download-telerik-sitefinity-thunder-1372/</guid><description>quick-tips.jpg</description><pubDate>Mon, 20 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I hit a snag this morning. In was in Visual Studio and notified that the Sitefinity Thunder plugin had an update available. Typically updates are good so I went ahead and updated. Oy, not good. It broke my connection with my existing server. It turns out that you have to update the server version as well, which is something we can&apos;t do at this point in time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To add insult to injury, the only way to get the Thunder Visual Studio Plugin is through the Visual Studio Extensions site and they don&apos;t offer a &quot;previous version&quot; download like you can find with NuGet or other package management tools. Fortunately God was looking out for me and I had a separate copy of the.visx file sitting in my downloads folder for some reason. After uninstalling Thunder, existing Visual Studio, and installing this, I was up and running again!!! If you need a copy, you can grab it &lt;a href=&quot;http://1drv.ms/1RKqaUN&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Texas Vacation 2015</title><link>https://dillieo.me/posts/growth/2015-07-16-texas-vacation-2015/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-07-16-texas-vacation-2015/</guid><description>Texas Vacation 2015</description><pubDate>Thu, 16 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been nearly a month since our big Texas vacation, but I’ve been busy enough that it took me a little bit to collate all the photos together. Here are a few of my favorites...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;img src=&quot;@assets/images/posts/2015-07-20150614_120442149_ios.png&quot; alt=&quot;&quot; title=&quot;Carriage ride...&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-07-20150614_120706578_ios.png&quot; alt=&quot;&quot; title=&quot;Love...&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-07-20150618_180335666_ios.png&quot; alt=&quot;&quot; title=&quot;Old Town Gainesville&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can see the entire highlight album &lt;a href=&quot;https://flic.kr/s/aHskghWv5A&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Unboxing And Initial Review Acurite 2032Crm Pro Weather Station</title><link>https://dillieo.me/posts/growth/2015-07-14-unboxing-and-initial-review-acurite-2032crm-pro-weather-station/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-07-14-unboxing-and-initial-review-acurite-2032crm-pro-weather-station/</guid><description>Unboxing And Initial Review Acurite 2032Crm Pro Weather Station</description><pubDate>Tue, 14 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While I’m no meteorologist, I’ve always been a bit of a weather junkie. I love tracking the conditions of the moment, seeing how they affect the weather, and even taking a stab at forecasting how things will be for tomorrow. However, I’ve never had a weather station in order to track things at my house, until now. Thanks to some early birthday money, I’m now marking an item off my bucket list and tracking my weather with an AcuRite 5-in-1 Pro Weather Station. Here’s the initial unboxing and thoughts.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This lovely box showed up on Friday. The 5-in-1 Pro tracks temperature, barometric pressure, wind speed, wind direction, and rainfall in one handy sensor unit. The display has a color panel with LCD numbers, plus a USB connection to it if you want to connect to a computer and upload your data to a cloud site if your choice.&lt;/p&gt;
&lt;p&gt;The trickiest part about installation is finding a place to install the sensor. Generally speaking you want to place the sensor at least 5 feet off the ground, and have it in a spot where the solar battery can point south and you can have it free from trees or direct solar reflection that can affect the temperature values. Fortunately for me, part of my deck is covered and the roof spot has a nice open area in which to install things. Install the batteries into the sensor and make sure the sensor and the display unit are set to the same broadcasting channel.&lt;/p&gt;
&lt;p&gt;Simply drill the mounting pole into the base, and mount the sensor on the pole. You’ll want to make sure the solar panel is exposed to the south and that the bead level on the top is in the center. Then you add a couple screws to secure the sensor to the pole. I was able to get this one in about 20 minutes.&lt;img src=&quot;@assets/images/posts/2015-07-img_20150711_174427.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-07-2_1_20150712_005307218_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once that is done, plug in your display unit and give it a few minutes. Soon the display unit will start getting data from the sensor.&lt;img src=&quot;@assets/images/posts/2015-07-20150712_005440158_ios.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That’s all there is to it!!!&lt;/p&gt;
&lt;p&gt;Currently the forecasting is in “learning” mode where it will take all of the local data that it collects and after two weeks will be able to start forecasting the local weather within 12 to 24 hours. After a month they say it is pretty well established. My favorite features are the ticker at the bottom, which displays various weather messages and statistics (such as high/low temp/wind/rain/etc. as well as the moon cycles. I find myself checking out the wind speed and how it affects the “feels like” display constantly. I missed the rainstorms we had last week, but I’m hoping the monsoon rolls through again soon to check the rain collection. 8^D&lt;/p&gt;
&lt;p&gt;Some of the online reviews have complained about the LCD panel not being a true color LCD and just backlit color plastic. In my opinion I find the display quite clear and there’s no issues whatsoever. My temperature readings seem a little bit higher than some of the other weather underground stations in town. However, my house is on a hill which is a bit more exposed, so that could account for the warmer temperatures, especially in the afternoon. Getting a simple thermometer and placing it there will help me verify. If the numbers are off, there is a nice calibration feature I can use.&lt;/p&gt;
&lt;p&gt;I’ll follow up in a month or so once calibration is complete and we can really see things in action. If get some bonus bucket list items, I’ll pick up a Raspberry Pi and pull the data from the display unit and get my very own “circle” on the weather underground site. Here’s hoping!!!!&lt;/p&gt;
</content:encoded></item><item><title>Sunsets</title><link>https://dillieo.me/posts/growth/2015-07-10-sunsets/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-07-10-sunsets/</guid><description>Sunsets</description><pubDate>Fri, 10 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m answering &lt;a href=&quot;http://talk.desk.pm/t/daily-post-7-10-2015/2023&quot;&gt;my own question&lt;/a&gt; today, but I’ve always been more parital to sunsets than sunrises. Admittedly I have an advantage of getting a great view of them from my deck (or roof) every day. For me, they allow me to reflect on what was done, and what can be done tomorrow. Sunsets remind me of another day accomplished, of uncountable things, little and big, that I am grateful for. They give me peace.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Getting Appharbor Build Messages In Slack Using Zapier</title><link>https://dillieo.me/posts/development/2015-07-09-getting-appharbor-build-messages-in-slack-using-zapier/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-07-09-getting-appharbor-build-messages-in-slack-using-zapier/</guid><description>Getting Appharbor Build Messages In Slack Using Zapier</description><pubDate>Thu, 09 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I’ve been working through my &lt;a href=&quot;http://prayerjournal.apphb.com&quot;&gt;prayer journal&lt;/a&gt; app, one thing I’ve been working on is streamlining my internal processing when it comes to watching my code builds and other things. To do so, I’ve started using &lt;a href=&quot;http://slack.com&quot;&gt;Slack&lt;/a&gt;, a great (and free) communications tool that has tons of hooks for various platforms. One of the things I wanted was to track the build status of my code deployments from BitBucket to AppHarbor. Sadly there aren’t any “predone” recipes out there. However, thanks to some details from a &lt;a href=&quot;http://stackoverflow.com/questions/29513686/appharbor-slack-integration&quot;&gt;StackOverflow&lt;/a&gt; question, this is a lot easier than it seems.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;We can get from AppHarbor to Slack thanks to a great online service called &lt;a href=&quot;http://zapier.com&quot;&gt;Zapier&lt;/a&gt;. If you’re familiar with IFTT (If This, Then That), Zapier is a similar service. It allows you to connect various applications and services together in ways previously unavailable, thanks to wide availability of APIs that are out there. We’ll assume you already have an AppHarbor application in place and running, as well as a Slack instance setup. I created a channel in Slack called “builds” that I want all of my build messages to go to. Here’s what you do next.&lt;/p&gt;
&lt;h3&gt;Start a New Zap&lt;/h3&gt;
&lt;p&gt;The first thing to do is to log in to Zapier and start a new Zap. Click the “Make a Zap!” link at the top of the page or the button on the right in your dashboard.&lt;img src=&quot;@assets/images/posts/2015-07-apphb_2_slack_step1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Setup Triggers/Actions for the Zap&lt;/h3&gt;
&lt;p&gt;AppHarbor has the ability to publish build status messages to wherever you want through the use of “Service Hooks.” These are simple HTTP POST requests that have the information we need. Fortunately, Zapier has the ability to listen to these items through their own “Web Hooks”. In the “Choose a Trigger” dropdown list use the search feature to type in “WebHook” and select the “WebHook by Zapier” option.&lt;img src=&quot;@assets/images/posts/2015-07-apphb_2_slack_step2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once selected, you’ll see a “Choose Trigger…” option. Click that and choose the “Catch Hook” option.&lt;img src=&quot;@assets/images/posts/2015-07-1_apphb_2_slack_step3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;To complete the process, we need to select the “Slack” option in the “Choose an Action app…” option and use the “Send new Message” action. Once those are selected, we can click the “Continue” button in Zapier.&lt;/p&gt;
&lt;h3&gt;Add Service Hook to AppHarbor&lt;/h3&gt;
&lt;p&gt;Once you click the “next” button, you’ll be given the webhook URL that Zapier will listen to. Copy that URL. Now log into AppHarbor and select your application. On the side menu is a “Service Hooks” section. Click the “Add Service Hook” link and paste in the URL you have. Click the “Create Service Hook” button. When all is said and done, your screen should look something like this.&lt;img src=&quot;@assets/images/posts/2015-07-apphb_2_slack_step4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once this is complete, you can go back to Zapier and click the “Continue” button.&lt;/p&gt;
&lt;h3&gt;Configure Slack Channel Options&lt;/h3&gt;
&lt;p&gt;In the next section, you’ll be asked to connect to a Slack account. Once you’ve logged in and authorized Zapier, your account will be in the drop down list. Make sure it is selcted and click “Continue.&quot;&lt;/p&gt;
&lt;p&gt;For the “Filter” section, we want to catch all events by our Web/Service Hook, so we’ll simply click the “Continue” button to move forward.&lt;/p&gt;
&lt;p&gt;The next section outlines what channel and what message to publish to the channel. Since I’ve already created a build channel, I’m simply going to add #builds to this field.&lt;/p&gt;
&lt;p&gt;The message is where the real magic occurs. The Zapier webhook will look at a recent action to provide these fields, so we need to push some code to our repository really quick to get that. I simply modified a readme file and pushed it up to my repostitory. Once that is done, you can click on the “Insert Fields” button to get a list of fields available.&lt;img src=&quot;@assets/images/posts/2015-07-apphb_2_slack_step5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By doing this, I decided to craft my message as&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Build {Build ID} ({Build Commit Message}) from AppHarbor: {Build Status} - {Build URL}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I like to have the commit message in there as reference point for the code. I use the Build URL as well so that if the build fails, I can click the link to get the report of what went wrong.&lt;/p&gt;
&lt;p&gt;The rest of the fields here are optional. I did track down an AppHarbor icon online and added it just for some added “cool factor” in my slack channel. Here’s what my final settings look like:&lt;img src=&quot;@assets/images/posts/2015-07-1_apphb_2_slack_step6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Scroll down to the bottom and click the “Continue” button.&lt;/p&gt;
&lt;h3&gt;Test the Workflow&lt;/h3&gt;
&lt;p&gt;Now we get to click the “Test” button to have some sample data passed through. Go ahead and click on it. If you’re running Slack, you’ll see your message:&lt;img src=&quot;@assets/images/posts/2015-07-apphb_2_slack_step7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Finish Things Up&lt;/h3&gt;
&lt;p&gt;Finally, click the “Continue” button and give your Zap a name. I named mine “AppHarbor Build Slack Notification” and clicked the “Turn On” button. Once that’s done, you’ll see the zap on your dashboard and you can turn it on and off at will.&lt;/p&gt;
&lt;p&gt;There you have it! Get your AppHarbor build messages over in your Slack channel with little hassle and save a lot of time!&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Review Man Enough By Nate Pyle</title><link>https://dillieo.me/posts/growth/2015-07-07-review-man-enough-by-nate-pyle/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-07-07-review-man-enough-by-nate-pyle/</guid><description>Review Man Enough By Nate Pyle</description><pubDate>Tue, 07 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Masculinity has struggled lately with what it’s definition is. From the entrepreneurial giant, to the rugged lone outdoor hunter, to the athleticly infused extreme sports junkie, to the effiminate “metrosexual”, men often don’t know who they are or what they should be. They often play the part of what they think they should be. Author Nate Pyle was in this predicament. As a young pastor, he admits that he didn’t really “feel” like a man until he was 31 years old, and that only occurred when he realized that he spent too much time putting on the &quot;good man&quot; show and was lonely as a result. He makes a great insight that “…more often than not, defined by what it is not rather than by what it is.&quot; &quot;Man Enough: How Jesus Redefines Manhood&quot; is a result of this journey, outlining our misconceptions and pointing us back not to a “true man”, but a “true human”, who is Jesus.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;What I really like about this book is how Pyle takes a historical look at masculinity through the ages, showing how it has changed over time. It was really interesting to note how the definition of masculinity began to shift more as a result of the American revolution. “Rather than being defined by owning land and embodying certain values, a man began to be seen as someone who was independent, useful, heroic, and industrious.” This is where the term “breadwinner” started to gain traction, as well as the stigma that if you can’t provide for your family, then you aren’t a man. The weight of this view can be particularly heavy on the stay at home dads out there today. Pyle also goes back to the bible and notes how we often favor the “strong” heroes, like David. In doing so, we often forget that it wasn&apos;t Esau, the strong, hairy, older brother that spent the day outside hunting, but Jacob, the one who stayed at home all day with his mother, whom God chose to build his nation through.&lt;/p&gt;
&lt;p&gt;So how are we to identify what manhood is? Pyle takes a step back from manhood by first looking at biblical passages that identify the traits of elders outlined by Paul: above reproach, faithful to his wife, temperate, self-controlled, respectable, hospitable, gentle, good managers of the family, lovers of good, upright, holy, diciplined, holding firmly to the truth of faith. Pyle notes that most of these characteristics are virtues women should seek to have as well. Additionally, how often do we celebrate the gentleness of a man? Pyle doesn’t do this to call into question what biblical manhood is, or to suggest a “genderless Christianity.” “Rather, my hope is that men and women are encouraged to grow into these good and right biblical characteristics apart from a culturally constructed gender ideal. For example, is there room in the church for a man to be gengle in a way that is true to his personality without being seen as an effeminate version of a man? Can a man hate violence and be a pacifist and still be considred a man in the church? Can a man not fight back without having to prove in other ways that he is a man? Can a man enjoy the arts, be moved to tears by music, be present to his emotions, and soft with his words and still be thought of as a man?&quot;&lt;/p&gt;
&lt;p&gt;The answer is yes, and all of this points back to Jesus. Jesus is more than a “man’s man” but the perfect example of what we should be as humans. Jesus called the children to him. Jesus turned over the tables (not in uncontrollable rage, but with controlled anger) in the temple. Jesus took up his cross to die for us. Jesus forgave us as he hung in agony with death approaching. Pyle points back to an idea that C.S. Lewis had about “dressing up” like Jesus. By acting as Jesus did, “prentending” to be like him early on when we don’t know better, we slowly become like Him, because the Holy Spirit is transforming us. We become the humble servant. We become willing to lay down our life for others. We become fully human. We embody all of the virtues Jesus has, even those that seem “not manly” in today’s standards.&lt;/p&gt;
&lt;p&gt;In the end, I don’t think Nate Pyle gives us a straight definition of what manhood is. If anything, he shows us that our manhood is found in being like Jesus. This gave me a lot of food for thought. Some things I had heard before, but a lot of things, especially the preconceived notions I had in my own mind about what made me a man, were challenged and left me thinking on what characteristics I am embodying in my own life. I think this paragraph describes it best:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Saying Jesus defines what it means to be a man is easy; actually defining manhood in light of Jesus is harder. Because which Jesus do we define men by? The warrior Jesus of Revelation 19 who figts his enemies by being willing to suffer at their hands? The servant Jesus who kneels down to wash feet? The whip-wielding Jesus who stands for truth and clears the temple? What about the Jesus who likens himself to a mother hen an weeps unashamedly over Jerusalem? Do we define masculinity by all of these? In a word — yes. Which makes definining manhood, according to Jesus, ridculously complex. Which might be the point.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This book provides more of a framework than a definition of what manhood is. It will give you the guidelines to think more about your own preconceptions and what may need to change. I definitely recommend it. I was fortunate to receive a preview copy of this book, but it will be available on Amazon at the end of September. You can pre-order it from &lt;a href=&quot;http://www.amazon.com/Man-Enough-Jesus-Redefines-Manhood/dp/0310343372&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Outputting Variables In Phpunit</title><link>https://dillieo.me/posts/development/2015-07-03-quick-tip-outputting-variables-in-phpunit/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-07-03-quick-tip-outputting-variables-in-phpunit/</guid><description>Quick Tip</description><pubDate>Fri, 03 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been running through PHPUnit a bit lately, and sometimes I need to track some of the variables as I&apos;m going through the tests. I&apos;ve found two tricks that have helped...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;var_dump and --debug&lt;/h3&gt;
&lt;p&gt;If you add a var_dump($variable) to your unit test, you can use the --debug flag when running the unit tests to see the var_dump in the output. This is particularly helpful with arrays or objects.&lt;/p&gt;
&lt;h3&gt;stderr output&lt;/h3&gt;
&lt;p&gt;If you need to output a single variable, or sometimes just a basic message, you can write to stderr, which in turn will push the message out to the screen&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fwrite(STDERR, print_r(&apos;Message&apos;, TRUE));&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s it. Oh, and I like to use the --tap option for a little more verbose output when running the tests.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Doctor Who Is Forever</title><link>https://dillieo.me/posts/growth/2015-06-30-doctor-who-is-forever/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-06-30-doctor-who-is-forever/</guid><description>Doctor Who Is Forever</description><pubDate>Tue, 30 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In an unexpected change of events during the morning, I wound up hauling a piano in my truck to my house. In an even bigger twist, I wound up giving a nice elderly man (I think he said he was 72) a ride home since he lived maybe a block from me...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;As I was walking with the man over to the trail that would lead him home, he notes my shirt and says, “Oh are you a doctor?” I replied, “No, but I love this TV show on called &lt;em&gt;Doctor Who&lt;/em&gt;. Have you heard of it?&quot;&lt;/p&gt;
&lt;p&gt;He thinks for a moment and says, “Oh, I think so, the guy with the scarf, right?&quot;&lt;/p&gt;
&lt;p&gt;“Exactly!” I reply and smile.&lt;/p&gt;
&lt;p&gt;I hope the show goes for another 50 years 8^D&lt;/p&gt;
</content:encoded></item><item><title>Inbox Mayhem Subscription Check</title><link>https://dillieo.me/posts/development/2015-06-26-inbox-mayhem-subscription-check/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-06-26-inbox-mayhem-subscription-check/</guid><description>Inbox Mayhem Subscription Check</description><pubDate>Fri, 26 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I play a little game with myself when I’m on vacation. I don’t touch my e-mail. Not one bit. It helps that for most of the time I’m in an area where I get no cell reception, and I make sure not to connect to Wifi later. The result: 541 e-mails waiting for me when I got back home. The saddest part of this was that 97.38256% &lt;em&gt;[umm yeah, highly calculated numbers there]&lt;/em&gt; of those e-mails were ones I never read anyway.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Once I logged in and started filtering through these e-mails, nearly ALL of them were for ads or subscriptions or newsletters I never bothered reading in the first place! I had gotten into the habit of simply clearing them out in the morning, or letting Google filter it off to the “Promotions” box that is largely ignored.&lt;/p&gt;
&lt;p&gt;It’s taken me a week, but I’ve been slowly going through and unsubscribing to nearly every one. Yes, that semi-weekly list of tech articles that I thought I liked went by the wayside. When I thought about it, I clicked on all of two articles over the course of the year. Besides, I have a couple of aggregator news feeds for tech articles that I read far more often. That e-mail with discounted or free Kindle books worked great once or twice, but again, it was once or twice and not worth the daily hassle. I’ve started using &lt;a href=&quot;https://www.goodreads.com/user/show/42349498-sean-patterson&quot;&gt;GoodReads&lt;/a&gt; a bit to help track some of that down. Oh, and the e-mails to get discounts on pizza delivery that tempt me twice a week or so had to go away as well. If I’m really hungry and want a discount, I’ll look online then, &lt;a href=&quot;http://www.retailmenot.com&quot;&gt;RetailMeNot&lt;/a&gt; seems to have a good aggregate of coupons.&lt;/p&gt;
&lt;p&gt;I woke up this morning and went through my routine: shower, coffee, devotional time, e-mail check. I froze for a minute because I had no new e-mail and it wasn’t even a weekend. Then it dawned on me that my “e-mail check” was really a “clean out all the junk stuff that I don’t read anyway” task. It felt nice. I could move on to other things. Hopefully next vacation my e-mail count will be far less than this year.&lt;/p&gt;
&lt;p&gt;If you haven’t done so lately, take a moment to look through all of those “subscriptions” you get and think about how often you really read/utilize them. It may be worthwhile to clean out the mental and digital clutter they give.&lt;/p&gt;
</content:encoded></item><item><title>Family Road Trip Tips</title><link>https://dillieo.me/posts/development/2015-06-24-family-road-trip-tips/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-06-24-family-road-trip-tips/</guid><description>Family Road Trip Tips</description><pubDate>Wed, 24 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week I spent an amazing vacation with my family out in the Texas country. Part of that vacation included driving there: roughly 14 hours of road trip adventure. Some people cringe at spending that much time in the car, but I rather enjoy it. Here are a few things that make our trip more fun and easier.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Music&lt;/h3&gt;
&lt;p&gt;This is a great time to sneak in some new music for the kids. Amidst some of their favorite songs I also snuck in some Chick Corea, B.B. King, U2, Louie Armstrong, Gustav Holst, YoYo Ma and a few others. They actually enjoyed some of it too 8^D. We also discovered that 6GB worth of data on your cellular network can get burned up pretty fast when you’re streaming constantly, so make sure to download it to your phone or MP3 player instead 8^D.&lt;/p&gt;
&lt;h3&gt;Food&lt;/h3&gt;
&lt;p&gt;The ice chest is your best friend. Load it up with some durable snacks, like granola bars, chips, and dried fruit/nuts to save from spending lots of money at gas stations (though we enjoy the occasional goodie break along the way). We didn’t think of this until the return trip, but purchasing a 24 back of water bottles at the grocery store costs the same as 5 water bottles at the gas station. Buy early, cool in the ice chest, and save some money too. With the water and snacks, you’re typically just grabbing a sandwich or a burger for lunch to go along with your snacks/water and saving some money too.&lt;/p&gt;
&lt;h3&gt;Gas&lt;/h3&gt;
&lt;p&gt;Prices aren’t as bad as last year, but I used the &lt;a href=&quot;http://then.gasbuddy.com/Trip_Calculator.aspx&quot;&gt;Gas Buddy Trip Calculator&lt;/a&gt; to help map out where I would need to stop for gas along the way, and how much I would be spending overall. For the most part, we prefer to stop at the Love’s truck stops. They cater towards truckers, so you will find a station in almost every city or town along your route if you’re on a major highway or interstate. The gas prices are reasonable, they do a good job at keeping the restrooms clean, and they have a mini-mart and fast food restaurant attached. It makes for a good place to take care of your road trip needs in one stop instead of three.&lt;/p&gt;
&lt;h3&gt;Are we there yet?!&lt;/h3&gt;
&lt;p&gt;Probably the trickiest thing is keeping the kids from going stir crazy. Last year we used a “clothes pin” system. For every hour of the trip, we had a clothes pin up on the passenger side sun visor. After each hour we pulled one down. That gave them a “visual” indication of how much time was left to our destination. We also bought a handful of coloring books and toys they enjoy from the dollar store and let them pick a new one out at every second hour, just to break things up a bit more.&lt;/p&gt;
&lt;p&gt;This year this plan didn’t work as well. Instead, we broke out our rest stops a little more (into 2 or 3 hour chunks) and let them know how long it was until that stop. The smaller hour chunks seem to work better and they can track it from the mileage signs we use as a base on the road.&lt;/p&gt;
&lt;h3&gt;Enjoy the Sights&lt;/h3&gt;
&lt;p&gt;One thing I enjoy about road trips is the new scenery and landscapes you see as you go across country. Make sure to enjoy it! There’s no need to drive like a low flying plane. When possible, plan some of your stretch breaks at a rest stop or “scenic view” since they provide some wonderful views and photo opportunities to see stuff you probably don’t see every day. Getting there is indeed half the fun.&lt;/p&gt;
&lt;h3&gt;More?&lt;/h3&gt;
&lt;p&gt;What tips do you have for your road trips? Any particular traditions? I’m already looking forward to our big trip next year and always looking for new things to try.&lt;/p&gt;
</content:encoded></item><item><title>Random Vacation Thought</title><link>https://dillieo.me/posts/growth/2015-06-18-random-vacation-thought/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-06-18-random-vacation-thought/</guid><description>Random Vacation Thought</description><pubDate>Thu, 18 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So I&apos;m in Texas, having stopped off in a German town to pick up an Irish whiskey that will travel back to Arizona. Gotta love it...&lt;/p&gt;
</content:encoded></item><item><title>Texas Air</title><link>https://dillieo.me/posts/growth/2015-06-15-texas-air/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-06-15-texas-air/</guid><description>Texas Air</description><pubDate>Mon, 15 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not much to say really. Enjoying country air and being offline. See you later!&lt;/p&gt;
</content:encoded></item><item><title>Milestones</title><link>https://dillieo.me/posts/growth/2015-06-09-milestones/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-06-09-milestones/</guid><description>Milestones</description><pubDate>Tue, 09 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you add the year that we became friends and the 4 years we courted, I can now say that I’ve known my wife for more than half my life. It’s a profoundly beautiful thing, but not always for the readily visible things you might expect.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;When I wake up in a funk, or have had a rough day, or even when something dramatic happens, my wife is typically the first to know. I don’t even have to say anything, she just knows. I marvel at why this is, but then if the tables were turned she’d say the exact same thing about me and I would just simply smile and say, “Well, I know you my love.” 8^D Know. We lose the meaning in english sometimes. Often we say we know somebody in regards to how we have met them once or twice, or ackowledge they exist. But the way my wife knows me is the French verb connaître, which implies a personal, or deeper and intimate knowledge of someone. Jesus knows and loves me this way, and having somebody on this earth with that kind of an understanding of me is amazing, and comforting, and sacred.&lt;/p&gt;
&lt;p&gt;This kind of love and knowledge comes from the small things, the big things, the daily grind of triumphs and failures. The late nights praying about where the next paycheck will come or that our little ones don’t get sick because their immune systems are so fragile. It comes from holding hands at the store, random slurpee runs, and late night talks and dreams. It sounds so simple, but can be so hard at times too. There have been disagreements, choice words spoken, and mistakes made along the way. But patience, forgiveness, and lots of communication have repaired those wounds. Communication has done a lot of good things. Both small and big, day in and day out. It make those small changes in mood largely visible when the time comes.&lt;/p&gt;
&lt;p&gt;Where am I going with all of this? I’m not sure myself really. 8^D Mainly to reflect on how humbled and honored I am to have somebody that has grown with me for so long and how much we have grown together in this journey of life. I also need to remind myself that it’s not the huge gestures, but the small details, day in and day out, that seem the most profound, but often you have to look to remember them.&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Dynamically Submitting Sitefinity Forms Using Ajax</title><link>https://dillieo.me/posts/development/2015-06-08-soup-to-nuts-dynamically-submitting-sitefinity-forms-using-ajax/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-06-08-soup-to-nuts-dynamically-submitting-sitefinity-forms-using-ajax/</guid><description>Soup To Nuts Dynamically Submitting Sitefinity Forms Using Ajax</description><pubDate>Mon, 08 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sitefinity has a nice forms module baked right into the system. Within a few steps you can easily setup your basic questions, add it to a page, and track the results. You can even get e-mail notifications when a new form item is submitted, should you choose. However, the one downside to the forms module is that out of the box, a from is submitted through your typical.Net PostBack method, and there is no setting to make the form submit via AJAX. Sitefinity boasts about how web service friendly the platform is and that how a lot of modules in the system are already “WCF enabled”. By digging into these, we make our forms submit over a standard REST web service call.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Justification&lt;/h3&gt;
&lt;p&gt;Why do we need to submit our form via AJAX? In our case there are two reasons. The first is that the design of the form was intended to step the user through a set of questions, instead of having them all laid out on the page initially. Sitefinity forms don’t support this kind of “step” process yet, so we had to roll our own. The second was that when the form questions were answered, we wanted to present the user with a recommendation based on their answers, as well as submit their responses into the database for tracking. Again, this was something not that comes built into the forms module, but was a need for the site.&lt;/p&gt;
&lt;p&gt;Please note that in the example below, I’m not demonstrating the “multi-step” or the “recommendation” code. There is plenty of Javascript examples out there on how to accomplish that. Instead, I’m just showing you how to create a form and then submit it via AJAX. So let’s get started.&lt;/p&gt;
&lt;h3&gt;Create a New Form&lt;/h3&gt;
&lt;p&gt;We’ll start by creating a simple form. I’ve gone into Sitefinity and created a simple form called “Test Questions.” I added two multiple choice questions: “What is your favorite color?” and “What is your favorite food?”. Once the form was complete, I added it to a test page, and went through it a couple of times so I could generate some responses. You’ll notice that one submission doesn’t have a username attached to it, that is because I made sure to log out to verify the form was accessible.&lt;/p&gt;
&lt;h3&gt;Analyze Form Elements&lt;/h3&gt;
&lt;p&gt;Now that we have a form with some answers in place, we can take advantage of the FormsService.svc file that Sitefinity already has in place. You’ll find that if you load up the&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/Sitefinity/Services/Forms/FormsService.svc/help
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;page in your browser, you’ll get a basic definition file of the various actions available in the service, but it isn’t too much help. The best place look in in the admin panel itself. It’s leveraging the WCF services to do basic form interaction. Open up your web browser of choice (I’ve been quite happy with &lt;a href=&quot;/a-new-devtool-on-the-block&quot;&gt;Firefox Developer Edition&lt;/a&gt; lately), load up the “Network” inspector, and navigate to the main forms page. You’ll see something like this:&lt;img src=&quot;@assets/images/posts/2015-06-fromlistajax.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You’ll notice that the URL is rather lengthy. I’ve tried omitting most of the parts of that in the past, but I think due to the backend requirements (OData backend I suspect) we need that all in there. To work with the API requests a little better, I use the &lt;a href=&quot;https://www.getpostman.com&quot;&gt;PostMan&lt;/a&gt; tool. It’s a Chrome standalone tool and is very powerful. We’ll generate a GET request in PostMan and we can look at the results:&lt;img src=&quot;@assets/images/posts/2015-06-formlistpostman.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You’ll notice that we have added “Basic Auth” to the request. Some of the REST API methods require authentication to proceed. While we could copy the FormsService.svc file into the public folder in Sitefinity, I decided instead to create a basic FormSubmitter user with limited access to the site and simply encrypt the credentials into the request.&lt;/p&gt;
&lt;p&gt;Now that we have the list of forms, we can take the Id of our form and get the list of form entries that we’ve submitted. We’ll use the admin panel as a shortcut again. Click the “entries” link in your list of forms. This will bring up the list of entries, as you’ll see a new (and long) AJAX request in your network inspector. You’re request will look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/Sitefinity/Services/Forms/FormsService.svc/entries/sf_testquestion/?managerType&amp;amp;providerName&amp;amp;itemType=Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&amp;amp;provider=OpenAccessDataProvider&amp;amp;sortExpression=Title ASC&amp;amp;skip=0&amp;amp;take=50
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While we were able to get away with not having the manager/provider/etc values in the form listing, you will need them to get the listing of form entries. You’re results will look something like this:&lt;img src=&quot;@assets/images/posts/2015-06-formspecificentry1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here you see the structure of each form entry. It’s a lot more complex than the two simple questions we provided when we created the form. You’ll see the two core questions/answers are there under variable names “FormMultipleChoice_C001” and “FormMultipleChoice_C003” variables. You can go back in and make these variable names “friendlier” through the advanced settings if you desire.&lt;/p&gt;
&lt;p&gt;While we could piece together URL request needed to submit a new form entry using this information, the complexity of the data and URL structure would have be piecing together things for a while. Fortunately, one thing we can do is to edit one of the given responses in the administrative control panel. Upon clicking the “Save” button you’ll see a new PUT request in your network inspector, and this is exactly what we need. Your URL will look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/Sitefinity/Services/Forms/FormsService.svc/entry/sf_testquestion/f40ec9da-0926-6ce6-b45a-ff0000a89b3e/?itemType=Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&amp;amp;providerName&amp;amp;managerType&amp;amp;siteId=d228cecf-4076-41c6-a8f2-d1b41ffb84a6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and your PUT data will look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{ &quot;Item&quot;: { &quot;DateCreated&quot;: &quot;\\/Date(1433462770657)\\/&quot;, &quot;Description&quot;: { &quot;PersistedValue&quot;: &quot;&quot;, &quot;Value&quot;: &quot;&quot; }, &quot;ExpirationDate&quot;: null, &quot;FormMultipleChoice_C001&quot;: &quot;Pink&quot;, &quot;FormMultipleChoice_C003&quot;: &quot;Thai&quot;, &quot;Id&quot;: &quot;f40ec9da-0926-6ce6-b45a-ff0000a89b3e&quot;, &quot;IpAddress&quot;: &quot;XXX.XXX.XXX.XXX&quot;, &quot;Language&quot;: null, &quot;Owner&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;PublicationDate&quot;: &quot;\\/Date(1433462770643)\\/&quot;, &quot;ReferralCode&quot;: &quot;2&quot;, &quot;SourceSiteDisplayName&quot;: &quot;Default&quot;, &quot;SourceSiteId&quot;: &quot;d228cecf-4076-41c6-a8f2-d1b41ffb84a6&quot;, &quot;SourceSiteName&quot;: &quot;Default&quot;, &quot;Status&quot;: 2, &quot;SubmittedOn&quot;: &quot;\\/Date(1433462770657)\\/&quot;, &quot;Title&quot;: { &quot;PersistedValue&quot;: &quot;&quot;, &quot;Value&quot;: &quot;&quot; }, &quot;Username&quot;: &quot;&quot;, &quot;Visible&quot;: false }, &quot;ChangedRelatedData&quot;: null, &quot;ItemId&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;AdditionalUrlNames&quot;: null, &quot;AdditionalUrlsRedirectToDefault&quot;: false, &quot;AllowMultipleUrls&quot;: false, &quot;DefaultUrl&quot;: null, &quot;ItemType&quot;: &quot;Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&quot;, &quot;LastApprovalTrackingRecord&quot;: null, &quot;LifecycleStatus&quot;: null, &quot;PublicationSettings&quot;: null, &quot;VersionInfo&quot;: null }
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Submit a new Form Entry&lt;/h3&gt;
&lt;p&gt;Now that we have the specific structure we need we can now submit a new form entry into Sitefinity. The trick is that while we don’t have a POST method available through the API, the PUT method actually serves as an “Upsert” type request. This means that if the Id is null, then the underlying service will insert a new record instead of updating an existing one.&lt;/p&gt;
&lt;p&gt;Since the API requires most (if not all) of the data elements to be in the request, but seems to ignore most of them for an insert, we can take this existing request and simple make a couple of tweaks. The first is that the URL is changed to:&lt;/p&gt;
&lt;p&gt;/Sitefinity/Services/Forms/FormsService.svc/entry/sf_testquestion/00000000-0000-0000-0000-000000000000/?itemType=Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&amp;amp;providerName&amp;amp;managerType&amp;amp;siteId=d228cecf-4076-41c6-a8f2-d1b41ffb84a6&lt;/p&gt;
&lt;p&gt;Notice that our Id field in the URL is now a generic/blank GUID of all 0s. Similarly, we update our PUT data to have the form answers we want, and an empty ID:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{ &quot;Item&quot;: { &quot;FormMultipleChoice_C001&quot;: &quot;Green&quot;, &quot;FormMultipleChoice_C003&quot;: &quot;Italian&quot;, &quot;Id&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;IpAddress&quot;: &quot;&quot;, &quot;Language&quot;: null, &quot;Owner&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;PublicationDate&quot;: &quot;\\/Date(1433462770643)\\/&quot;, &quot;ReferralCode&quot;: &quot;2&quot;, &quot;SourceSiteDisplayName&quot;: &quot;Default&quot;, &quot;SourceSiteId&quot;: &quot;d228cecf-4076-41c6-a8f2-d1b41ffb84a6&quot;, &quot;SourceSiteName&quot;: &quot;Default&quot;, &quot;Status&quot;: 2, &quot;SubmittedOn&quot;: &quot;\\/Date(1433462770657)\\/&quot;, &quot;Title&quot;: { &quot;PersistedValue&quot;: &quot;&quot;, &quot;Value&quot;: &quot;&quot; }, &quot;Username&quot;: &quot;&quot;, &quot;Visible&quot;: false }, &quot;ChangedRelatedData&quot;: null, &quot;ItemId&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;AdditionalUrlNames&quot;: null, &quot;AdditionalUrlsRedirectToDefault&quot;: false, &quot;AllowMultipleUrls&quot;: false, &quot;DefaultUrl&quot;: null, &quot;ItemType&quot;: &quot;Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&quot;, &quot;LastApprovalTrackingRecord&quot;: null, &quot;LifecycleStatus&quot;: null, &quot;PublicationSettings&quot;: null, &quot;VersionInfo&quot;: null }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you submit this PUT request to the API. The API will note the “empty” GUID and generate a new form request. The response will be a 200 status code and a copy of the new form entry object, with the Id updated to include the new GUID generated. If you go into the admin panel. You’ll see it in the list:&lt;img src=&quot;@assets/images/posts/2015-06-formsubmitted.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Submit via AJAX&lt;/h3&gt;
&lt;p&gt;Now that we can verify that we can create a new entry, let’s do it through Javascript. I’m going to cheat here and leverage a nice feature in PostMan that will generate the code for me. Our final result looks something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var data = JSON.stringify({ &quot;Item&quot;: { &quot;FormMultipleChoice_C001&quot;: &quot;Green&quot;, &quot;FormMultipleChoice_C003&quot;: &quot;Italian&quot;, &quot;Id&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;IpAddress&quot;: &quot;160.3.146.216&quot;, &quot;Language&quot;: null, &quot;Owner&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;PublicationDate&quot;: &quot;/Date(1433462770643)/&quot;, &quot;ReferralCode&quot;: &quot;2&quot;, &quot;SourceSiteDisplayName&quot;: &quot;Default&quot;, &quot;SourceSiteId&quot;: &quot;d228cecf-4076-41c6-a8f2-d1b41ffb84a6&quot;, &quot;SourceSiteName&quot;: &quot;Default&quot;, &quot;Status&quot;: 2, &quot;SubmittedOn&quot;: &quot;/Date(1433462770657)/&quot;, &quot;Title&quot;: { &quot;PersistedValue&quot;: &quot;&quot;, &quot;Value&quot;: &quot;&quot; }, &quot;Username&quot;: &quot;&quot;, &quot;Visible&quot;: false }, &quot;ChangedRelatedData&quot;: null, &quot;ItemId&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;, &quot;AdditionalUrlNames&quot;: null, &quot;AdditionalUrlsRedirectToDefault&quot;: false, &quot;AllowMultipleUrls&quot;: false, &quot;DefaultUrl&quot;: null, &quot;ItemType&quot;: &quot;Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&quot;, &quot;LastApprovalTrackingRecord&quot;: null, &quot;LifecycleStatus&quot;: null, &quot;PublicationSettings&quot;: null, &quot;VersionInfo&quot;: null });

var settings = { &quot;async&quot;: true, &quot;crossDomain&quot;: true, &quot;url&quot;: &quot;/Sitefinity/Services/Forms/FormsService.svc/entry/sf_testquestion/00000000-0000-0000-0000-000000000000/?itemType=Telerik.Sitefinity.DynamicTypes.Model.sf_testquestion&amp;amp;amp;amp;providerName=&amp;amp;amp;amp;managerType=&amp;amp;amp;amp;siteId=d228cecf-4076-41c6-a8f2-d1b41ffb84a6&quot;, &quot;method&quot;: &quot;PUT&quot;, &quot;headers&quot;: { &quot;content-type&quot;: &quot;application/json&quot;, &quot;authorization&quot;: &quot;Basic Rm9ybVN1Ym1pdHRlcjpGMHJtU3VibWl0dDNy&quot; }, &quot;processData&quot;: false, &quot;data&quot;: data };

$.ajax(settings).done(function () { console.log(&apos;Form submit complete.&apos;); });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can refine this as needed.&lt;/p&gt;
&lt;h3&gt;Developers Note&lt;/h3&gt;
&lt;p&gt;At this time, this isn’t what you would call the most elegant solution in the world. There are a lot of “extra” data that has to go into your request and we’re leveraging an “upsert” type command that may or may not have been the original intent of the platform. That said, the solution does work and I’ve made my thoughts known about exposing a more standard POST method to this.&lt;/p&gt;
&lt;h3&gt;Be Fruitful and Codify!&lt;/h3&gt;
&lt;p&gt;So there you have it. A way to create forms in Sitefinity and submit new entries to them over a standard REST API request using AJAX. Another alternative would be to code up your own WCF service and leverage the backend libraries to access forms, but I wonder if the same level of complexity would be involved. Sitefinity divs, I’d love to know, or if you have any other recommended approaches to take.&lt;/p&gt;
</content:encoded></item><item><title>Building A Card Ux With Zurb Foundation For Apps</title><link>https://dillieo.me/posts/development/2015-06-04-building-a-card-ux-with-zurb-foundation-for-apps/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-06-04-building-a-card-ux-with-zurb-foundation-for-apps/</guid><description>Building A Card Ux With Zurb Foundation For Apps</description><pubDate>Thu, 04 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I’ve been working through my &lt;a href=&quot;http://prayerjournal.apphb.com&quot;&gt;Prayer Journal&lt;/a&gt; app (I’m looking for &lt;a href=&quot;https://prayerjournalapp.wordpress.com/2015/05/27/almost-there-looking-for-beta-testers/&quot;&gt;beta testers&lt;/a&gt; now if you’re interested) I’ve been trying to find a way to replicate the “card experience” that you find in a lot of apps nowadays. A simple left/right swipe will allow you to browse all of items in a list you have generated. It is rather intuitive and very mobile friendly. I’ve been building Prayer Journal using &lt;a href=&quot;http://foundation.zurb.com/apps/&quot;&gt;Zurb Foundation for Apps&lt;/a&gt; (Z4A) and love it. The one thing I haven’t found yet in the framework is a way to build such an interface. With some additional library support however, you can make this happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To start, we’ll put together a simple unordered list and for each list item, we have take advantage of the card layout provided by Z4A. In addition, we install a great &lt;a href=&quot;https://github.com/revolunet/angular-carousel&quot;&gt;angular touch carousel&lt;/a&gt; library that installs easily into your application through bower. Make sure to update your app.scss to include the angular-carousel.css file, as well as update your gulp script to copy all the appropriate resources during the build.&lt;/p&gt;
&lt;p&gt;Once that is in place, we can setup a simple unordered list with our card details:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/1ece61cf172cee97ba2d&lt;/p&gt;
&lt;p&gt;Now we have to do a few CSS tweaks.&lt;/p&gt;
&lt;p&gt;The first is that the “active” color for the carousel indicator is set to white, which you can’t see on our screen. Similarly, the navigation arrows are at the bottom of our card. We’ll change the color and move the controls to the top.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.rn-carousel-control { top: 0em; }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;div.rn-carousel-indicator span.active { color: #00558B!important; }&lt;/p&gt;
&lt;p&gt;Next, we don’t want the navigation controls to be displayed on smaller screens, since we’re relying upon the swipe. Thanks to &quot;mixins&quot; with our SCSS, we can create a special rule for that:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.rn-carousel-control { // Only affects medium screens and smaller@include breakpoint(medium down) { display: none; } }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Finally, because of how the grid leverages flexbox and how the carousel uses relative positioning, we have to set a fixed height for the carousel control. For a uniform look, I also set a fixed size for the cards themselves:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I’m hoping to find a way around this, as I’m not a CSS guru. Any CSS gurus (or Zurb developers) our there please send me word if you know a way around this.&lt;/p&gt;
&lt;p&gt;With that in place, run your gulp build command and fire up your app. You’ll see a nice looking card display (like the screnshot above) that by using your finger, you can swipe left and right to navigate through the cards on your mobile device. You can also click/drag on your computer, but for convenience the navigation controls are displayed there.&lt;/p&gt;
&lt;p&gt;The only two “gotchas” to this setup. The first is the above mentioned fixed height needed for the carousel. Ideally we wouldn’t have to hard code the height this way, though coding the cards themeselves for a fixed height is a good for a consistent view. The second is that the carousel library depends upon ng-touch for the swipe actions, while Zurb Foundation for Apps uses hammer.js. Ideally you want only one “swipe” library, so I’ll have to look into possible recoding the carousel to rely upon the hammer events.&lt;/p&gt;
&lt;p&gt;That’s all there is to it! I’m looking to take advantage of some of the features of the carousel to add/remove items based off of filter conditions, but that is still a work in progress.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Fabulous Fresh Four Fenomenon</title><link>https://dillieo.me/posts/development/2015-06-01-fabulous-fresh-four-fenomenon/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-06-01-fabulous-fresh-four-fenomenon/</guid><description>Fabulous Fresh Four Fenomenon</description><pubDate>Mon, 01 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I still find it a little funny every time I recall the story, but I got the job I have now through Twitter. I had decided to start looking for a new job, and being the “up to date” person I thought I was, I figd I’d try searching Twitter. Low and behold, somebody had posted they were looking for a.Net person, and even willing to have them work remotely! I sent an e-mail, had a phone call or two and a visit, and there I was, working for Fresh Consulting!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Four years ago today I was rather star struck as I drifted into an office nearly 1400 miles away from home and immediately to a social media conference we were hosting. Shortly after that we ran over to do a checkin with a major telecommunications provider, and I was sent home to build an RSS feed for the high school sports association here in Arizona. There weren’t a whole lot of us, but we were going places!&lt;/p&gt;
&lt;p&gt;Here I am, 4 years later, and our company has been twice in the top 100 of fastest growing companies in Puget Sound area and our dev team is huge! We have a whole staffing side of the house now, a full Asia team, and I’m sure there is a lot more going on over there that I still don’t have wind of. 8^D&lt;/p&gt;
&lt;p&gt;To my employers, more like a team or an extended family, thanks for taking a chance on me. Thanks for giving me the freedom and flexibility with hours to handle the medical issues we’ve had over the years. Thank you for the trust to get work done plenty of miles away and still make sure to keep communication as strong as possible with the “mother ship”. Each year there are new challenges and new technology to stretch my skills even more and it is something I’ve never had in my previous jobs and something I appreciate greatly. I hope my contributions to the company, both for clients and internally for the team, have been significant and helpful to our growth. Thank you.&lt;/p&gt;
&lt;p&gt;In a lot of ways, each day at work feels like a sprint. Some days it is the plethora of e-mails to go through: informing clients of progress or answering questions they have about implementing a feature or the possibility of adding another. Some days it is e-mails to colleagues, informing them of progress, answering technical questions, asking technical questions, or providing a game plan of next steps. Some days it is digging deep into a new platform or coding standard we are using with a project. Some days it is pulling out a big digital mallet and squashing bugs. Some days it is pulling out my digital hammer and nails and crafting a new feature or refining an existing one in a project. Some days it is sitting down with a new client and brainstorming something new and amazing and how it will take shape for them. Most days it is a combination of them all, across a couple of programming languages, techonology stacks, and hosting providers. By the end of the day you’re tired, like those running workous where you are doing laps around a track with varying degrees of pace, recovery, and effort. You get up the next day and do it all over again, with a different variety of pace, recovery, and effort, that much stronger from the previous days work. For some people this would be maddening. Some days it is for me! Overall though, it’s right where I want to be.&lt;/p&gt;
&lt;p&gt;So here’s to another 4 years! I have no idea what kind of springs I’ll be running, but I’m eager to lace up my shoes and see what is in store.&lt;/p&gt;
</content:encoded></item><item><title>Laravel 5 Configurations In Aws Elastic Beanstalk</title><link>https://dillieo.me/posts/development/2015-05-29-laravel-5-configurations-in-aws-elastic-beanstalk/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-05-29-laravel-5-configurations-in-aws-elastic-beanstalk/</guid><description>Laravel 5 Configurations In Aws Elastic Beanstalk</description><pubDate>Fri, 29 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m working on a new project that is running an API using Laravel 5. We’re also hosting it on Amazon’s Elastic Beanstalk service, which gives us great scaling capabilities on the fly. However, since new instances of your application can be added/removed on the fly, setting your configuration requires a little more tweaking than the base install provides.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;With Laravel 5, they have adopted the &lt;a href=&quot;https://github.com/vlucas/phpdotenv&quot;&gt;phpdotenv&lt;/a&gt; library to provide a flexible configuration setup. Simply create a.env file in the root of the site with the configuration overrides that you need, and the library will load them into the environment variables. You’ll see that in configuration files in Laravel will contain code such as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&apos;key&apos; = env(&apos;APP_KEY&apos;, &apos;SomeRandomString’)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Which will check for an environment variable named APP_KEY, or default to the alternate value. Before this code has run, phpdotenv has already found our.env file and loaded our APP_KEY value into the environment accordingly.&lt;/p&gt;
&lt;p&gt;Both phpdotenv, and Laravel, use the mindset that the overrides are intended for development use only, so your production values should be in the configuration files. This brings up two issues that we have to resolve.&lt;/p&gt;
&lt;h3&gt;AWS RDS Connection Strings&lt;/h3&gt;
&lt;p&gt;If you have an AWS RDS database in conjunction with your database, Amazon does a great thing and auto-generates environment variables that you need to connect to your database. These are easily referenced through variables such as $_SERVER[&quot;RDS_HOSTNAME”]. However, the.env file is designed to have basic text, so you can’t put a server variable there. In addition, if you put this value into the “default” condition in the env() method, it generates an error in local development, because from what I can see, env tries to retrieve both values and then evaluate them, instead of finding the env first and then continuing. While you could technically put the actual database values that AWS provides (which are very cryptic for security), I still don’t like that prospect in the event that I have multiple databases scaled up through RDS or they change on me. Instead, we change our app/database.php file to use the shortcode ternary operator instead:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&apos;host&apos; = env(&apos;DB_HOST&apos;)?: $_SERVER[&quot;RDS_HOSTNAME&quot;]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will do our standard env check. In the local environment our.env file will already have DB_HOST set. In production, with no.env file, this value will be null, so we then grab our RDS_HOSTNAME value and set that for our DB_HOST. We have a dynamic setting that is secure, and we can still have our local overrides without hassle.&lt;/p&gt;
&lt;h3&gt;Using.env for Staging Environment&lt;/h3&gt;
&lt;p&gt;So by now, your configuration files have all of your production values, and for your local development you have your.env file in place with all of your local overrides in it. But what do you do for your staging environment? For me, we have an EB instance up and running, but some of our configuration values (like URLs and app keys) are different than production. How do we account for this?&lt;/p&gt;
&lt;p&gt;One thing we could do is to SSH in to the server, create a.env file with our settings, and let things run as usual. The problem with this is that as soon as we push a fresh code change up, EB will build a new instance and that.env file is wiped out. We could add extra server side conditions to our configuration files based on the server name, but with the dynamic nature of EB, those server names could change as well.&lt;/p&gt;
&lt;p&gt;What we do instead is we create a special “elastic beanstalk” version of our.env file that we check into our code repository, and then add some additional instructions to our EB deployment. In case you didn’t know, you can create a.ebextensions folder in the root of your project and add additional commands, configurations, etc to your EB instance. More details about that can be found &lt;a href=&quot;http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first step is to create a.env.elasticbeanstalk file in the root of our project and put our staging details in there, it could be something as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;APP_ENV=staging APP_DEBUG=true APP_URL=staging.example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then, in our.ebextensions folder, we create a new file, named 01envconfig.config and add the following lines:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;container_commands: # Copy EB env configuration file over 01_config_environment: command: mv /var/app/ondeck/.env.elasticbeanstalk /var/app/ondeck/.env&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note that spacing is important here and not to use tab characters.&lt;/p&gt;
&lt;p&gt;Save these files and run your Elastic Beanstalk deployment again. What will happen is that your elasticbeanstalk config file will be renamed.env, allowing you to have your staging overrides in place. You can update this later to use a different file or command if necessary when deploying to your production environment.&lt;/p&gt;
&lt;p&gt;There you have it, a nice way to handle managing Laravel 5 configurations with Elastic Beanstalk that will handle your local/staging/production unique configurations as well as remain stable and flexible during any scaling/deployments that AWS EB will do for you.&lt;/p&gt;
&lt;p&gt;If you know any other tricks, make sure to share them!&lt;/p&gt;
</content:encoded></item><item><title>Low Iodine Diet Lid Resources</title><link>https://dillieo.me/posts/development/2015-05-26-low-iodine-diet-lid-resources/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-05-26-low-iodine-diet-lid-resources/</guid><description>Low Iodine Diet Lid Resources</description><pubDate>Tue, 26 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, my wife started her Low Iodine Diet (LID) again. This is the third time that we’ve been through this and we’ve started collecting some recipes and tips to make things a lot easier. Some basic guidelines on dietary needs can be found &lt;a href=&quot;http://www.thyroid.org/faq-low-iodine-diet/&quot;&gt;here&lt;/a&gt;. It can be daunting at first when the diet starts, because it seems so limiting to what you can do. But thanks to the power of internet, and a lot of good people out there, it isn’t as stressful as it sounds. Here are a few items to help...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Make in Advance&lt;/h3&gt;
&lt;p&gt;If possible, make some of your meals or core ingredients in advance. The LID diet can drain a lot of energy from you, and having to piece together a meal, while tired, and with limted ingredients can be frustrating. Earlier in the week we made up a batch of pasta sauce with ground meat and stuck it in the refrigerator. Simply boil some water, cook, the pasta, drain the water, dump in the sauce and you have a meal. We’ll also brown up some ground meat, bell peppers, and onions and separate them into bags and freeze them. They’re quite versatile with meals. Shop in advance too. You can typically find at least one brand of canned good or ingredient for cooking that is LID compliant, but often it takes a bit of work to find. You don’t want to be tired while doing this. One of these days I might make a database for this, who knows, but for now, go ingredient shopping in advance.&lt;/p&gt;
&lt;h3&gt;Seasoning&lt;/h3&gt;
&lt;p&gt;Kosher Salt becomes your best friend during a LID diet. It has no iodine, so you can use it with your meats and vegetables without worry. A bit of kosher salt, pepper, and garlic powder works on nearly every kind of meat to give it good flavor to eat.&lt;/p&gt;
&lt;h3&gt;Snacking&lt;/h3&gt;
&lt;p&gt;Trader Joes has no salt chips and no salt salsa that tastes really good. They make for a great snack (or can be used with nachos) Trader Joes has a lot of no salt ingredients, so if you have one nearby, its worth stopping in and stocking up. My wife has also added some more items to a growing list &lt;a href=&quot;https://bakingforyou.wordpress.com/l-i-d/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Coffee Redeemed - Almond Milk&lt;/h3&gt;
&lt;p&gt;If you need coffee in your milk, you can’t get any at the store. It’s either dairy based, or has sea salt in it, which contians iodine. However, there’s a simple &lt;a href=&quot;https://bakingforyou.wordpress.com/2012/09/25/homemade-almond-milk-with-bonus-almond-meal/#more-1303&quot;&gt;almond milk&lt;/a&gt; recipe my wife has found that she uses in her coffee during this time. The almonds need to soak overnight, so plan this one a day or two in advance, and only in small batches.&lt;/p&gt;
&lt;h3&gt;Recipes&lt;/h3&gt;
&lt;p&gt;The Thyroid Cancer Survivor’s Association has a great cookbook &lt;a href=&quot;http://www.thyca.org/pap-fol/lowiodinediet/&quot;&gt;here&lt;/a&gt;. Here are some of our favorite recipes that we’ve put togeher as well.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/worth-sharing-low-iodine-diet-lid-nachos&quot;&gt;Nachos&lt;/a&gt; - A staple in our home.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/worth-sharing-low-iodine-diet-lid-bbq-sauce&quot;&gt;BBQ Sauce&lt;/a&gt; - Works great on chicken or pork.&lt;/p&gt;
&lt;p&gt;If you have any other tips or recipes, don’t hesitate to post them here! I’d love to have a growing list!&lt;/p&gt;
</content:encoded></item><item><title>Gratitude</title><link>https://dillieo.me/posts/growth/2015-05-25-gratitude/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-05-25-gratitude/</guid><description>Gratitude</description><pubDate>Mon, 25 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Greater love has no one than this, that someone lay down his life for his friends. (John 15:13 ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thank you. As my family enjoys today, we do it knowing that our freedom came at a price, and that you were willing to make it. Sacrifice is no small thing to make, and you are honored for it. It seems so insignificant to write down a few words, but words to have power and at this moment in time I hope this small gesture provides lasting impact.&lt;/p&gt;
&lt;p&gt;Thank you to my parents, grandparents, uncles, cousins, and others in our family that have served or are serving.&lt;/p&gt;
&lt;p&gt;Thank you to my friends, both near and far, that have served or are serving today.&lt;/p&gt;
&lt;p&gt;Thank you to the anonymous veteran that has stumbled upon this post. I don’t know you personally, but I know of your sacrifice and I appreciate it deeply.&lt;/p&gt;
&lt;p&gt;Thank you to those no longer with us, having given your life so that people you will never know generations after your own could live free.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Tale Of Gary And Rassasassafratz</title><link>https://dillieo.me/posts/growth/2015-05-21-the-tale-of-gary-and-rassasassafratz/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-05-21-the-tale-of-gary-and-rassasassafratz/</guid><description>The Tale Of Gary And Rassasassafratz</description><pubDate>Thu, 21 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One evening, when my girls were about four years old, we were playing in the office under a huge pile of sheets and comforters, waiting to be put into the wash after a visit from some relatives. Sheets can be oddly magical portals, and somewhere in the pile of wrinkles and pillows, a couple new people came to visit.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;That’s Gary on the right. He’s a bit shy, and seems a bit slow talking at times, but he has a heart of gold. He gives good hugs and is always asking about how the girls’ are doing and what they’re learning and wants to learn a few things himself. RassaSassafratz is on the left. About him. Well, we’ll just say that with a name like RassaSassafratz, you can imagine that there is a lot of craziness to ensue. Fortunately, as brothers, they help balance each other out really well.&lt;/p&gt;
&lt;p&gt;The girls fell in love with them right away. I think they got a kick out of teaching somebody else about something (RassaSassafratz was still learning his numbers) and they all worked on projects together. These guys have an uncanny knack for working well with legos. The duo even read some bedtime stories to the girls, and the girls helped them learn some words too! Lots of adventures every week were happening. The only hard part is when Haylee wanted to take Gary in one room and Rylee wanted to take RassaSassafratz into another. The brothers only have a limited amount of freedom, so we had to improvise a little.&lt;/p&gt;
&lt;p&gt;We also discovered, thanks to Haylee, that the boys have a sister, Isabella. She’s younger, but often seems to have a cooler head on her shoulders and helps keep the brothers in place when they get a little out of hand. She’s shown up on a few occasions when the boys aren’t around, which is exciting.&lt;/p&gt;
&lt;p&gt;Eventually the boys went away for a bit, but they always came back and were greeted with hugs and stories, and fun all over again. The girls have asked about Gary and RassaSassafratz, if they could come back, and usually within a few days they make it back from their travels. Even more touching was the day Rylee came up to me in the kitchen and says “Dad, can you talk to Gary and RassaSassafratz about coming over? I know they’re your hands, but I’ll still pretend for Haylee.” I’ve had a similar conversation on the other side.&lt;/p&gt;
&lt;p&gt;Last week my girls turned 9. The day before their birthday Gary and RassaSassafratz paid a visit right before bed. It was just like old times once again and Isabella even popped in for a quick hello. I forget exactly why these guys came in the first place, but I’m glad they are still welcome to visit, even as the girls get older. I hope when they have kids that they’ll still be able to come by and visit them. I bet Isabella will make a visit and I hope some new friends will be by too.&lt;/p&gt;
</content:encoded></item><item><title>Bitcoin For The Newcomer An Update</title><link>https://dillieo.me/posts/development/2015-05-19-bitcoin-for-the-newcomer-an-update/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-05-19-bitcoin-for-the-newcomer-an-update/</guid><description>Bitcoin For The Newcomer An Update</description><pubDate>Tue, 19 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;About a year and a half ago I wrote a little article explaining Bitcoin and how you too, with little or no money, &lt;a href=&quot;/bitcoin-for-the-newcomer-hobbyist-and-poor-man&quot;&gt;can get some satoshis and enjoy in this new emerging world&lt;/a&gt;. Sadly I think that this time is at an end.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ll preface things first that Bitcoin is very much alive and well. I keep dibs on the news and the amount of venture capital backed firms that are coming online each day is astounding. Bitcoin ATMs are in place, governments are adopting/approving bitcoin. Apps are making it easier than ever to store and exchange bitcoin. From what I can see, that’s the biggest hurdle, making it simple enough that any user can start using bitcoin, and do so in a manner that will keep their money secure.&lt;/p&gt;
&lt;p&gt;However, I don’t think bitcoin is for the hobbyist or “poor man” anymore. Part of the initial appeal of bitcoin was that anybody could setup their own mining rig with existing (or maybe some relatively inexpensive new) hardware, be a part of the blockchain community that verifies payments, and make some money on the side. As the popularity (and blockchain complexity) increased, the hardware wars began to build bigger and better miners. Nowadays, you need high energy consuming, peta-hash speed miners to hope to get a decent piece of the action to recover your maintenance fees.&lt;/p&gt;
&lt;p&gt;Even cloud mining operations were affected. The cloud mining service I love, &lt;a href=&quot;https://cex.io/r/1/DillieO/0/&quot;&gt;cex.io&lt;/a&gt;, effectively shut down their cloud mining operations for “lower hash rate” users due to the maintenance and mining fees being more expensive than what you could make out of a mining session. There’s no solid answer on when it would become profitable again to do so. Other cloud mining services require you spend a large amount of money per month to rent their services, somthing I’m not interested in at this point.&lt;/p&gt;
&lt;p&gt;Part of this, I believe, is due to the lower dollar exchange value for bitcoin. I was there the day bitcoin topped $1000 per BTC, making my mere.03 BTC worth nearly $30. The fever was high and it seemed like the sky was the limit. I had done enough mining / trading during that time to buy pizza on a couple of nights as well as purchase a set or two of cards for my favorite CCG. Life was good. But a major exchange crashed, a few large thefts occurred, and things slowly tapered down. $230 is the appromixate going rate these days. The lower price and growing complexity in solving the blockchain to get the reward pushes things out of the “poor man’s” league. I don’t even consider using the faucets anymore.&lt;/p&gt;
&lt;p&gt;As with everything else, the future is always moving forward. Who knows what will happen. I have a whopping 62,891 satoshis (read 0.00062891 BTC) valued at 14 cents at the moment. I also have 13.5 GHS (read giga-hashes) of mining power waiting for the day that things get profitable again. Sadly, due to increased trading costs, I can’t cash any of this out and move it to my Coinbase vault. So I sit and wait. If you’re looking to get into bitcoin, at this point you have to start big. Spend the $230 or so to get a BTC and then you can spend with it to be part of the system. You could potentially buy a lot of mining power, but I still don’t know if the maintenance fees would be greater than the profit, or you’d spend a long time recovering your expense. Outside of that I don’t think there is much left for the hobbyist or poor man.&lt;/p&gt;
&lt;p&gt;Please correct me if I am missing something. I’d love to participate in the system again.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Setting Active Classes Within Templates In Sitefinity</title><link>https://dillieo.me/posts/development/2015-05-13-quick-tip-setting-active-classes-within-templates-in-sitefinity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-05-13-quick-tip-setting-active-classes-within-templates-in-sitefinity/</guid><description>Quick Tip Setting Active Classes Within Templates In Sitefinity</description><pubDate>Wed, 13 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We ran into an issue with our Sitefinity instance where the default menu navigation that was provided wasn’t cutting the mustard. We needed something more elaborate. However, we wanted to display an “active” box in our menu options based on the page the user was on. After some trial and error, here’s how you do it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For a quick background, we have a custom master template that outlines our page structure. Within that master template, we have a &lt;a href=&quot;/creating-custom-formatted-layout-widgets-in-sitefinity&quot;&gt;custom formatted layout widget&lt;/a&gt; that we put our navigation items in. This navigation widget is using your typical format, with &amp;lt;ul&amp;gt; and &amp;lt;li&amp;gt; tags for our section/subsections, as well as class definitions for styling. In our case, we want to apply the “active” class based on the current page the user is on. While I could have done this inline, I chose instead to make a helper function, so that our navigation (which is already a bit complex) reads a bit simpler.&lt;/p&gt;
&lt;p&gt;At the top of our MainNavLayout.ascx file, I added the following code...&lt;/p&gt;
&lt;p&gt;https://gist.github.com/d6f2db0653d265a7bc0f&lt;/p&gt;
&lt;p&gt;With that in place, we can then add then inject the following code in our menu blocks:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;li class=&quot;personal-menu &amp;lt;%= NavHelper.CheckActive(&quot;/personal-banking/&quot;) %&amp;gt;&quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When the page pre-renders the page, it makes a call to our CheckActive method. If the current page contains the value we provided, we return the value “active” which in turn assigns the active class in addition to the personal-menu class to our list item. If it doesn’t match, we simply return an empty string, and move on.&lt;/p&gt;
&lt;p&gt;In my case, I put / characters around my section name so that if we have a “personal-banking” page that is in a different section of the site, our URL check won’t accidentally set the menu section as active.&lt;/p&gt;
&lt;p&gt;There’s a lot of room to customize this further, but this gets you off the ground nicely.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Transferring Contacts From Htc 8X To Ios Or Android On Verizon</title><link>https://dillieo.me/posts/development/2015-05-12-quick-tip-transferring-contacts-from-htc-8x-to-ios-or-android-on-verizon/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-05-12-quick-tip-transferring-contacts-from-htc-8x-to-ios-or-android-on-verizon/</guid><description>Quick Tip Transferring Contacts From Htc 8X To Ios Or Android On Verizon</description><pubDate>Tue, 12 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My iPhone finally arrived and while all of my Google Contacts and Hotmail contacts transferred over right away (hazzah for some cloud things) I was still missing some contacts. Those were the ones that were saved to Verizon’s contact manager. However, Backup Assistant Plus (the app that came with the phone) was no longer accessible on my phone, even though it appears that contacts were being backed up. Here’s what you need to do to get your contacts over.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Skip any documentation you find about using a USB transfer program, or trying to track down a fresh copy of Backup Assistant. I suspect all of this is old documentation. Instead, grab a copy of Verizon’s new app “Verizon Cloud.” You can get it for iPhone &lt;a href=&quot;https://itunes.apple.com/us/app/verizon-cloud/id645682444?mt=8&quot;&gt;here&lt;/a&gt; and Android &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.vcast.mediamanager&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once the app is installed, log in, using your phone number and the password you use for that number on the main Verizon site. Next you’ll be asked which items you want to backup to the Verizon cloud. I already have my photos synchronized through OneDrive and my music in Google Music, so I simply unchecked all of the items except for contacts, that way any updates I make will be backed up.&lt;/p&gt;
&lt;p&gt;Once that is complete, you’ll be presented with two options on how you want to transfer data to your new phone. In my case, I simply tapped the button “Verizon Cloud” to access everything that was already backed up there. I selected my contacts and noticed everything was listed there just fine. By the time this has happened, all of the contacts have already been transferred to your phone. I went to my contacts, found my missing people and added them to my favorites accordingly.&lt;/p&gt;
&lt;p&gt;That’s all there is to it! No CSV exports, or USB cable mayhem or temporary files on your computer. The cloud can be quite handy at times. I had no problems on my iPhone 6 or my wife’s Google Nexus 6 with this process.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Perspective</title><link>https://dillieo.me/posts/development/2015-05-07-perspective/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-05-07-perspective/</guid><description>Perspective</description><pubDate>Thu, 07 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An interesting question was posed at bible study this week...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Was Paul in prison, or did he have an office and a personal assistant?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This question took me off guard. Paul was in prison several times throughout his ministry. Prison is no fun (at least I can only imagine) and the ability to go to the world and spread the gospel was hindered. I suspect the person asking us this smiled inwardly since I wager most of us had this perplexed look on our face.&lt;/p&gt;
&lt;p&gt;He paused for a moment and then continued. Paul wrote four of his letters while in prison. He had plenty of time and resources in which to pen these profound letters, something he might have not if he was traveling and preaching. He had a captive audience while in the jail in which to connect and share the gospel with. This was the case in Phillipi when he ministers to the jailer after the earthquake.&lt;/p&gt;
&lt;p&gt;The matter at hand becomes perspective. We are reminded in Romans 8:28 that “...we know that for those who love God all things work together for good, for those who are called according to his purpose.” This verse doesn’t make light of the situations we are in. Prison life was no walk in the park, and yet through those times letters were written that inspired Christendom for centuries to come.&lt;/p&gt;
&lt;p&gt;No matter what cycle you are in with life, bear in mind what perspective you have. As you look out the window of your current circumstances, are you stuck in a dreary rainy day? Or are you given an opportunity to slow down from the business of life, identify the beauty of the individual raindrops on your window, and reflect upon their uniqueness and beauty?&lt;/p&gt;
</content:encoded></item><item><title>Love Is</title><link>https://dillieo.me/posts/growth/2015-05-05-love-is/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-05-05-love-is/</guid><description>Love Is</description><pubDate>Tue, 05 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve always been of the belief that love is found more in the simple things of life than in the huge gestures.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve been blessed to have been married for nearly 14 years now and while I remember the special trips we have taken, I remember more the simple nights reading on the deck until we couldn’t stay awake or the movie marathons at home with burritos or pizza. Korean artist Puuung has &lt;a href=&quot;http://www.grafolio.com/puuung1/illustration.grfl&quot;&gt;beautifully captured&lt;/a&gt; these kinds of moments in a series of drawings. The one above is my current favorite. I think I’ll be returning often to browse through them.&lt;/p&gt;
</content:encoded></item><item><title>What Is The Gospel</title><link>https://dillieo.me/posts/growth/2015-05-01-what-is-the-gospel/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-05-01-what-is-the-gospel/</guid><description>What Is The Gospel</description><pubDate>Fri, 01 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For bible study this week, we were tasked to answer a simple question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is the Gospel?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It took me a little over an hour to write something that takes two minutes to read. I suspect this will be an &quot;living document&quot; as I continue to distill and expand certain ideas as I grow deeper in my own relationship with God, but the core concepts should be there.&lt;/p&gt;
&lt;p&gt;The Gospel is the good news that the eternal life in God’s kingdom is available for us here and now.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;We were separated from God, our creator, because of our sin. It was a gap that was insurmountable by anything we could do. This gap has been there almost as long as we have been walking the Earth. The consequences of our sin is death. However, God continues to loves us despite all of the covenants He established over time and we broke with Him. Finally, as the ultimate demonstration of His love, he sent his only son Jesus to die for us and pay the price for our sins. More importantly than dying, Jesus rose from the dead, defeating sin, making it possible for our sins to be forgiven, and closed that insurmountable gap.&lt;/p&gt;
&lt;p&gt;Though Jesus, we can be children of God, members in his kingdom, disciples of the great master of life. Membership in God’s kingdom is more than simply having a name on a list, it is a direct and personal relationship with the creator of the universe who went to immense lengths to rescue you. God’s kingdom is radicalliy different from the world we live in. Love, joy, peace, patience, kindness, gentleness, self-control, compassion for others are its tenants. It seeks to bring this to all people here and now. Jesus will return to claim His kingdom, but there’s no twiddling our thumbs while we wait. We are able to establish God’s kingdom today: in our homes, in our neighborhoods, in our world. As we grow and work together with other members in the kingdom, continuing God’s story, we become a light to the world about this good news and how it restores our soul. We fight injustice, we care for the downtrodden, the orphan, the widow.&lt;/p&gt;
&lt;p&gt;God offers this membership for free. No amount of animal sacrifices, magic words, or good deeds will suffice. All we need is to humble ourselves, believe in what God has done for us, ask for forgiveness of our sins, and accept His offer to become diciples in His kingdom. Membership in God’s kingdom is not always easy or pain free, but the peace, restoration, and eternal life is beyond imagination. This is the Gospel, the good news. The opportunity to participate in a God’s kingdom, older than time itself, to continue His story, and to receive eternal life and personal transformation through Jesus Christ.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Hiding The Map In The Dsidx Wordpress Plugin</title><link>https://dillieo.me/posts/development/2015-04-30-quick-tip-hiding-the-map-in-the-dsidx-wordpress-plugin/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-30-quick-tip-hiding-the-map-in-the-dsidx-wordpress-plugin/</guid><description>Quick Tip Hiding The Map In The Dsidx Wordpress Plugin</description><pubDate>Thu, 30 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a site I helped a friend put together that has real estate listings. It’s WordPress based and we’re using the DS-IDX plugin to display listings. The nice thing is that they provide a simple URL to generate listings for a given area. However, we wanted the map to remain hidden when the results are first loaded. It’s a bit “hacky” but here’s how you can get it done.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;As of this writing, there was no “toggle” parameter to add in the URL to let the map remain hidden by default. I’ve been told that once the user hides the map, the parameter is “remembered” during the next refresh, but this wasn’t desired either. After some poking and experimenting, the solution was to add simple batch of Javascript to run after the page loads. You can modify your theme or use a plugin that adds the code at the bottom of the page.&lt;/p&gt;
&lt;p&gt;Here’s what you need:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$( document ).ready(function() 
{ 
    if($(&apos;#dsidx-map&apos;).is(&quot;:visible&quot;)) 
    { 
        setTimeout(function() 
        {
            $(&apos;#dsidx-map-control a&apos;)[0].click();
        }, 1000);
    } 
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s the trick. We check to see if the map is visible or not (for those refresh cases that it already starts out hidden) and if it is visible, we set a timeout for one second that triggers the click event if you were to manually click the link to hide the map.&lt;/p&gt;
&lt;p&gt;Why the delay? Well, the IDX plugin loads the data first and then makes a call to render the Google Map. If I hide the map immediately, something odd happens and the map isn’t rendered properly. It could be related to parsed map points, it could be something else. I’m not 100% sure. That said, when the page loads, the animation if hiding isn’t that visible (if at all) and you could potentially slide this down to half a second.&lt;/p&gt;
&lt;p&gt;Next time you load the page, it’ll look like this:&lt;img src=&quot;@assets/images/posts/2015-04-real_estate_matching_your_search___jerry_fohrman21.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;…and that’s it! Hope this helps! Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Breaking The Triad</title><link>https://dillieo.me/posts/development/2015-04-28-breaking-the-triad/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-28-breaking-the-triad/</guid><description>Breaking The Triad</description><pubDate>Tue, 28 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, I guess it was bound to happen, especially after I started blogging about becoming a “&lt;a href=&quot;/ack-im-becoming-a-default-user&quot;&gt;default&lt;/a&gt;” user.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For the past couple of year, I’ve enjoyed a “platform independence” by using a MacBook Pro laptop, Google Nexus 9 tablet, and Windows Phone 8 for my three main devices. I kind of went against my &lt;a href=&quot;http://evangelicaloutpost.com/archives/2012/08/which-walls-do-you-prefer.html&quot;&gt;own thoughts&lt;/a&gt; about picking a platform that works for you and sticking to it. It also allowed me dive a bit deeper into the various platforms to see their offerings and strengths.&lt;/p&gt;
&lt;p&gt;Soon things will be a little less diverse. By the end of the week I’ll be dropping my Windows Phone for an iPhone 6.&lt;/p&gt;
&lt;p&gt;Oddly enough, the leading reason is availability. I’m on Verizon, which has given us great service, but the number of Windows Phone devices available has dwindled to one Lumia model and an odd ball one. Both are rather old. I had scoured down a Nokia Icon through Amazon, but with the model already a year or so old, I was a little wary that it wouldn’t last 2 years. My HTC 8X is barely holding on.&lt;/p&gt;
&lt;p&gt;The second reason, and one that has been growing, is the “handoff” integration that is available between the phone and the laptop. I do most of my work from home, and having the ability to sync up text messages/phone calls from the phone to the laptop will be a time and resource saver. I can potentially use the full laptop as a “speakerphone” for some of my conference calls. Plus moving files back and forth as needed looks to be nice. I had an iPod Touch back in the day, but it was mainly for music and a few games. This will be my first “deep dive” into the iOS environment and it’ll be interesting to see what happens.&lt;/p&gt;
&lt;p&gt;So there ya go, life is getting a little “simpler” potentially and new tech journeys to discover. Oh, and my wife is getting a Google Nexus 6. I’m rather excited for her too 8^D&lt;/p&gt;
</content:encoded></item><item><title>Fixing Video Display Issues With Vmware Fusion And Windows 10</title><link>https://dillieo.me/posts/development/2015-04-22-fixing-video-display-issues-with-vmware-fusion-and-windows-10/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-22-fixing-video-display-issues-with-vmware-fusion-and-windows-10/</guid><description>Fixing Video Display Issues With Vmware Fusion And Windows 10</description><pubDate>Wed, 22 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve really been enjoying Windows 10, even while in the Technical Preview mode. I think they’ve done a fabulous job at bridging the gap between the “traditional desktop” and the “metro interface” (the “convergence” thing). I’m also quite giddy for the day I can say “Hey Cortana! Open Visual Studio” and BAM there it is. I’ve been experiencing Windows 10 using VMWare Fusion. Unfortunately the typical “dynamic sizing” video behavior isn’t working and going to full screen mode doesn’t help either. After a little tweaking and testing, I’ve found a trick that works.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The trick is to simply not use the VMWare Fusion video driver at all. The build in display drivers that are coming in the technical previews work just fine and provide the higher resolutions you need. So I simply uninstalled VMWare Tools, which removed the video driver and restored the default one. After a system reboot I reinstalled VMWare Tools, but I used the “custom” option and omitted installing the video driver. I still need all the other benefits (like copying files between VM and Desktop) that VMWare Tools provides. Problem solved!&lt;/p&gt;
&lt;p&gt;Without having the SVGA driver, you won’t get the added bonus of “dynamically resizing” your desktop window and having the resolution auto adjust. This wasn’t the end of the world for me. I was happy to be able to use some resolutions that matched my MacBook Pro display, or larger 24” monitor, especially when going into full screen mode.&lt;/p&gt;
&lt;p&gt;Oh, another quick tip. Not sure what your screen resolutions are? The display settings only deal with default or “scaled” resolutions. The default options can be found by clicking the apple icon at the top left and select “About this Mac.” The second tab has your display resolutions.&lt;img src=&quot;@assets/images/posts/2015-04-about_this_mac_and_win10-fresh.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Ack Im Becoming A Default User</title><link>https://dillieo.me/posts/development/2015-04-20-ack-im-becoming-a-default-user/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-20-ack-im-becoming-a-default-user/</guid><description>Ack Im Becoming A Default User</description><pubDate>Mon, 20 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I remember the first thing I did when I setup Windows 3.1 back in the day was cutomzie most of the icons and sounds. Homer Simpson’s “to start press any key… where’s the any key?” never grows old. There was this crazy “psychadelic mouse trail” cursor that I would use to run all over the screen. While the concept of backgrounds wasn’t prevalent too much then, I did have some fun gif’s that I had downloaded from a BBS that I would peek at from time to time. I had probably a dozen specialized apps for just about everything I did on that machine &lt;em&gt;[including a self build Z-Modem batch download script]&lt;/em&gt;, and I was proud of my tricked out computer.&lt;/p&gt;
&lt;p&gt;Fast forward about a quarter of a century. As I finished &lt;a href=&quot;/digital-treasures&quot;&gt;finding some old photos&lt;/a&gt; last week, I found myself settling into the Photos app groove. I initially thought I’d just take advantage of it being able to scan all of my import directories, but I liked the final result and started doing facial recognition too. There’s nothing “whiz bang” amazing in here, but it gets the job done in a familiar way with a few extra perks, like some simple photo tools. After a recent rebuild, I think the amount of “custom” software that isn’t work related can be counted on one hand. What’s happening to me?! Next thing I knew, I was drifting into iTunes...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Photo courtesy of &lt;a href=&quot;http://nl.wikipedia.org/wiki/Bestand:Keyboard-anykey.jpg&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;…and surprisingly enough iTunes isn’t that bad &lt;em&gt;[I can hear the unfollow clicks going like mad right now]&lt;/em&gt;. It’s giving me podcasts, my personal music, and my internet streams nice and simple. There’s the added perk that when work calls in via Skype, the music automatically pauses itself and resumes after the call. I have my background set to cycle through the photo library &lt;em&gt;[family pics is always a great motivator]&lt;/em&gt; and that is pretty much it.&lt;/p&gt;
&lt;p&gt;What’s happening to me?! What happened to that uber geek that opted for a typewriter sound response on every key press every now and then?! I think a couple of things have occurred.&lt;/p&gt;
&lt;h3&gt;Computing is more utility than novelty for me&lt;/h3&gt;
&lt;p&gt;Granted I pretty much always knew I was going to be a software engineer, computers were still very much a hobbyist/novelty type setup in the home. Tablets and smart phones were non-existent. It wasn’t as simple as “start up device and get on the internet” back then &lt;em&gt;[PLEASE don’t make me setup Trumpet Winsock for Win95 again!],&lt;/em&gt; and so a bit of “flair” was warranted once you got things up and running. Now we grab a simple tablet at our local store for a tenth of the cost of the computer I purchased for college and it does 10 times more than that computer ever did. My focus has shifted from “enjoying cool things” to “getting things done” and so the need for getting as much done with as little effort as possible has taken priority. Add to this how simple it is to wipe the computer clean and start over when the machine gets sluggish or a virus, and all that customization seems to be for naught, and not worth the reconfiguration after the rebuild.&lt;/p&gt;
&lt;h3&gt;I do less consuming and more producing on a computer now&lt;/h3&gt;
&lt;p&gt;I’m not knocking the consumption racket. I do a fair amount of Facebook, read lots of blogs/news through Feedly, and my kids pulled me into this “Royal Story” (think Farmville-ish) game so we can help take care of each others kingdoms. Part of beauty of our technology is that these things are available to us. But my mindset now is more towards “How can I give back? What can I build?” that drives my setup. Whether that is blogging some programming tips, sharing some &lt;em&gt;[hopefully]&lt;/em&gt; insightful posts, or writing apps, the focus of my computing shifts toward that direction. I spend a far longer time these days setting up an optimal dev environment (dark color scheme, special font, additional plugs) than anything else. I even have a &lt;a href=&quot;http://desk.pm&quot;&gt;special tool&lt;/a&gt; now that makes it more efficient for me to blog.&lt;/p&gt;
&lt;p&gt;Ultimately I’m probably just getting old and don’t have time for these “crazy kid tricked out digital appliance stuff” 8^D. I wrote a few years ago about &lt;a href=&quot;http://evangelicaloutpost.com/archives/2012/08/which-walls-do-you-prefer.html&quot;&gt;just picking a platform&lt;/a&gt; and sticking to it. I’ll admit that I haven’t followed my own rules up until this point. Who knows, I just may get an iPhone afterall when it’s time to rotate out my phone next month...&lt;/p&gt;
&lt;p&gt;How have you seen your computer use change over time?&lt;/p&gt;
</content:encoded></item><item><title>Creating Reusable Text Snippets With Shortcodes In Sitefinity</title><link>https://dillieo.me/posts/development/2015-04-15-creating-reusable-text-snippets-with-shortcodes-in-sitefinity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-15-creating-reusable-text-snippets-with-shortcodes-in-sitefinity/</guid><description>Creating Reusable Text Snippets With Shortcodes In Sitefinity</description><pubDate>Wed, 15 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the requests/challenges that I’ve come up against while working on a new project with &lt;a href=&quot;http://www.sitefinity.com&quot;&gt;Telerik’s Sitefinity&lt;/a&gt; CMS is providing a means of reusing text at a more granular than what a typcial shared content block provides. I needed to provide a way that was reusable, as well as easy for the end user to maintain and use. After some digging and tweaking, I’ve found what I believe to be an ideal solution. By combining shared content blocks and &quot;short codes”, you can make this happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Scenario&lt;/h3&gt;
&lt;p&gt;It might be helpful to provide a little more background. I’m working on a site for a financial type institution, and they have a series of fees and rates that they display on various pages in the site. The places where these values isn’t a trivial amount, and currently there is a time intensive process of going through the updates, since it has to be submitted and approved to perform by the technical staff. There is no sense of “reuse” here. Ideally, the end users would be able to update the fees/rates in a single location and have it update anywhere it was referenced. This would also give the end users the flexibility to create new pages as needed with this information.&lt;/p&gt;
&lt;h3&gt;Content Blocks Almost Work&lt;/h3&gt;
&lt;p&gt;If you’ve worked with SiteFinity, the immediate though is to create a set of shared content blocks. This is a GREAT feature and allows you to create the content once, and then add it to other pages as you need it. If you update the block, all affected pages are also updated accordingly. The one glitch to this is that we can’t embed content blocks into other content blocks using the layout editor. In addition, content blocks are structured to be just that, blocks. We couldn’t drag/drop two of them next to each other in the page editor and have a “flowing” text result.&lt;/p&gt;
&lt;h3&gt;Shortcodes to the Rescue&lt;/h3&gt;
&lt;p&gt;If you’re familiar with WordPress at all, you’ll know that they have a beautiful feature called “shortcodes”. Shortcodes allow you enter a friendly tag of code (such as [youtube:a311n]) in your editor and have the result be displayed a full HTML chunk when it is rendered on the page. This allows you to have cleaner code while editing your content, and allows those that are not as tech saavy to be able to embed more complex features in their pages. SiteFinity already has a great overview on how to build a shortcode processor into your content block template &lt;a href=&quot;http://www.sitefinity.com/blogs/team-blog/2012/12/04/supporting-shortcodes-in-sitefinity-content&quot;&gt;here&lt;/a&gt;. What we want to do is to be able to create short codes using the format of...&lt;/p&gt;
&lt;p&gt;[RateValue:Title of Content Block]&lt;/p&gt;
&lt;p&gt;…and have that value retrieved from SiteFinity and injected into the content block text. I’ve made a few tweaks for my needs, but the core method to look at is this one:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/51ce10eca1928de3e414&lt;/p&gt;
&lt;p&gt;Since we are going to have multiple shortcodes in our content block, we use a regular expression to find just the “rate value” tagged ones in this method. We also use a grouped match so that we have the title of the content block we want is available for our query, instead of having to parse the tag a second time. In addition, we add an extra filter to the content block query itself so that we could potentially have titles with the same name, and retrieve only the one we need. More details on adding category filters (they call them taxonomies under the hood) to queries can be found &lt;a href=&quot;http://docs.sitefinity.com/add-and-remove-taxonomies-add-categories&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Build Your Content Blocks&lt;/h3&gt;
&lt;p&gt;With our content block template updated to look for shortcodes, we can get to work. Go into the SiteFinity admin panel and create a new content block. Give it a simple title, and down at the bottom, make sure to assign it to the “RateValues” category we are going to filter off of:&lt;img src=&quot;@assets/images/posts/2015-04-newcontentblock.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Keep adding codes as needed. Once these are in place, you can go to your page (or create a new one) and start typing in shortcodes as we outlined earlier.&lt;img src=&quot;@assets/images/posts/2015-04-shortcodeseditor.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Notice how we have two different shortcode tags here, RateValue and FeeValue. We have two separate methods that do the parsing for them independently (full source code below). Once the page is finished, we publish and we can see the results on the page.&lt;img src=&quot;@assets/images/posts/2015-04-1_feeratesresult.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hazzah! Reusable text anywhere we want!&lt;/p&gt;
&lt;h3&gt;Final Notes&lt;/h3&gt;
&lt;p&gt;You may notice a couple of odd things when looking at the code:&lt;/p&gt;
&lt;p&gt;Duplicate Code - Yes, the FeeValue and RateValue shortcode processors could have easily been done in a single method that parses the category and title, but I’m keeping these separate for the time being since the needs for each might change, and thus processing would be different. Once things are finalized this could be refactored more.&lt;/p&gt;
&lt;p&gt;No Code Behind File - For this project, I chose to put my updated content block template within the project theme/templates that resides in the App_Data folder, as opposed to compiling down the C# code and placing it somewhere within SiteFinity itself. Part of this is for convenience of storing just the customized code in one location, part of this is crazy class/namespace referencing that occurs when you try to reference everything via code behind on the server. As a result you’ll see all the programming methods are in the ASCX file as well.&lt;/p&gt;
&lt;p&gt;Now be fruitful and shortcode! Oh, here’s the full content block template code. Just make sure to register the ContentBlockTemplate.ascx file as outlined in the shortcake template &lt;a href=&quot;http://www.sitefinity.com/blogs/team-blog/2012/12/04/supporting-shortcodes-in-sitefinity-content&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;https://gist.github.com/3bae0bc84b4b793a9152&lt;/p&gt;
</content:encoded></item><item><title>Digital Treasures</title><link>https://dillieo.me/posts/growth/2015-04-13-digital-treasures/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-04-13-digital-treasures/</guid><description>Digital Treasures</description><pubDate>Mon, 13 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;About 4 or 5 years ago, one of the hard drives on an old computer failed. While this typically doesn’t bother me much, this happened to be the drive that all of my photos were backed up on, and I hadn’t transferred most of it to DVD yet for archiving. Thankfully I was able to recover the images, but the cleanup would be a nasty task that I wouldn’t start until this weekend. However, the effort has been worth it as I’m finding some old “digital treasures” that I had forgotten about.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Due to the way the drive was damaged, the only way to attempt to restore the photos was to use a “low level” hard drive recovery tool that pulled EVERY image that existed on the system. Every photo, every program icon, every program button, all recovered. All of those browser buttons, images, links that get cached &lt;em&gt;[note: Facebook hasn’t really changed their logo in 5 years]&lt;/em&gt;, all of those were retrieved too. When the images were restored, they didn’t have their original folders, and sometimes not even their original names. When all was said and done, I had about 256 folders (not counting the nested ones) all named something like “recupdir_25” and 82,000 files to filter through.&lt;/p&gt;
&lt;p&gt;You can see now why I was reluctant to start off this task. Simply “eyeballing” the folders wouldn’t work and drilling down into each one drove me crazy after the third folder (8 when you count the subfolders beneath them). I shelved this project and forgot about it off and on as the years passed. I decided to try out the new “Photos” app that Mac had released and after migrating all the existing photos I had, I thought it was worth a shot to pour through the archive. The one advantage I could have was to let the import process weed out all the non-image files that were still stuck in the backup restores, and then I could manually browse through the imported images, assign albums to some of them, and flush out the icons and other images.&lt;/p&gt;
&lt;p&gt;I’m far from done (50,548 images left to go through at the time of this) but it has been amazing to hop into a time machine of sorts and remember what has happened. The photos are far from spectacular. My grandfather is the one that took &lt;a href=&quot;/2009/08/28/old-age-is-not-for-sissies&quot;&gt;amazing photos&lt;/a&gt;. But the memories that the photos bring back are the truly amazing things. So far my “digital” rummaging has brought back&lt;/p&gt;
&lt;p&gt;My first summer trip to France and the journaling I did many an evening sitting on the window sill of a third floor apartment (photo above).&lt;/p&gt;
&lt;p&gt;The first big road trip we took with the kids to visit my best friend, his wife, and let our girls explore the ocean and sea.&lt;img src=&quot;@assets/images/posts/2015-04-f60063592.jpg&quot; alt=&quot;&quot; title=&quot;...such a huge world for little eyes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The simple pleasures, that feel like a photo is simply warranted.&lt;img src=&quot;@assets/images/posts/2015-04-100_9527.jpg&quot; alt=&quot;&quot; title=&quot;Hey, let&apos;s go!&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Experiencing crazy weather.&lt;img src=&quot;@assets/images/posts/2015-04-f20217056.jpg&quot; alt=&quot;&quot; title=&quot;This hat is 100% propelled by Chicago winds...&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Seeing what happens when you get older and all your close friends have kids too.&lt;img src=&quot;@assets/images/posts/2015-04-groupshot.jpg&quot; alt=&quot;&quot; title=&quot;I&apos;m not sure if we&apos;ll ever by fully serious 8^D&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There are still heaps of photos to pour through and it will be wonderful to see what else is there. It is a great reminder that while I most likely will not have every little whim and want that goes through my mind in this lifetime, I have more than &lt;a href=&quot;/enough&quot;&gt;enough&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Creating Custom Formatted Layout Widgets In Sitefinity</title><link>https://dillieo.me/posts/development/2015-04-09-creating-custom-formatted-layout-widgets-in-sitefinity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-09-creating-custom-formatted-layout-widgets-in-sitefinity/</guid><description>Creating Custom Formatted Layout Widgets In Sitefinity</description><pubDate>Thu, 09 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m moving fast and furious through the &lt;a href=&quot;http://sitefinity.com/&quot;&gt;Telerik SiteFinity CMS&lt;/a&gt; platform as of late. One thing we’re looking to do is to provide “formatted layout widgets” that will allow our end users to add more complex elements to their pages that are formatted nicely. The resources are there in SiteFinity, there’s just a couple of pieces not immediately known that you need to make it work.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is a little more detail of the situation. Let’s say you’re building a site that will have a lot of content pages. To add a little bit of uniformity to the pages, you want to have a consistent header with a list of items attached below it. We’ll put a nice background on it so that it sticks out from the rest of the content on the page. It would look something like this:  For this widget, I essentially have 3 main components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A div wrapper around everything for a background&lt;/li&gt;
&lt;li&gt;A H1 tag for the header&lt;/li&gt;
&lt;li&gt;An unordered list for my items&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I COULD repeat this process on every single page, but that would start to get a little hectic and monotonous. In addition, what if I wanted the background color to be different. Having to update all the pages would be a huge hassle. Instead, what we are going to do is to extend (so to speak) the custom layout widget that is provided in SiteFinity to include some additional styling and content elements within it. I won’t go into step by step details on how to create the custom layout, but you can follow the guidelines found &lt;a href=&quot;http://docs.sitefinity.com/layout-widgets-create-custom-layout-widgets&quot;&gt;here&lt;/a&gt;. The trick to generating our formatted custom layout widget, is to know (which took some digging) that SiteFinity keys off of the sf_colsIn and sf_colsOut classes to generate the placeholder elements in the editor for you to add your content in. With that in mind, the control you see above is actually rather simple:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/0141fe0bfaf0c9f21b53&lt;/p&gt;
&lt;p&gt;Notice how we create a div wrapper around our H1 tag using the “sf_colsOut&quot; class. We also use the &quot;data-placeholder-label&quot; attribute to display a friendly prompt in the editor. We then add the “sf_colsIn” class to the H1 element itself, which is were our content will go. We repeat this for the content div block. We leave this section option so that the user could add other content, and not just an unordered list. Finally, we add our “fancy-layout” class to the div block surrounding it all. The CSS for this looks like this:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/dcf3c98376987ad4eb98&lt;/p&gt;
&lt;p&gt;Once you’ve registered the custom layout with your SiteFinity instance (directions found &lt;a href=&quot;http://docs.sitefinity.com/layout-widgets-create-custom-layout-widgets&quot;&gt;here&lt;/a&gt;), you can create a new page, and then click on the “Layouts” button near the top right of the editor. Your layout should show up in the list:&lt;img src=&quot;@assets/images/posts/2015-04-layoutwidgetpanel.png&quot; alt=&quot;&quot; /&gt; Drag this layout into your main content area (or elsewhere) and you’ll see the placeholders generated for it:&lt;img src=&quot;@assets/images/posts/2015-04-layoutwidgetdrag.png&quot; alt=&quot;&quot; /&gt; Finally, go back to the Content view and you can drag/drop content blocks into the necessary areas:&lt;img src=&quot;@assets/images/posts/2015-04-layoutwidgetcontent.png&quot; alt=&quot;&quot; /&gt; You can see how the styling is applied. Publish your page and view the final results. The nice thing is that the layout widget is independent of anything else in the area in which you place it. You can add more content above and below it as needed:&lt;img src=&quot;@assets/images/posts/2015-04-layoutwidgetfinal1.png&quot; alt=&quot;&quot; /&gt; There you have it! By working with the special sf_colsOut an sf_colsIn classes, you can go beyond basic layout controls to apply special formatting and create reusable “formatted layout widgets” to use within your SiteFinity pages.&lt;/p&gt;
&lt;p&gt;A couple of important followup notes based on this code.&lt;/p&gt;
&lt;p&gt;While I&apos;m not 100% sure why, it is important to add the &quot;customClass&quot; with the &quot;sf_cols&quot; class definition, in addition to the &quot;CustomClass&quot; with the &quot;sf_colsOut&quot; class definitions. When I began to work on complex custom layouts, there were text areas that would display just fine in edit and preview mode, but would disappear when the page was rendered. A lot of trial an error revealed that these needed to be there. It could be due to some coding that renders the &quot;droppable areas&quot; used in the site.&lt;/p&gt;
&lt;p&gt;Similarly, I&apos;ve put all of my custom classes after the Sitefinity class definitions. I think this may work in any order, but I&apos;ve had the most success when they were put at the end.&lt;/p&gt;
</content:encoded></item><item><title>Wants And Needs</title><link>https://dillieo.me/posts/growth/2015-04-08-wants-and-needs/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-04-08-wants-and-needs/</guid><description>Wants And Needs</description><pubDate>Wed, 08 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;How do you distinguish between your wants and needs?&lt;/h2&gt;
&lt;p&gt;I think nearly every week I ask myself this question. The response is always varied, but there are some fundamental things I always turn back to...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My grandfather once told me there are only 4 things you truly need in life:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Food&lt;/li&gt;
&lt;li&gt;Water&lt;/li&gt;
&lt;li&gt;Shelter&lt;/li&gt;
&lt;li&gt;Clothing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Outside of that, there isn’t much else to consider. He liked to gripe &lt;em&gt;[in that good way]&lt;/em&gt; that people spent too much money on their gadgets and cars and trinkets, when they should be spending more on better food (of the fresh fruit and veggies kind) and making sure their rent is paid and that their clothes don’t have too many holes, fit proper, and actually keep you warm in winter.&lt;/p&gt;
&lt;p&gt;Most else becomes tertiary. I believe there are personal and spiritual needs as well. I think we all need some time to oneself to ponder, read, pray, to enrich oneself. But unpacking that is something best left for a longer day and a clearer head.&lt;/p&gt;
&lt;p&gt;_&lt;br /&gt;
_&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This blog post is part of the Inspiration Pack provided by &lt;a href=&quot;http://desk.pm&quot;&gt;Desk&lt;/a&gt;, a publishing app for OSX.&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>Installing Sitefinity With Iis 8 Sql Server 2012 And Windows Server 2012</title><link>https://dillieo.me/posts/development/2015-04-02-installing-sitefinity-with-iis-8-sql-server-2012-and-windows-server-2012/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-04-02-installing-sitefinity-with-iis-8-sql-server-2012-and-windows-server-2012/</guid><description>Installing Sitefinity With Iis 8 Sql Server 2012 And Windows Server 2012</description><pubDate>Thu, 02 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m working on a new project that uses the &lt;a href=&quot;http://sitefinity.com&quot;&gt;Sitefinity CMS&lt;/a&gt; by Telerik. So far I’ve been impressed with the architecture and features it provides. The documentation is robust and there is good support. I did run into a couple of snags installing a new Sitefinity instance on an Azure VM that is running Windows Server 2012, IIS 8, and SQL Server Express 2012. Here are a few tweaks you’ll need to make to get an install working.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;If you specify a “SQL Server Express” install during the setup, it will use the file system and create a.MDB file in your App_Data folder, which we don’t want. We want to use the database itself.&lt;/p&gt;
&lt;p&gt;After some digging, and tweaking, I found the following article that really outlines everything nicely:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server&quot;&gt;http://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you don’t want to read the entire thing, here are the highlighted points of the article below.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: First use the Sitefinity Project Manager app to install the files in the location of your choosing, but do not check the box at the end to open up the administration settings. With the files in place, you’ll want to do the things outlined below.&lt;/p&gt;
&lt;h3&gt;Change the Application Pool identity to Network Service&lt;/h3&gt;
&lt;p&gt;With IIS 7.5 or so, the security was updated to create an individual AppPoolIdentity account for each website. Unfortunately we can’t link this identity up to a SQL Server login, which we ultimately want. Changing the identity for the application pool (in Advanced Settings) to “Network Service” will bypass these issues.&lt;/p&gt;
&lt;h3&gt;Grant Full Control of the App_Data folder to the Network Service account&lt;/h3&gt;
&lt;p&gt;Since the site will be running under the Network Service user, we need to give them full control of the App_Data folder in order to upload files, add templates, etc. You can do this by opening the preferences for the App_Data folder in file explorer and adding the user in the security tab. Make sure to go back to the advanced options and apply the security to all child folders of the App_Data folder.&lt;/p&gt;
&lt;h3&gt;Add a Network Service login in SQL Server and give it sysadmin privileges&lt;/h3&gt;
&lt;p&gt;Oddly enough you can’t add the Network Service user through the Management Studio interface, but you can do it in a standard query window with the following statement:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CREATE LOGIN&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Once you’ve done this, you can use the Management Studio interface to grant the user the “sysadmin&quot; role. After the initial database is created you can go back in and refine the security a bit more for your specific database.&lt;/p&gt;
&lt;h3&gt;Finish Installation&lt;/h3&gt;
&lt;p&gt;Now that the settings are in place, you can launch the website and step through the process to complete the installation. You should be able to select “Microsoft SQL Server” (not express) as your database option, use “Windows Authentication” and simply provide the name of the server and database. This will work with a SQL Server Express install as well, simply use MACHINE NAME\SQLEXPRESS as the server name and you should be set.&lt;/p&gt;
&lt;p&gt;Sometimes the devil is in the details, and these small details took me the better part of a day and a half to finally piece together. Next time, it won’t be so crazy.&lt;/p&gt;
</content:encoded></item><item><title>Routines Work 90Percent Of The Time</title><link>https://dillieo.me/posts/development/2015-03-31-routines-work-90percent-of-the-time/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-03-31-routines-work-90percent-of-the-time/</guid><description>Routines Work 90Percent Of The Time</description><pubDate>Tue, 31 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For about the past month or so now, I’ve been able to settle into a pretty good routine. That is for about 90% of the time. Then routines don’t work, but it’s not the end of the world.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Lately my mornings involve getting up a bit earlier than the rest of the family so I can get some “God time” in &lt;em&gt;[as I call it to the kids]&lt;/em&gt;, followed by some reading or blogging and some coding on my &lt;a href=&quot;http://prayerjournal.apphb.com&quot;&gt;prayer journal project&lt;/a&gt;. Twice a week now I’m swapping the reading/coding for running. It’s fabulous to get into that groove again.&lt;/p&gt;
&lt;p&gt;Sometimes the routine gets broken. The kids get up a little earlier than planned. Some chores need attending to. Appropriately enough, I intended to run this morning, but my body is still a bit sore and the spring pollen is starting to trigger some allergies and a headache, not conducive to running.&lt;/p&gt;
&lt;p&gt;The important point is not to let the break in the routine ruin your day. Things happen. Life is messy. It is important to be flexible and pliable enough in your life to adapt and move on. I used to be &lt;em&gt;[and admittedly so still am to some degree]&lt;/em&gt; rather “firm” on schedules/routines. If something came up to alter that, I would grit my teeth, take the pressure, and move on. No matter how firm or “rock solid” you can be, life is bigger and will chip away at your if you keep this attitude too long. Eventually you will crumble away.&lt;/p&gt;
&lt;p&gt;Instead, be flexible with your schedules/routines, like a rubber ball. When the pressure comes, you’ll be squeezed, but you’ll spread and flatten out. You’ll make do with the space you have, but more importantly, you won’t crumble. When the pressure is removed, when life goes back to normal &lt;em&gt;[whatever THAT is 8^D]&lt;/em&gt; you’ll go back to the shape you were in, and continue on. Today I didn’t run, but I blogged instead. Previous iterations of me would be rather upset at this, grumbling along the way. Today I see it as just an alteration, a bit of pressure. I squeezed and made room. I blogged this morning! Tomorrow I’ll run. The day after I’ll go back to normal, unless something else comes up.&lt;/p&gt;
</content:encoded></item><item><title>How To Add Foundation Icons To Zurb Foundation For Applications</title><link>https://dillieo.me/posts/development/2015-03-26-how-to-add-foundation-icons-to-zurb-foundation-for-applications/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-03-26-how-to-add-foundation-icons-to-zurb-foundation-for-applications/</guid><description>How To Add Foundation Icons To Zurb Foundation For Applications</description><pubDate>Thu, 26 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been working on my &lt;a href=&quot;http://prayerjournalapp.wordpress.com/&quot;&gt;prayer journal&lt;/a&gt; project using &lt;a href=&quot;http://foundation.zurb.com/apps/&quot;&gt;Zurb Foundation for Applications&lt;/a&gt; (Z4A) and it has been going great. One thing that is nice is that Z4A comes bundled with a small set of the &lt;a href=&quot;http://useiconic.com&quot;&gt;Iconic&lt;/a&gt; icon library. These are SVG icons that are easily scalable, styled, and sized. While this was nice, the available icons was too limited for me. I’d rather use the &lt;a href=&quot;http://zurb.com/playground/foundation-icon-fonts-3&quot;&gt;Zurb Foundation Icon Fonts&lt;/a&gt; that they worked hard on, have more options, and are just as stylable. There is a tiny amount of work to integrate this with a Z4A app, and here’s how you do it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;1. Get the icons and transfer to your app&lt;/h3&gt;
&lt;p&gt;Since Z4A has a nice gulp/bower structure for front end development, but there isn’t a bower repository (at least that I found) that has the latest version of the icons. Instead, &lt;a href=&quot;http://zurb.com/playground/foundation-icon-fonts-3&quot;&gt;download&lt;/a&gt; the font icon package and extract all of the files with the name “foundation-icons” to the client/assets/scss folder within your application.&lt;/p&gt;
&lt;h3&gt;2. Reference icons in your main SCSS file&lt;/h3&gt;
&lt;p&gt;Even though the icon font was built using traditional CSS, you can still merge them in to the SCSS based styling within our Z4A app. Open the app.css file and add the following line below the existing imports statements that are already there:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@import foundation-icons.css&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;3. Update gulp script to copy files to build location&lt;/h3&gt;
&lt;p&gt;We need to transfer all of the icon resources (css, eot, etc.) files to the build destination since they won’t automatically be embedded in the final app.css file that is generated by gulp. Locate the “copy” task that was defined in your gulp.js file and add the following command somewhere in there:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// Add Foundation Icons gulp.src(&apos;client/assets/scss/foundation-icons.\*&apos;).pipe(gulp.dest(&apos;./assets/css/&apos;&amp;gt;))&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;4. Add icons and enjoy&lt;/h3&gt;
&lt;p&gt;Finally, add icons to one of your HTML templates, run your gulp build, and enjoy. For example, I’ve created a button bar at the footer of my app with markup like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;grid-block shrink hide-for-large footer-actions&quot;&amp;gt; &amp;lt;div class=&quot;small-12 medium-12 content&quot;&amp;gt; &amp;lt;ul class=&quot;icon-top large-icon-left menu-bar&quot;&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a ui-sref=&quot;Prayers&quot;&amp;gt;&amp;lt;i class=&quot;fi-home&quot;&amp;gt;&amp;lt;/i&amp;gt; Prayers&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a ui-sref=&quot;AddPrayer&quot;&amp;gt;&amp;lt;i class=&quot;fi-plus&quot;&amp;gt;&amp;lt;/i&amp;gt; Add Prayer&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a ui-sref=&quot;Groups&quot;&amp;gt;&amp;lt;i class=&quot;fi-torsos-all&quot;&amp;gt;&amp;lt;/i&amp;gt; Groups&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That looks like this:&lt;img src=&quot;@assets/images/posts/2015-03-fullscreen_3_26_15__9_36_am.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There you have it! Not terribly difficult and you have a whole slew of icons at your disposal. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>That First Mile</title><link>https://dillieo.me/posts/growth/2015-03-24-that-first-mile/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-03-24-that-first-mile/</guid><description>That First Mile</description><pubDate>Tue, 24 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I run, the first mile is always the trickiest thing for me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I have a tendency to go out too hard when I first start running. I think that I’m still in the prime of my college years, pulling down 15 miles without much effort on a long day. I guess when I was in college I thought I was in the peak of my high school career, slamming some laps around the track without much of a sweat. 8^D While the notions of pushing yourself and attacking the run are admirable (I try to do this on all my runs), putting all of your effort into that first mile when you have another 2 (or 4, or 6) to go saps you of all your energy and the remainder of the run is painful, and not in the good way.&lt;/p&gt;
&lt;p&gt;When done properly (like this morning), I gauge myself to hit that 80% or 90% effort mark. This allows me to get my legs moving, get the body into it’s groove, but not deplete all of my energy for the rest of the run. By the end of the first mile, I feel ready to tackle the rest of the run ahead of me. I try really hard not to worry about the time for this mile, it’s more of a warm up lap than anything else.&lt;/p&gt;
&lt;p&gt;When you look at it, a 10 minute, 9 minute, 10 minute mile is a lot better than an a 8 minute 10 minute 14 minute mile. Trust me, those later miles can really start adding up when your body is wiped. The mental battle goes up exponentially as well.&lt;/p&gt;
&lt;p&gt;So today’s blog post is just a random running tip. Deeper thoughts about running and life can come later. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Late Nights And Early Mornings</title><link>https://dillieo.me/posts/growth/2015-03-20-late-nights-and-early-mornings/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-03-20-late-nights-and-early-mornings/</guid><description>Late Nights And Early Mornings</description><pubDate>Fri, 20 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today’s &lt;a href=&quot;http://talk.desk.pm/t/daily-post-3-20-2015/1590&quot;&gt;daily writing prompt&lt;/a&gt; over at &lt;a href=&quot;http://desk.pm&quot;&gt;Desk&lt;/a&gt; asks a somewhat simple question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What keeps you up at night?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For me, it’s a bit of what keeps me up at night and what gets me up early in the morning...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve been spending some late nights and early mornings on the following:&lt;/p&gt;
&lt;h3&gt;Books&lt;/h3&gt;
&lt;p&gt;I’ve been reading through Hugh Howey’s &lt;a href=&quot;http://www.amazon.com/Shift-Omnibus-Silo-Saga-2/dp/1481983555/ref=sr_1_1?ie=UTF8&amp;amp;qid=1426887908&amp;amp;sr=8-1&amp;amp;keywords=hugh+howey+shift&quot;&gt;&lt;em&gt;Shift&lt;/em&gt; series&lt;/a&gt; (definitely read &lt;a href=&quot;http://www.amazon.com/Wool-Hugh-Howey/dp/1476733953/ref=sr_1_1?ie=UTF8&amp;amp;qid=1426887940&amp;amp;sr=8-1&amp;amp;keywords=hugh+howey+wool+omnibus&quot;&gt;Wool&lt;/a&gt; first!) and it has been riveting! I first read the &lt;a href=&quot;http://www.amazon.com/Books-Ember-Omnibus-Jeanne-Duprau-ebook/dp/B0084U4KC2/ref=sr_1_1?ie=UTF8&amp;amp;qid=1426887988&amp;amp;sr=8-1&amp;amp;keywords=city+of+ember+omnibus&quot;&gt;City of Ember&lt;/a&gt; series and while they seem to start off with the same general “mystery”, the Silo Series (Wool, Shift, Dust) takes it to a completely different level. I’m hooked! I think you will be too.&lt;/p&gt;
&lt;p&gt;In the mornings as part of my devotional time I’ve been reading &lt;a href=&quot;http://www.amazon.com/Hearing-God-Developing-Conversational-Relationship/dp/0830835695/ref=sr_1_1?ie=UTF8&amp;amp;qid=1426888077&amp;amp;sr=8-1&amp;amp;keywords=hearing+god&quot;&gt;&lt;em&gt;Hearing God&lt;/em&gt;&lt;/a&gt; by Dallas Willard. It has really been opening my eyes into how to developer a deeper conversation with God, and that often times I overcomplicate things.&lt;/p&gt;
&lt;h3&gt;Pet Project&lt;/h3&gt;
&lt;p&gt;Some nights and mornings are also spent to getting my &lt;a href=&quot;http://prayerjournalapp.wordpress.com/&quot;&gt;Prayer Journal&lt;/a&gt; project out and functional. I’m _soooo close _to getting the &lt;a href=&quot;https://prayerjournalapp.wordpress.com/2014/12/23/platform-shift/&quot;&gt;new platform&lt;/a&gt; up and running, but there always seems to be one last little thing to fix before it is in something of an alpha shape.&lt;/p&gt;
&lt;p&gt;Sure I have lost a few bits of sleeping hours over the last couple of weeks, but as long as I can balance it out I’m finding all this time rather enriching, entertaining, and educational!&lt;/p&gt;
&lt;p&gt;What keeps you up at night?&lt;/p&gt;
</content:encoded></item><item><title>Treat Your Database Like Code</title><link>https://dillieo.me/posts/development/2015-03-18-treat-your-database-like-code/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-03-18-treat-your-database-like-code/</guid><description>Treat Your Database Like Code</description><pubDate>Wed, 18 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Based on some recent project experience, I had a guest post over at my employer&apos;s blog today about how to manage your database better in your projects.&lt;/p&gt;
&lt;p&gt;Check it out here: &lt;a href=&quot;http://www.freshconsulting.com/treat-database-like-code/&quot;&gt;http://www.freshconsulting.com/treat-database-like-code/&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Programming For Kids</title><link>https://dillieo.me/posts/development/2015-03-12-programming-for-kids/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-03-12-programming-for-kids/</guid><description>Programming For Kids</description><pubDate>Thu, 12 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I first cut my teeth into programming when I was 9 on an old TI-99/4A on a black and white television. It took me several hours to copy some TI-BASIC code out of a book and into a simple editor screen. The results blew my mind. A simple little ball (I think it was red, but again this was a black and white TV 8^D) would bounce move my screen and when it reached an edge it would “bounce” and make a random noise. I’ll admit I really didn’t know what I was working with then. I suspect I was working with looping algorithm (for movement and keeping the app going), and a randomization algorithm (generating sound and the next direction for the ball to go. Overall it was pretty intense and there was no explanation in the code, just commands to type in.&lt;/p&gt;
&lt;p&gt;This past week my girls (nearly 9 now themselves) dived into their first world of programming. Thanks to a site called &lt;a href=&quot;http://studio.code.org&quot;&gt;Code Studio&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It wasn’t nearly as “syntax rich” with commands, but it it was more “semantically” rich with concepts. In one particular “puzzle” they had to move a friend around a tennis net to the other and have them do a little dance or something when done. Another one they had to get through a maze. The girls are just starting out but are hooked! They are working their way through the intro series, and then who knows where we’ll go from there. There are tons of options to go through.&lt;/p&gt;
&lt;p&gt;What is great about this approach is that they are learning more about general programming concepts and creating algorithms to solve problems (move left, move down, move right, toggle sound), than getting knee deep into code at this point. Yes they are building code, using a list of predefined options and a nice “block layout” to show how each command links to the next for sequencing, but they are learning fundamentals that will transfer into any programming language. It’s quite a bit of fun too! The girls can’t seem to get enough of it at the moment and my wife has indicated she might sign up and poke through some courses too. There are also some “Angy Birds”, “Plans vs. Zombies” and “Frozen” themed lessons to add to the fun.&lt;/p&gt;
&lt;p&gt;At a higher level, the problem solving skills, algorithm building, and general programming concepts will be invaluable no matter what path they choose in the future. _[Note: I am not pushing my girls to be programmers but will have no complaints if they want to have an in home hackathon sometime in the future 8^D] _Society is becoming increasingly technology rich _[wait… I have to program my thermostat now and make sure it gets updates from the internet?!]_ and having this fundamental knowledge will be a good thing.&lt;/p&gt;
&lt;p&gt;So get your kids programming! You can access &lt;a href=&quot;http://studio.code.org&quot;&gt;Code Studio&lt;/a&gt; from nearly any brower. My girls are actually accessing the lessons from their Nexus 7 tablets without a problem. If you’re looking for other resources, I’ve heard some great things about &lt;a href=&quot;https://www.gethopscotch.com&quot;&gt;Hopscotch&lt;/a&gt; (for iPad) and UK folks are lucky enough to be able to try out a &lt;a href=&quot;http://www.bbc.co.uk/cbbc/games&quot;&gt;Doctor Who based programming game&lt;/a&gt; over on the CBBC site.&lt;/p&gt;
&lt;p&gt;Know of any other kids programming resources? I’d love to hear about them! One day we’ll dive into C# over here. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Enabling Xdebug In Mamp For Osx</title><link>https://dillieo.me/posts/development/2015-03-10-quick-tip-enabling-xdebug-in-mamp-for-osx/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-03-10-quick-tip-enabling-xdebug-in-mamp-for-osx/</guid><description>Quick Tip Enabling Xdebug In Mamp For Osx</description><pubDate>Tue, 10 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve swapped over to &lt;a href=&quot;http://mamp.info&quot;&gt;MAMP&lt;/a&gt; for my local web development needs on OSX. I work with a variety of projects that require different versions of PHP, and MAMP allows me to change the PHP version quickly and easily. It also comes with a preconfigured MySQL instance for my database needs.&lt;/p&gt;
&lt;p&gt;By default, XDebug is not enabled in MAMP. I found plenty of MAMP Pro posts on how to setup XDebug, but not for simple MAMP. Here’s what you need to do.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Really the only trick to know is that MAMP keeps two configuration files for each PHP version. One serves as a template when you start up PHP. There are two files you need to edit:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/Applications/MAMP/conf/php\[version]/php.ini

/Applications/MAMP/bin/php/php\[version]/conf/php.ini
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In both of these files, go down to the very bottom of the config file, where the [xdebug] section is, and uncomment ( remove the; ) zend_extension line. In addition, add the following lines:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xdebug.remote_autostart=1 xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler=dbgp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The final result will look something like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[xdebug] zend_extension=&quot;/Applications/MAMP/bin/php/php5.4.34/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so&quot; xdebug.remote_autostart=1 xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler=dbgp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Restart MAMP (or launch it if you haven’t done so yet) and XDebug should be all set for whatever environment you use!&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Fancy Coffee</title><link>https://dillieo.me/posts/growth/2015-03-06-fancy-coffee/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-03-06-fancy-coffee/</guid><description>Fancy Coffee</description><pubDate>Fri, 06 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night a couple of coworkers and I drifted out to what was described to me as a “Willy Wonka and the Coffee Factory” type experience. A quick drive over the bridge into Seattle brought us to the Starbucks Reserve Roastery and Tasting Room. It is definitely an “experience” to try if you’re a coffee junkie.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;We went about 9:30 at night, which apparently was a good thing because the last time my coworker went the line was out the door and then some. When you go in there is a great smell of coffee and a somewhat “overwhelming” site to behold. If you’ve been to a brewery you’ll see those large silos of beer and ingredients, but this time they have coffee beans. From what we were told, some of the beans are roasted on site (they have two machines for that) and then they travel through a pneumatic tube (or conveyer in other places) into the main “station” where things are brewed.&lt;/p&gt;
&lt;p&gt;We were presented with a “menu” which had about 4 different flavors for the day as well as a plethora of options on how we can get our coffee. You can get it through the premium “Clover” machine, you can have it french pressed, vacuum extracted, or the “Melita” pour over method. It was a little odd at first. It feels a bit like a fancy wine or beer tasting place, but I’m just looking for coffee. There are high end coffee makers and mugs available too (one maker was wrapped in wool or something, crazy!)&lt;/p&gt;
&lt;p&gt;After I settled down with a clover brewed coffee (the name of the bean escapes me) and my coworkers sat down with a pair of espresso offerings and a “coffee over ice with a hint of mint” drink, we started to talk and relax a bit more and that’s when we really started to enjoy ourselves. It was a amazing to see all of the stuff they had there and everything from the chairs to the trays were rather nice and high quality. We shared our coffee drinks (much like you would if you were beer or wine tasting) and definitely had a tasting experience.&lt;/p&gt;
&lt;p&gt;It’s definitely not a place you’re going to when you’re running off to work, but for a late evening gathering with some friends, it was a very nice experience and something I’d like to do again. There was no “burnt” coffee taste here and some flavor combinations that definitely didn’t sound good, but tasted wonderful. If you’re a coffee junkie, give it a whirl sometime!&lt;img src=&quot;@assets/images/posts/2015-03-wp_20150305_003.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-03-wp_20150305_007.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-03-wp_20150305_002.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2015-03-gr002220_edited.jpg&quot; alt=&quot;Serious Coffee Junkie&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Anniversaries</title><link>https://dillieo.me/posts/development/2015-03-04-on-anniversaries/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-03-04-on-anniversaries/</guid><description>On Anniversaries</description><pubDate>Wed, 04 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was checking my WordPress stats the other day and an received a “note” that my blog was 6 years old this week! Where does the time go! Being the curious sort that I am, I decided to hop in the old time machine and see what I was doing back then.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Surprisingly enough, I was doing a lot of the same things now as I was doing then. My first main post covered getting Log4Net off the ground (since I hadn’t seen any large tutorials out there) and the I followed up with how mentoring was helping others as well as myself. I had some more fun recollecting my computers since I was a kid.&lt;/p&gt;
&lt;p&gt;The balance is all there, even before I decided to really flesh out &lt;a href=&quot;/why-i-blog&quot;&gt;why I blog&lt;/a&gt;. It seems like my older blog posts are more conversational. It could be I’m being more reminiscent, it could be I cared a lot less about keywords and general flow to my articles and I’m trying to be a bit more formal now. Who knows, but I’ll go back and read a bit more and see.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[outside of Bienvenue Monde]](&amp;lt;///i&amp;gt; was about mentoring and how the act was both a help to somebody else as well as myself. Then I did a big post about setting up Log4Net. I still use pieces of that one and followups to this day.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;gt;)&lt;/em&gt;[ was about mentoring and how the act was both a help to somebody else as well as myself. Then I did a big post about setting up Log4Net. I still use pieces of that one and followups to this day.](&amp;lt;///i&amp;gt; was about mentoring and how the act was both a help to somebody else as well as myself. Then I did a big post about setting up Log4Net. I still use pieces of that one and followups to this day.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;gt;)&lt;/p&gt;
</content:encoded></item><item><title>Standing And Sitting</title><link>https://dillieo.me/posts/development/2015-02-27-standing-and-sitting/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-27-standing-and-sitting/</guid><description>Standing And Sitting</description><pubDate>Fri, 27 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been a crazy couple of days, between Internet outages and having to reformat my laptop after a random driver fail, but somewhere in all of that my new desk arrived and I was able to get it installed!!!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This is an adjustable standing desk, with handy digital controls on the far right (you can’t see) to have preset values for standing and sitting. I’ll go into more detail on the benefits after giving it a run. Thanks &lt;a href=&quot;http://freshconsulting.com/&quot;&gt;Fresh&lt;/a&gt;!!!&lt;/p&gt;
</content:encoded></item><item><title>How To Debug Laravel Apps In Phpstorm</title><link>https://dillieo.me/posts/development/2015-02-24-how-to-debug-laravel-apps-in-phpstorm/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-24-how-to-debug-laravel-apps-in-phpstorm/</guid><description>How To Debug Laravel Apps In Phpstorm</description><pubDate>Tue, 24 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve mentioned it before, but I REALLY like &lt;a href=&quot;http://www.jetbrains.com/phpstorm/&quot;&gt;PHPStorm&lt;/a&gt; when I’m doing my PHP development. It’s the closest I’ve found to a Visual Studio quality IDE for the PHP environment. I use the debugger frequently, but have run into some issues trying to get Laravel apps to debug properly. After some trial and error, I’ve finally figured out how to get it working.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Note: These directions assume that you already have a PHP Application configured properly for your Laravel environment. If you don’t know how to set this up, go to your project configuration, and add a new “PHP Web Application” and proceed from there.&lt;/p&gt;
&lt;p&gt;Laravel applications don’t start in the root of your project code. They technically start in the “public” folder, which can cause issues when the debugger is looking for the appropriate files. To account for this, we will update our configuration to specify the path mapping for the files.&lt;/p&gt;
&lt;p&gt;The first step is to click the drop down title for your application near the top right in PHPStorm and select “Edit Configuration”.&lt;/p&gt;
&lt;p&gt;Next, select your PHP Web Application configuration and select the “…” button next to the server configuration name.&lt;img src=&quot;@assets/images/posts/2015-02-laraveldebug_step2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This brings up the server configuration window. Check the box that says, “Use path mappings” but don’t specify a path at this time. It seems weird to do it this way but this seems to be the only way to work for me. Click the “Apply” and then “OK” buttons.&lt;/p&gt;
&lt;p&gt;Now, start up the debugger. You can click the “bug” icon next to the configuration drop down or use the hot key CTRL+D. This will fire up your browser of choice, but most likely the page will be blank. If PHPStorm doesn’t immediately take focus, switch back over to it.&lt;/p&gt;
&lt;p&gt;You’ll notice that the console tab is selected, but nothing seems to be going on. If you click on the “Debugger” tab, then you’ll start to see what is going on.&lt;img src=&quot;@assets/images/posts/2015-02-laraveldebug_step4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The debugger gives us a “nastygram” saying that file path is not properly setup to the main index.php file. There is a blue link right below that to setup the path mappings. Click that link.&lt;img src=&quot;@assets/images/posts/2015-02-laraveldebug_step5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This brings up a window similar to what we had before to resolve path mappings. It’s hard to see in the dialog, but click in the empty space right next to where the main path is listed. This will bring up a drop down list. You’ll want to specify the project root path for your application, not the “public” folder.&lt;img src=&quot;@assets/images/posts/2015-02-laraveldebug_step6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once, you’ve selected the path, the red error message should disappear. Once it disappears, click the “OK” button. Once this happens the default index.php page will open and the debugger will be paused. From here, click the “resume” button over on the left hand side (it looks like a green play button with some grey lines next to it) or pretty the combination Option+Command+R.&lt;/p&gt;
&lt;p&gt;The next time you reach a point in your code where you have a breakpoint, PHPStorm will stop the execution and give you the debugging interface you’ve come to know and love.&lt;img src=&quot;@assets/images/posts/2015-02-laraveldebug_step71.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Oddly enough, from time to time you’ll start the debugger and the breakpoints will no longer be hit. When this occurs, stop the debugger, and repeat the steps in this article, making sure to blank out the file path mapping before starting the debugger again.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Dynamically Changing Titles In Zurb Foundation For Applications</title><link>https://dillieo.me/posts/development/2015-02-20-dynamically-changing-titles-in-zurb-foundation-for-applications/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-20-dynamically-changing-titles-in-zurb-foundation-for-applications/</guid><description>ZANSTitleBinding.png</description><pubDate>Fri, 20 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As mentioned before, I’m a big fan of &lt;a href=&quot;http://foundation.zurb.com/apps/&quot;&gt;Zurb Foundation for Applications&lt;/a&gt; and have even built my own &lt;a href=&quot;/sharing-the-love-zurb-foundation-for-apps-scaffolding-for-net-with-authentication&quot;&gt;ZANS Scaffold&lt;/a&gt; to help launch new apps quick and easy. One thing that wasn’t immediately available in the scaffold was a way to dynamically update the title. Thanks to some &lt;a href=&quot;http://stackoverflow.com/questions/12506329/how-to-dynamically-change-header-based-on-angularjs-partial-view&quot;&gt;StackOverflow answers&lt;/a&gt; and a little tweaking, I figured out the way to do it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Step 1: Move Application Declaration&lt;/h3&gt;
&lt;p&gt;The first step is to move your ng-app declaration to the top HTML element, if you haven’t done so already. This allows us to expose the entire page to things like $rootScope within our application.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;html lang=“en” ng-app=“application”&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Step 2: Update View Front Matter&lt;/h3&gt;
&lt;p&gt;ZFA uses “front matter” for easy route/controller declaration. Within the front matter is a data field that allows you to define custom data elements. Front matter is YAML based and space sensitive, so we update our front matter for all of our views to something like this (note we have 4 spaces in our indentation):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--- name: prayers url: /prayers controller: PrayersController data: title: My Prayers ---&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Step 3: Set placeholder for title update.&lt;/h3&gt;
&lt;p&gt;You can have this in your HTML header, or anywhere else really. In the screenshot example, I’m updating a title bar element for the mobile layout, but updating the HTML title header as well. Here’s what the title binding looks like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;title ng-bind=&quot;title&quot;&amp;gt;&amp;lt;/title&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;…and in our menu bar&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;div class=&quot;menu-group-left&quot;&amp;gt; &amp;lt;ul class=&quot;menu-bar primary&quot;&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a&amp;gt;&amp;lt;strong ng-bind=&quot;title&quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you’re curious, we use the ng-bind tag to prevent the “handlebars” from being visible when the page is loading. If you prefer handlebars (to add additional text) you can always use a ng-cloak directive with it.&lt;/p&gt;
&lt;h3&gt;Step 4: Wire up events to detect change&lt;/h3&gt;
&lt;p&gt;There are two events when we might be changing the view, the routeChangeSuccess event (when a page is initially loaded) and the stateChangeStart event (when using navigation within the app).&lt;/p&gt;
&lt;p&gt;Thanks to the front matter processing with ZFA, all we need to do is access our title data element and update our rootScope variable accordingly. We need to inject rootScope into our run function, so the updated app.js file looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function run(authService, \$rootScope) { FastClick.attach(document.body); authService.fillAuthData();

$rootScope.$on(&apos;$routeChangeSuccess&apos;, function (event, current, previous) 
{ 
    $rootScope.title = current.\$\$route.data.vars.data.title; 
});

$rootScope.$on(&apos;$stateChangeStart&apos;, function (event, toState, toParams, fromState, fromParams) 
{ 
    $rootScope.title = toState.data.vars.data.title; 
}); 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s all there is to it! Do a fresh gulp build and you should see your titles change dynamically!&lt;/p&gt;
&lt;p&gt;Using these events will also allow us to do some “high level” security checks before loading pages, but that’s another post. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Wide And Deep</title><link>https://dillieo.me/posts/growth/2015-02-19-wide-and-deep/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-02-19-wide-and-deep/</guid><description>Wide And Deep</description><pubDate>Thu, 19 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The gospel of Jesus Christ is as wide as human diversity and as deep as human complexity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;— David Powlison&lt;/p&gt;
</content:encoded></item><item><title>Kids And Tech</title><link>https://dillieo.me/posts/development/2015-02-19-kids-and-tech/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-19-kids-and-tech/</guid><description>Kids And Tech</description><pubDate>Thu, 19 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;About a week ago, we upgraded our kids from their LeapPad Explorer devices to Google Nexus 7 devices, thanks to some gifts and trade-ins that we had. The dramatic shift in device usage is starting to really give tangible teeth on how great and perilous the Internet can be.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Does anybody have vinyl stickers like this on their car?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The amount of knowledge and resources out there is so empowering to my kids. The other day one of them stumbled upon a YouTube channel that teaches them how to draw cartoon characters and other things with some very simple steps. As budding artists and doodlers, they can’t get enough of this channel and it gives them the fundamentals that I can’t give them &lt;em&gt;[I__’m a stick figure master though…]&lt;/em&gt; We will let them watch some of their favorite shows as well from time to time, which leads to lots of word by word replay of old home videos through AFV. 8^D We are able to view some of their class resources online as well. This makes lugging around a bulky laptop &lt;em&gt;[wow, am I really calling a laptop bulky considering the tower cases I built?!]&lt;/em&gt; unnecessary when we’re doing some quick errands or making a trip out and back.&lt;/p&gt;
&lt;p&gt;Books and music now become amazingly accessible as well. While they have cheap mp3 players for road trips, they’re allowed to kick up whatever music they want around the house while doing chores or playing in their room. We’ve setup a few playlists with our Google music account, but they can explore the wide variety of jazz, classical, hip hop and other tunes we have acquired. Eventually we’ll link in Spotify to help them explore more. Our local library has the Overdrive system in place, so whatever books we don’t have at home or have purchased for them with their allowance they can “digitally checkout” and enjoy. We do allow a handful of games as well, and I kind of wish I had those physics based games when I was a kid since they are so dang cool! I’m not sure if Yahtzee or the “Reading Conjunction” games I had on my TI-99/4A count towards that. 8^D&lt;/p&gt;
&lt;p&gt;Having all of those resources at hand has concerns to watch out for as well. Google now searching is a wonderful thing, but with the enunciation of words and interpretation of those by the software still sketchy at times, it has led to a few potential search result pitfalls. Typically we are in proximity when they are doing searches for items to draw and other such needs, but we’ll also work on getting some stricter filtering in place. The eyestrain and sleep issues are also a concern and so we’re making sure that device time is at least 30 minutes out from bedtime and we’re reading good ‘ol fashioned paper books or doing something else.&lt;/p&gt;
&lt;p&gt;The biggest concern for me is how consumed they can get with their devices. Left to their own devices I suspect they would run their battery out, and then continue working/playing while it was plugged in. While on one hand being emerged in that much books and music (we’re curbing the games/shows) could be a good thing, the imbalance that it would cause would not be. There’s still lots of running and talking and exploring and playing and stuff that kids &lt;em&gt;[and us big kids to]&lt;/em&gt; need that you don’t get in front of a screen.&lt;/p&gt;
&lt;p&gt;All of this sounds like common sense, and has probably been discussed and blogged about several times over, but seeing this in action, and not simply reading about it, adds a whole new gravity to the issue that hasn’t really hit me before. It causes me to think about my own “screen time” as well. Am I making sure to balance out the physical with the digital? Am I running and talking and exploring and playing and doing things outside of my phone/tablet/laptop? I should be. I better be. It’s one thing to tell my kids what to do, it’s even better to show them.&lt;/p&gt;
</content:encoded></item><item><title>Updated Developers Toolkit</title><link>https://dillieo.me/posts/projects/2015-02-18-updated-developers-toolkit/</link><guid isPermaLink="true">https://dillieo.me/posts/projects/2015-02-18-updated-developers-toolkit/</guid><description>Updated Developers Toolkit</description><pubDate>Wed, 18 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I noticed my Developer&apos;s Toolkit was very outdated and needed a refresh. Have a peek and see what’s new!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Zfa Scaffold Update Authenticating A Page</title><link>https://dillieo.me/posts/development/2015-02-12-zfa-scaffold-update-authenticating-a-page/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-12-zfa-scaffold-update-authenticating-a-page/</guid><description>zurb_foundation_for_apps.png</description><pubDate>Thu, 12 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week a nice guy named &lt;a href=&quot;https://informaticianuk.wordpress.com&quot;&gt;Greg&lt;/a&gt; reached out to me about the &lt;a href=&quot;/sharing-the-love-zurb-foundation-for-apps-scaffolding-for-net-with-authentication&quot;&gt;ZANS scaffold&lt;/a&gt; I created and how he was enjoying it. He also ran into an issue where the reload of a view wasn’t properly checking user credentials. He found a simple trick to fix this which I wanted to share really quick.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The simple trick is to check the authentication object again when the controller initializes itself. You’ll find that sometimes when you rebuild your.Net app, or fire up the browser for the first time the browser retains an older cookie, even though it has expired, so some of your “logged in” items are still visible. By running a simple auth check again, we can eliminate that problem on the client side. To accomplish this, we include the location and authService directives into the controller. Here’s what the updated News controller looks like:&lt;/p&gt;
&lt;p&gt;[gist]bc7f3b014516ab5ad59d&lt;/p&gt;
&lt;p&gt;That’s all there is to it! If you have one or two controllers, this will work just fine. For anything larger, we’ll want to push this code into the main application definition, and potentially intercept the route change event. I’ve done something similar in a previous iteration of a project, so once I get it migrated in I’ll post another update.&lt;/p&gt;
&lt;p&gt;Thanks Greg!&lt;/p&gt;
</content:encoded></item><item><title>Cats Ducks And Mice</title><link>https://dillieo.me/posts/growth/2015-02-10-cats-ducks-and-mice/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-02-10-cats-ducks-and-mice/</guid><description>Cats Ducks And Mice</description><pubDate>Tue, 10 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sadly I don’t have an actual picture of this, but a funny thing yesterday evening as I was grilling up some dinner on the deck.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Our mouser in training…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I was on the deck grilling dinner when I looked over to see Piper (see photo above) batting around something. She had caught a mouse! Hazzah! One of the reasons we got her was to start getting rid of the mice that liked to hang around the duck pen and mooch off the food (and cause a mess). In typical cat fashion she would pick bat the mouse around a little, pick it up and move it to a new location, and continue the process.&lt;/p&gt;
&lt;p&gt;Having seen this activity, some of the ducks were curious as to what was going on. Oreo (our newest Blue Swedish duck) started to mosey over to see what was going on. As Oreo was watching, Piper bats the mouse nice and hard and it tumbles over right to where Oreo was standing.&lt;/p&gt;
&lt;p&gt;Without missing a beat, Oreo scoops up the mouse and swallows it in one gulp. To which the cat begins to stare at the duck with a “What did you do with my toy?!” look and the rest of the family is shouting in amazement at what just happened. We had heard that ducks were prone to eat mice, but up to this point none of ours had partaken in such a treat, at least not that we’ve seen.&lt;/p&gt;
&lt;p&gt;So Piper needs to find a new play toy, and true to form brought a bird up into the house this morning…&lt;/p&gt;
</content:encoded></item><item><title>Animated Gifs Have Grown Up</title><link>https://dillieo.me/posts/growth/2015-02-06-animated-gifs-have-grown-up/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-02-06-animated-gifs-have-grown-up/</guid><description>Animated Gifs Have Grown Up</description><pubDate>Fri, 06 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ll admit that I’ve never been the biggest fan of the Animated GIF, but I have to admit they’ve come a long long way.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;So what you see above is the first thing that STILL comes into my mind when I think of animated GIFs. The actual &lt;a href=&quot;http://en.wikipedia.org/wiki/GIF#Animated_GIF&quot;&gt;creation/history&lt;/a&gt; of animated GIFs is pretty fascinating for me, since I started cutting my teeth on the web when JPEGs still weren’t main stream and we had GIFs for everything. Plus I know who what Compuserve actually was 8^D! I created an animated GIF for a website I helped out for back in the day as well that provided helpful language transition icon showing American/British English for a French website.&lt;/p&gt;
&lt;p&gt;Sadly after that, it seemed like animated GIFs degraded into what you see on Homer’s web page (above) from an old episode of the Simpsons. While the animations were funny, they were murder on the processing speed and load time on your web browser, and people didn’t seem to care. Or the mesmerizing &lt;a href=&quot;http://www.hampsterdance.com/classics/originaldance.htm&quot;&gt;hamster dance&lt;/a&gt; that could have been the original rick roll, I’m not sure.&lt;/p&gt;
&lt;p&gt;Somewhere along the way though, animated GIFs grew up. I suspect that once the “page load drag” was eliminated due to more powerful computers, they became more of an alternative as “flash bloat” started to clog up web pages. Sure we still have tons of silly things out there, but the biggest improvement is that we can use animated GIFs as “cheap video”.&lt;img src=&quot;@assets/images/posts/2015-02-trello_sample.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://trello.com&quot;&gt;Trello&lt;/a&gt; team is providing the perfect example of how to harness animated GIFs for productive purposes. Thanks to screen recording tools like &lt;a href=&quot;http://www.hampsterdance.com/classics/originaldance.htm&quot;&gt;SnagIt&lt;/a&gt; out there, you can provide simple demonstrations without the overhead of video compression, audio, and making sure that your user has a compatible video player on their computer. These animated GIFs show up on Trello’s Google+ page when they announce new features. They’re quick, simple, small and effective. I like this. I want to see more of this.&lt;/p&gt;
&lt;p&gt;Who knows what will happen with animated GIFs. While I’ve always been a little grumpy towards them I’m warming up a little bit more given their practical uses, but you probably won’t see this many in a blog post anytime soon. 8^D&lt;/p&gt;
&lt;p&gt;I’ll admit that I’ve never been the biggest fan of the Animated GIF, but I have to admit they’ve come a long long way.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;img src=&quot;@assets/images/posts/2015-02-homers_web_page1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So what you see above is the first thing that STILL comes into my mind when I think of animated GIFs. The actual &lt;a href=&quot;http://en.wikipedia.org/wiki/GIF#Animated_GIF&quot;&gt;creation/history&lt;/a&gt; of animated GIFs is pretty fascinating for me, since I started cutting my teeth on the web when JPEGs still weren’t main stream and we had GIFs for everything. Plus I know who what Compuserve actually was 8^D! I created an animated GIF for a website I helped out for back in the day as well that provided helpful language transition icon showing American/British English for a French website.&lt;/p&gt;
&lt;p&gt;Sadly after that, it seemed like animated GIFs degraded into what you see on Homer’s web page (above) from an old episode of the Simpsons. While the animations were funny, they were murder on the processing speed and load time on your web browser, and people didn’t seem to care. Or the mesmerizing &lt;a href=&quot;http://www.hampsterdance.com/classics/originaldance.htm&quot;&gt;hamster dance&lt;/a&gt; that could have been the original rick roll, I’m not sure.&lt;/p&gt;
&lt;p&gt;Somewhere along the way though, animated GIFs grew up. I suspect that once the “page load drag” was eliminated due to more powerful computers, they became more of an alternative as “flash bloat” started to clog up web pages. Sure we still have tons of silly things out there, but the biggest improvement is that we can use animated GIFs as “cheap video”.&lt;img src=&quot;@assets/images/posts/2015-02-trello_sample.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://trello.com&quot;&gt;Trello&lt;/a&gt; team is providing the perfect example of how to harness animated GIFs for productive purposes. Thanks to screen recording tools like &lt;a href=&quot;http://www.hampsterdance.com/classics/originaldance.htm&quot;&gt;SnagIt&lt;/a&gt; out there, you can provide simple demonstrations without the overhead of video compression, audio, and making sure that your user has a compatible video player on their computer. These animated GIFs show up on Trello’s Google+ page when they announce new features. They’re quick, simple, small and effective. I like this. I want to see more of this.&lt;/p&gt;
&lt;p&gt;Who knows what will happen with animated GIFs. While I’ve always been a little grumpy towards them I’m warming up a little bit more given their practical uses, but you probably won’t see this many in a blog post anytime soon. 8^D&lt;/p&gt;
</content:encoded></item><item><title>A New Devtool On The Block</title><link>https://dillieo.me/posts/development/2015-02-05-a-new-devtool-on-the-block/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-05-a-new-devtool-on-the-block/</guid><description>A New Devtool On The Block</description><pubDate>Thu, 05 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few months back the Mozilla Foundation released a new version of their browser called &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/developer/&quot;&gt;Firefox Developer Edition&lt;/a&gt; (FDE). While I’m typically a Chrome/Safari kind of guy, I decided to give the new tool a whirl and you know what? I’m rather impressed with it. I haven’t dug into all of its features, but I’m using it more and more and here’s why.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;They say a picture is worth a thousand words, so here’s a screenshot of the browser in action (click on it to get a larger version). Here are all the things that have struck me so far.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dark Theme - It sounds petty, but with all the coding I do, I’ve adopted a dark editor theme for all of my coding environments due to the reduced eye fatigue is has been known to provide.&lt;/li&gt;
&lt;li&gt;First Class Access to Tools - In Chrome and other browsers, it is a couple of clicks to get specifically to the Javascript Debugger, or the Style Editor. With FDE, you click the wrench (the first icon available after the address bar) and all the tools available are right there. Select and go!&lt;/li&gt;
&lt;li&gt;Additional Tools - Need to grab the color of that page or shading on your image. Don’t go hunting for an extra extension or file up an additional tool, there’s one built in. Need to test a little more than a single line of Javascript, but not rewrite and entire module, there’s a scratchpad for that.&lt;/li&gt;
&lt;li&gt;Speed - Everything seems to load faster through FDE. I’m not exactly sure why. I have about the same amount of plugins enabled as other browsers and from what I’ve seen this is a full fledged Firefox browser, so nothing is left out that way. When things load faster, I can debug faster, and that’s always helpful.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are still a few drawbacks to FDE (anonymous functions do not seem to be debuggable currently) but overall I’ve been one happy &lt;em&gt;[insert clever and popular nomenclature for coder here]&lt;/em&gt; since using it and I’ll probably be sticking with it for a while.&lt;/p&gt;
&lt;p&gt;Grab your copy &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/developer/&quot;&gt;here&lt;/a&gt; and let me know if you stumble across any other cool tricks with FDE.&lt;/p&gt;
</content:encoded></item><item><title>That First Song</title><link>https://dillieo.me/posts/development/2015-02-04-that-first-song/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-04-that-first-song/</guid><description>That First Song</description><pubDate>Wed, 04 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What was that first song that got you completely hooked on a particular artist or genre? For me, dance/house/techno grabbed me at a high school dance back in ’93…&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It was my sophomore year in high school at the winter dance. I was there with the usual gang of friends enjoying a night out. We were having a great time as the music played and then something caught my ear…&lt;/p&gt;
&lt;p&gt;…wait, is that The Count?! From Sesame Street?! At a high school dance?! &lt;em&gt;[admittedly he is my favorite]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;__&lt;/p&gt;
&lt;p&gt;The thunder claps and the familiar opening melody begins.&lt;/p&gt;
&lt;p&gt;…but then, the beat comes in! At this point you can’t help but dance! This fusion of nostalgia and great dance music is overwhelming!&lt;/p&gt;
&lt;p&gt;Then a few mixes come in, a few tweaks of the melody, and I was hooked. Forever.&lt;/p&gt;
&lt;p&gt;I don’t think I heard that song again for quite a while after that, and it took me even longer to track down my own copy, but after that I had my own personal quest to seek out and enjoy this kind of music wherever I could find it. It was slim pickings at first (there was none of this Internet/Spotify stuff) but I bought what I could muster, and listened whenever I could find a random radio station playing it.&lt;/p&gt;
&lt;p&gt;Curious? Take a listen below and try not to dance. 8^D&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/1dqgx06EhFMvMqkWjGrOmE&lt;/p&gt;
&lt;p&gt;What about you? What was that one song that completely grabbed you into a particular artist or genre of music? Powerful stuff, isn’t it?!&lt;/p&gt;
</content:encoded></item><item><title>Trust Vs Clarity</title><link>https://dillieo.me/posts/growth/2015-02-03-trust-vs-clarity/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-02-03-trust-vs-clarity/</guid><description>Trust Vs Clarity</description><pubDate>Tue, 03 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There was a striking paragraph in a book that I’m reading for bible study…&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://flic.kr/p/peVjcA&quot;&gt;Zoom Blur&lt;/a&gt; - by &lt;a href=&quot;https://www.flickr.com/photos/beyond-the-horizon/&quot;&gt;Chinmay Mishra&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s all about weighing the evidence. We weigh the evidence of God’s character, promises, and track record against the present circumstances we face and our fears of what might happen. To hold our picture of redemption out to God and say, “Save me like this” doesn’t require nearly as much faith as saying, “I know you’re good, save me like you want to.” — Mike Wilkerson: &lt;em&gt;Redemption&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So many times I’ve tried to tell God how I want to be saved. So many times I’ve wanted clarity, my own clarity, and have not received the outcome I’ve wanted. But what does that say of my trust in God? How small do I make Him when I tell him to do things my way. There were countless times when money was short, bills needed to be paid, medicine needed to be bought for my kids. I sat there praying, “God I need to see X amount of dollars provided this precise way.” It didn’t work. I finally gave up. I finally prayed, “God, I know you love me and my family. I know you will provide for us. I have no earthy idea how, but we need the money. Do as you will.” Results were astounding. A random refund would arrive for something we had forgotten we had submitted. They paycheck would come a day or two early. A monthly expense that we had budgeted for would wind up being a lot less expensive that month when it went through. It was miraculous in such small, yet profound ways.&lt;/p&gt;
&lt;p&gt;It was also terrifying at first. I so want those trees to be so clear and direct! My engineering mind wants to see every piece of the puzzle lined out. It wants to see every leaf on the forest floor so I can direct myself. But my sight is limited. I can’t see the forest from the trees, to use a really old cliche. But if I trust the creator of the path. If I trust the one who can see it all, then all I need to do is trust. Clarity may come, but it may not come until I’m right up to the path and I can see why I had to take a certain route to get there. Trust outweighs clarity because the one I trust can see so much more than I can.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Linking User Identity To Oauth Tokens In Webapi</title><link>https://dillieo.me/posts/development/2015-02-02-quick-tip-linking-user-identity-to-oauth-tokens-in-webapi/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-02-02-quick-tip-linking-user-identity-to-oauth-tokens-in-webapi/</guid><description>Quick Tip Linking User Identity To Oauth Tokens In Webapi</description><pubDate>Mon, 02 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my &lt;a href=&quot;/sharing-the-love-zurb-foundation-for-apps-scaffolding-for-net-with-authentication&quot;&gt;Zurb For Applications.Net Scaffolding&lt;/a&gt;, I setup a base.Net WebAPI project that uses oAuth tokens for a better form of authentication in a single page application model. Since the token provides any details about the user that you want to encode, here’s a quick trick to expose the User.Identity.Name and User.IsInRole methods to improve the authentication and authorization capabilities within your app.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The trick comes in the GrantResourceOwnerCredentials method that is used to verify the credentials and add return the oAuth context for the user logging in. Typically you see a new claim record created as such:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var identity = new ClaimsIdentity(context.Options.AuthenticationType); 
identity.AddClaim(new Claim(&quot;sub&quot;, context.UserName)); 
identity.AddClaim(new Claim(&quot;role&quot;, &quot;user&quot;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The ClaimsIdentity constructor has several signatures available, and one that allows you to define which claim fields are to be used for the Identiy.Name and role properties for the object. What we can do is update the constructor to look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var identity = new ClaimsIdentity(context.Options.AuthenticationType, &quot;id&quot;, &quot;role&quot;); 
identity.AddClaim(new Claim(&quot;sub&quot;, context.UserName)); 
identity.AddClaim(new Claim(&quot;username&quot;, context.UserName)); 
identity.AddClaim(new Claim(&quot;id&quot;, userId)); 
identity.AddClaim(new Claim(&quot;role&quot;, &quot;user&quot;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From here you can see that I’ve identified the “id” claim and the “role” claim to be used. Now, after the user is logged in and you are processing a request from the WebApi, you can simply use:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var userId = User.Identity.Name;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…and the Id of the authenticated is available to you. This allows you to run user targeted requests and not have to worry about passing their unique Id in plain text, since it is encoded (and properly decoded) within the authentication token we are already using. In addition, executing:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var isUser = User.IsInRole(“user”);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…will return true since we’ve properly mapped the user role. Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Picking A Stack For The Net Framework</title><link>https://dillieo.me/posts/development/2015-01-30-picking-a-stack-for-the-net-framework/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-30-picking-a-stack-for-the-net-framework/</guid><description>Picking A Stack For The Net Framework</description><pubDate>Fri, 30 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a guest post published at work that I didn&apos;t notice went live until this morning. 8^D You can read it here:&lt;/p&gt;
&lt;p&gt;http://www.freshconsulting.com/picking-stack-net-framework/&lt;/p&gt;
</content:encoded></item><item><title>Bloggers Block</title><link>https://dillieo.me/posts/growth/2015-01-29-bloggers-block/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-01-29-bloggers-block/</guid><description>Bloggers Block</description><pubDate>Thu, 29 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You would think after doing a full 10 day course on improving my blogging that each week I’d be able to tackle things with gusto. The last couple of weeks, even blogging twice a week, has been kind of hard, oddly enough. Maybe I’m just over thinking things now. I do have some old posts that I started and should finish off. Maybe I’m making myself too nervous that I should see improvements or something.&lt;/p&gt;
&lt;p&gt;Who knows.&lt;/p&gt;
&lt;p&gt;A good friend of mine said that he remembers a great quote about how some writers work and polish and work and polish and take forever to get that first book or draft out. Others just get the first draft out there and continually polish it, having it out in front of you, a piece of you, and can work on refining yourself. I tend to be more of the former, but I like the prospect of the latter. So that’s what I’m going to work towards, with this new blogging me and all.&lt;/p&gt;
&lt;p&gt;Yep, nothing fancy, but there it is in front of me. Time to polish.&lt;/p&gt;
</content:encoded></item><item><title>Syntax Vs Semantics Or Career Advice For Aspiring Programmers</title><link>https://dillieo.me/posts/development/2015-01-27-syntax-vs-semantics-or-career-advice-for-aspiring-programmers/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-27-syntax-vs-semantics-or-career-advice-for-aspiring-programmers/</guid><description>Syntax Vs Semantics Or Career Advice For Aspiring Programmers</description><pubDate>Tue, 27 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little while back I was introduced to a site called &lt;a href=&quot;http://careerdean.com&quot;&gt;Career Dean&lt;/a&gt;. It is a site primarily geared towards college students (and some upcoming high school graduates) working towards careers in the programming / development field. People can ask questions and others with experience in the industry provide answers, which can then be “upvoted” in your typical fashion. I spent about a week on the site sharing what I know where I could and hopefully providing some inspiration to other budding developers. However, I noticed a slightly disturbing trend amongst a lot the questions. Here is a sample of some of them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is the compensation on a person’s first job of significant importance?&lt;/li&gt;
&lt;li&gt;Bored to tears after a month as a Software Engineer. Is it too soon to leave?&lt;/li&gt;
&lt;li&gt;What is the best paying programming language to learn?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As I looked over and responded to these types of questions, I realized that a lot of college students seem to be making a big mistake with their college career. If you’ll allow me, I’d like to provide some “free advice” &lt;em&gt;[though nobody really wants it as my grandfather would say]&lt;/em&gt; on the issue. I believe students are focusing on the syntax of their profession when they should be focusing on the semantics. Or to state it differently, they’re looking at their first job when they should be looking at their career.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I completely understand where this focus comes from. We work in an industry that changes day by day. It’s been nearly 20 years ago now that I sat in a “prospective student orientation” lecture at the computer science department at a university and asked “What language should I learn?” I didn’t want to learn some defunct language and be stuck without a job. The professor answered, “It’s hard to pinpoint a specific language because things are changing all the time. Learn your core programming concepts first and the languages will come.”&lt;/p&gt;
&lt;p&gt;What sage words these were. When I started my college education, the web was just barely coming online. There was no such thing as Ruby on Rails. Python existed, but it wasn’t a focus of web programming use. Perl was the CGI processing language of choice. With due respect, I never really liked ColdFusion either. Mobile development as we know it now was still science fiction. .Net wasn’t announced formally until my senior year in college. Sticking with the “language du jour” may get you that first job, but you never know what is going to happen down the road. I suspect there are still plenty of jobs for Perl programmers, just like Cobol, but there is so much more out there now. My career has gone from Perl, to Flash ActionScript, to .Net, to PHP, and back to .Net again so far. That doesn’t count some of the Ruby on Rails, Python, and Java I had to work on along the way. I’m sure it will change a few more times before I retire as well.&lt;/p&gt;
&lt;p&gt;Instead of a particular language or field, focus on the things that will be applied universally in your career:&lt;/p&gt;
&lt;p&gt;Focus on algorithms and design patterns, because no matter what language you use, you’ll always need to identify the best model for structuring your data, and the best algorithm for sorting it or iterating through it. I barely knew much PHP when I was writing my first integration script from an Oracle database into a flat file for a third party import, but I did know that doing one massive join query across multiple tables isn’t always as fast as grabbing your core data in one query and then filling in the little bits before continuing.&lt;/p&gt;
&lt;p&gt;Focus on learning to debug well. Tools are always changing, but learn the “art” of setting up diagnostic breakpoints, how to monitor certain events or data exchanges. Learn the good ‘ol fashioned “printline debugging” since sometimes that’s all you have. Learn how to evaluate the code before it even runs to identify potential “trouble spots” in the code to prevent a long and slow debug process. In one particular scenario, I didn’t know the exact details of how HTML forms submission processing works at the packet level, but I knew enough about the API I was working with and how to “sniff” my network traffic to finally figure out that the API was missing an important field break when it attempted to upload files of a certain type.&lt;/p&gt;
&lt;p&gt;There are a lot more of these “semantic” concepts I could go over, but there was one other question that struck me as well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I have a basic grip on HTML/CSS, PHP, and JavaScript already. Should I go to college or just start freelancing?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I couldn’t be more adamant when I say GO TO SCHOOL! Yes, I put caps on that one! There are things you will learn in college (and yourself) that are invaluable and you often won&apos;t find just being out there in the world. I was in a 3/2 program that allowed me to focus on liberal arts and the “great books” and there were critical thinking skills that I received through that that you wouldn’t get elsewhere. In addition, there is the camaraderie and friendships that you can build within the college environment that can be hard to acquire when everybody is busy all day with jobs and available for a little bit at night or the weekend. One other important thing to remember is…&lt;/p&gt;
&lt;p&gt;You are NOT your career.&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Yes, there is a pause here, for both of us. I’m re-reading this and reminding myself of this important point as well. Let it sink in for a moment.]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;“All work and no play makes a student a lousy conversationalist” is a wise saying an old professor gave me. It’s easy to get caught up in the excitement of startups, big projects, and all the work involved with this. But when the weekend comes, there’s nothing to do, so you work more. Or maybe you’re so far caught into bits and bytes that you don’t know about the amazing art exhibit that opened up a block away from your place. As much as I’d love to live in the matrix and make it do my bidding, I’ve found that more often than not the most satisfying times have been sitting on the deck with my wife reading with a glass of wine and a good sunset. Or feeling the bite of cold air go through my nose and into my chest on a morning run. Or the intense bonding moments you have while playing imagination with your kids. Or sitting out on a summer day at a friend’s house and catching up on the things of life with a cold drink.&lt;/p&gt;
&lt;p&gt;PLEASE don’t make your work your life. I’m a big proponent of having &lt;a href=&quot;/whats-your-pet-project&quot;&gt;a side project&lt;/a&gt; or two for nights and weekends, but not at the expense of my family and friends, or even me! Take the time to seek that balance. You’ll be surprised at how a weekend hike with some friends can oddly bring some fresh insights, innovations, and even energy when you get back to the office the following day.&lt;/p&gt;
&lt;p&gt;So there’s a little free advice, for what it’s worth. I’m not a startup guru, or inventor of a language, or even a speaker at any events, but I’ve put in my 10K hours and picked up a few things that I would have helped me avoid a few hurdles early on. I try to “&lt;a href=&quot;/why-i-blog&quot;&gt;share the love&lt;/a&gt;” when I can and I hope this gives you some guidance or insights as you move forward.&lt;/p&gt;
</content:encoded></item><item><title>Humility And Perseverance</title><link>https://dillieo.me/posts/growth/2015-01-22-humility-and-perseverance/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-01-22-humility-and-perseverance/</guid><description>Humility And Perseverance</description><pubDate>Thu, 22 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple of weeks back I made a commitment to run a half marathon. I’ve been wanting to get into my running groove again and sometimes nothing says motivation like committing to run a big race. I strapped on my shoes, pulled out my trusty running app, remembered an old three mile course, and set out.&lt;/p&gt;
&lt;p&gt;True to my (old) forms, I started out too fast for what my body would be able to maintain for three miles. The hill that greeted me three quarters of the way through the run was longer and steeper than I had anticipated. I should go back, longer++ and steeper++ than I had anticipated.&lt;/p&gt;
&lt;p&gt;Then I walked part of it. Oy, that was rough. “You’re not running if you’re walking!” the old mantras of my high school coach went through my mind. I got my legs going again and finished my route, but oy that was rough. I was crazy sore and had a nasty headache the next day. I had anticipated some, but not all of this.&lt;/p&gt;
&lt;p&gt;Most of all it was humbling. I let my pride of “super runner” get in the way of doing things properly.&lt;/p&gt;
&lt;p&gt;The following run two days later was a bit better. I didn’t run quite as far, but I’m still treating my body like it was in Ragnar shape from two years back. It’s easy to get frustrated at this point. Figure my time has come and just hang up the shoes.&lt;/p&gt;
&lt;p&gt;Yesterday was better. I picked an easier route &lt;em&gt;[it’s hard NOT to find hills where I live]&lt;/em&gt; and I made sure to keep my pace. The hill was there, but not nearly as long. It was rough, but I pushed through it. Oddly enough my second mile this time was way too fast, but that’s a good note. Even though my lungs were straining to pull enough air in, the will to endure continued. I finished. I was exhausted, but happy.&lt;/p&gt;
&lt;p&gt;There is that spark again. That desire. The reminder that it’s okay not to be fast as long as you’re out there and enjoying it. The speed will come. But even if it doesn’t, the enjoyment of a fresh trail, of my muscles and lungs straining a bit over the route, and the communion I get with God on my runs is there. I can make it if I persevere.&lt;/p&gt;
</content:encoded></item><item><title>Sharing The Love Zurb Foundation For Apps Scaffolding For Net With Authentication</title><link>https://dillieo.me/posts/development/2015-01-20-sharing-the-love-zurb-foundation-for-apps-scaffolding-for-net-with-authentication/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-20-sharing-the-love-zurb-foundation-for-apps-scaffolding-for-net-with-authentication/</guid><description>Sharing The Love Zurb Foundation For Apps Scaffolding For Net With Authentication</description><pubDate>Tue, 20 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TLDR;&lt;/p&gt;
&lt;p&gt;NuGet package &lt;a href=&quot;https://www.nuget.org/packages/z4a-dotnet-scaffold-auth/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Github repository &lt;a href=&quot;https://github.com/Dillie-O/z4a-dotnet-scaffold-auth&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A little while back I was really excited that Zurb released their &lt;a href=&quot;http://foundation.zurb.com/apps&quot;&gt;Foundation for Applications&lt;/a&gt; (ZFA) library. I’ve been working with it a little and really like the results. I’ve learned some new things along the way and it’s helping be do a “platform shift” for my side project: &lt;a href=&quot;http://prayerjournal.firebaseapp.com&quot;&gt;Prayer Journal&lt;/a&gt;. I even created an &lt;a href=&quot;/soup-to-nuts-using-zurb-foundation-for-apps-in-net&quot;&gt;initial scaffolding&lt;/a&gt; that others can use to start up their .Net apps. But I still needed to be able to let users create accounts and restrict access to pages, so a new scaffold was born, one with authentication.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;The Basic s&lt;/h3&gt;
&lt;p&gt;The core of the authentication piece deserves a HUGE hat tip to Taiseer Joudah, who wrote an &lt;a href=&quot;http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/&quot;&gt;amazing series&lt;/a&gt; about how to build an app with a .Net web service backend and use an AngularJS architecture on the front end for client interaction. The series shows how to password protect only the pages you need to, as well as include other login services (such as Facebook and Twitter) to integrate into your application. I was able to go through the series, and adapt the code to the ZFA framework where needed.&lt;/p&gt;
&lt;p&gt;I won’t go into a “soup to nuts” outline of the framework like I did for my previous scaffolding. I would highly recommend you read Taiseer’s &lt;a href=&quot;http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/&quot;&gt;series&lt;/a&gt; to get a better working knowledge of the WebAPI backend and the AngularJS factories/services used to handle authentication, and then read my &lt;a href=&quot;/soup-to-nuts-using-zurb-foundation-for-apps-in-net&quot;&gt;previous article&lt;/a&gt; on using ZFA in .Net to really get an in depth look of what is going on. For now, I’ll cover a few of the basics about how this scaffolding is organized.&lt;/p&gt;
&lt;h3&gt;Authent ication&lt;/h3&gt;
&lt;p&gt;As mentioned earlier, .Net provides a great set of libraries to cover &lt;a href=&quot;http://owin.org&quot;&gt;OWIN&lt;/a&gt; (its open web protocol) and &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee748475.aspx&quot;&gt;WIF&lt;/a&gt; (it’s updated identity management foundation). Since our single page application framework doesn’t play as nice with your typical cookie based authentication model (and any future mobile apps that might queue into this API wouldn’t either) we go with the newer and more flexible signed token approach. The great thing about this is that .Net gives us about 90% of this code out of the box with the frameworks mentioned above. We simply need to provide the appropriate wiring and configuration for our functions.&lt;/p&gt;
&lt;h3&gt;WebA PI&lt;/h3&gt;
&lt;p&gt;Instead of using a MVC approach (though in a lot of ways this approach is MVC), we went and used the .Net WebAPI for all of our processing. This gives us the flexibility of using the same core code base with mobile applications and our front end framework plays quite nice with WebAPI. Again, thanks to the .Net libraries available, 90% of the work is done for us. We simply install the library, wire up some basic configuration code, and start building the API calls we need.&lt;/p&gt;
&lt;h3&gt;Zurb / Angula r&lt;/h3&gt;
&lt;p&gt;Our front end uses AngularJS for our single page application framework. I’m still pretty new to the framework but really love how clean it makes a lot of the intense data binding/watching/updating methods that I used to have to work with. The template architecture provided by ZFA works great with AngularJS’s dynamic routing model and we have nicely compressed stylesheets/resources for optimal performance. There are plenty of “eye candy” type plugins as well for those fancy effects you may think are only available in a jQuery/Bootstrap environment.&lt;/p&gt;
&lt;h3&gt;How to Us e&lt;/h3&gt;
&lt;p&gt;Start an empty solution in Visual Studio. Open up the package manager console and run the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Install-Package z4a-dotnet-scaffold-auth&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will pull down the scaffolding and get the initials in place. Since this scaffold is a little more complex than the basic one, we do need to effectively “rebuild” our front end code base, as well as our backend database. The readme file that is attached will have the rest of the details.&lt;/p&gt;
&lt;h3&gt;G o Make Something Great!&lt;/h3&gt;
&lt;p&gt;I hope this becomes a good resource for you to get going with what I like to call the “ZANS” architecture. I’d love to hear about what apps you’re building with it and if you run into any issues with it. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>10 Day Retrospective</title><link>https://dillieo.me/posts/development/2015-01-14-10-day-retrospective/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-14-10-day-retrospective/</guid><description>10 Day Retrospective</description><pubDate>Wed, 14 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Finish line crossed. Goal achieved. Expanded levels unlocked. I did it! Today is the final day of the &lt;a href=&quot;http://talk.desk.pm/t/10-days-to-a-better-blog-day-10/947&quot;&gt;10 days to a better blog&lt;/a&gt; workshop and I’m proud to say that I’ve made it all the way through! I’ve been able to blog consistently for 10 days, but MORE importantly, I’ve been able to develop some patterns, habits, and goals to help me move forward. I’ve met some great fellow bloggers (digitally) and now have their stories to add to my reading list for encouragement and inspiration. Today is also a day of reflection upon the process and here are some things that come to mind.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The thing that most profoundly hit me was how effective a small block of time and space can be. The first day of the challenge was just to take 15 to 20 minutes, no more than that, and simply write. Open your soul to whatever it may be thinking and expose it in front of your eyes. Try not to edit those words either. Those first few minutes were intense! But once I dropped any remaining barriers, it was beautiful. The words weren’t terribly profound, but they were my words, and they were out. Refinement can come later. We all are refined over time. More importantly, they were there in the first place!&lt;/p&gt;
&lt;p&gt;Before I knew it, 20 minutes had passed. I could have continued, but I think I would have been stretching myself to far and started over editing everything. So I thought that if I can give myself a 15 minute block, good things can come from it. This amount of time isn’t terribly intimidating either. It’s half a sitcom, or about the amount of time it takes for the tea pot to come to a full boil on the kettle. It’s something that can be easily inserted into your life, nearly any part of the day, and can grow from there as your needs and desires expand. Morning is my main slot to do this, but if I had to do it later in the afternoon, then it ins’t that bad of a thing.&lt;/p&gt;
&lt;p&gt;I’ve also come to value the environment or space of my blogging “canvas.” Over the years I’ve thrown together posts over the course of the day, and while they weren’t bad, they were rather disjointed and even then they were pieced together in an environment where there was a lot conflicting with it. One day in the workshop revolved around your blogging environment and what works best for you, with a focus on removing all distractions. So here I am again, starting this off about 6:30 in the morning, with some of my favorite light Norah Jones and Harry Connick Jr. music in a fresh playlist, a quiet house, and a simple writing screen (thank you &lt;a href=&quot;http://desk.pm&quot;&gt;Desk&lt;/a&gt; for this!) and it feels great. Barriers are removed and words can flow. I also know that if the morning is rough, I can carve out a few minutes in the afternoon, close everything up, fire up Desk and the playlist, and I’m in that state or mode to do write. It’s almost like some old cross country preparation our team learned to do. Give yourself a spark, a tap on the chest, something unique to you, and mentally shut everything out except for the run. The empty canvas and the opening chord of Harry Connick Jr.’s &lt;em&gt;Stardust&lt;/em&gt; does that for me now.&lt;/p&gt;
&lt;p&gt;I think these two things, a simple block of time and space, were the biggest impacts to me and my blogging. It has encouraged me that consistently blogging isn’t as insurmountable and I tended to think of it before and a few small tools and dedication can go a long way.&lt;/p&gt;
</content:encoded></item><item><title>Tracking Users In Google Analytics</title><link>https://dillieo.me/posts/development/2015-01-13-tracking-users-in-google-analytics/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-13-tracking-users-in-google-analytics/</guid><description>Tracking Users In Google Analytics</description><pubDate>Tue, 13 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google Analytics provides some great insights into which pages are being accessed and a lot of usage statistics about them. But for web applications, you can’t immediately track which users are using which pages, unless you are doing your own tracking in the database code. However, I found a quick way to do some basic user tracking without much setup.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Configuring User Tracking&lt;/h3&gt;
&lt;p&gt;The newest version of Google Analytics (the analytics.js file) changed the implementation of its events tracking to make it a lot easier and customizable. An “event” can now be generated down to 3 levels of data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Category&lt;/li&gt;
&lt;li&gt;Action&lt;/li&gt;
&lt;li&gt;Label&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Technically there is a 4th level (value) but since it can only be a numeric field, we can’t really use that (unless you track user id values).&lt;/p&gt;
&lt;p&gt;So send a “3 level” event, we simply add the following code after we setup your Google Analytics tracking:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ga(‘send’, ‘event’, &apos;category&apos;, &apos;action&apos;, &apos;label&apos;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;For our user tracking, we’re going to define our levels as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Category - Controller/Page user is on (Shipments Page)&lt;/li&gt;
&lt;li&gt;Action - Action/Feature user is performing (Show Shipment)&lt;/li&gt;
&lt;li&gt;Label - Username of user&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In my case, I have a.Net MVC app in place, so my Razor code on the front end looks something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@if (User.Identity.IsAuthenticated) 
{ 
    &amp;lt;text&amp;gt; 
    var page = &apos;@ViewContext.Controller.ValueProvider.GetValue(&quot;controller&quot;).RawValue&apos;; 
    var action = &apos;@ViewContext.Controller.ValueProvider.GetValue(&quot;action&quot;).RawValue&apos;; 
    var user = &apos;@User.Identity.Name&apos;;

    // Change the action to friendlier names. 
    if (action == &apos;Index&apos;) { action = &apos;Home&apos;; }

    ga(&apos;send&apos;, &apos;event&apos;, page, action, user); &amp;lt;/text&amp;gt; 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s all there is to it. Start up your app, log in, and you can start seeing the events tracking in action. Since events are supported in the beta “Real Time” tracking as well, you can even see which users are logged in to your application.&lt;/p&gt;
&lt;h3&gt;Viewing User Activity&lt;/h3&gt;
&lt;p&gt;Once you start getting data in, you’ll want to start tracking the activity of your users. Log in to your Google Analytics account, expand the “Behavior” section, then the “Events” section and click the “Overview” link. This will bring up a page like this:&lt;/p&gt;
&lt;p&gt;At this level you can see our categories, which corresponds to our pages. This isn’t that different than what you can see elsewhere in Google Analytics. The magic comes when you click on the “Event Label” section in the “Top Events”:&lt;img src=&quot;@assets/images/posts/2015-01-ga_user_level.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now you can track how many events each user raised. This will help you see which users are more active than others on the site. The next step is to track what a given user is doing. Go ahead and click on one of the Event Label values to bring up their details. The default view won’t show much detail, however, if you apply a second dimension to the report, Behavior -&amp;gt; Event Category, you get a better idea of what your user is doing:&lt;img src=&quot;@assets/images/posts/2015-01-ga_user_detail.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now we can see that our user spends most of their time on the shipments page. We can refine this even more into a report screen that will drill down each user to list their Categories and Actions, to give us an idea of the specific things they were doing on each page.&lt;/p&gt;
&lt;p&gt;I’ll admit that this isn’t the most elegant of solutions, but setting up custom dimensions within Google Analytics, and then wiring them up through the code can take some time and you still don’t have the real time data offered through events. This will give you a quick way to get some nice metrics on your app usage without much setup time.&lt;/p&gt;
&lt;p&gt;If you know of any other shortcuts through Google Analytics, definitely pass them along!&lt;/p&gt;
</content:encoded></item><item><title>In Focus Blogging Goals</title><link>https://dillieo.me/posts/growth/2015-01-12-in-focus-blogging-goals/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-01-12-in-focus-blogging-goals/</guid><description>In Focus Blogging Goals</description><pubDate>Mon, 12 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday I set some goals for the year, one of them being to be more consistent and more frequent with my blogging. Today I want to flesh that out a little bit more according to the “SMART” principles outlined with my task in the 10 days to a better blog workshop.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;John recommends using the “SMART” rubric when setting out our goals for the blog. SMART consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Specific – target a specific area for improvement.&lt;/li&gt;
&lt;li&gt;Measurable – quantify or at least suggest an indicator of progress.&lt;/li&gt;
&lt;li&gt;Assignable – specify who will do it.&lt;/li&gt;
&lt;li&gt;Realistic – state what results can realistically be achieved, given available resources.&lt;/li&gt;
&lt;li&gt;Time-related – specify when the result(s) can be achieved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are my thoughts (and actions) on how to achieve my goal of being more consistent and frequent.&lt;/p&gt;
&lt;h3&gt;Specifi c&lt;/h3&gt;
&lt;p&gt;I’ve targeted two specific areas for improvement. I want to blog more. Granted a larger volume is a relatively simple metric, but it’s there. I want to blog more consistently too. This one will take a little more dedication. I had 30 blog posts last year (the most so far) but they were very clumped in nature. I had a few months where there was nothing at all! So to be specific I want to have 2 blog posts each week. This will effectively double my blogging from last year, and have it in a pattern. More posts will be icing on the cake, so I won’t try to pull back from a hot streak.&lt;/p&gt;
&lt;h3&gt;Measurab le&lt;/h3&gt;
&lt;p&gt;Oops, I jumped the gun a little bit in the last section, but from a statistics perspective, I’ll be able to see 60 posts by the end of the year and 2 each week in my stats page. Pretty simple.&lt;/p&gt;
&lt;h3&gt;Assignabl e&lt;/h3&gt;
&lt;p&gt;I assign this task to me! &lt;em&gt;[haha, very funny]&lt;/em&gt;, more specifically, the Tuesday and Thursday me _[wait, are you implying some kind of split personality/universe thing… focus now…]. _This will allow for some good pacing and some time to form some initial idea over the weekend. Shameless plug _[and mental note]_, I can start drafting thoughts in Desk and then finish them up on one of those days.&lt;/p&gt;
&lt;h3&gt;Realisti c&lt;/h3&gt;
&lt;p&gt;I admire those that can blog daily. That’s just not me, at least right now. I’m quite excited &lt;em&gt;[and a little proud of myself]&lt;/em&gt; that I’ve blogged for 8 days straight, even through my largely disconnected weekends, but I recognize that doing so isn’t realistic for me through the rest of this year. With my personal project to finish and other things to focus on, I think twice a week will be a great start, and still take a somewhat big step from my previous habits.&lt;/p&gt;
&lt;h3&gt;Time-Relate d&lt;/h3&gt;
&lt;p&gt;_[See! There’s that parallel universe thing] _So 5 minute ago me has already done the time-related tasks for me. I guess we’re all on board with this. Tuesday/Thursday blogging from here until the end of the year it is!&lt;/p&gt;
&lt;p&gt;This was good. I’m excited. I have a plan of attack now that makes sense to me and isn’t a huge obstacle. Time to try this out with my other goals.&lt;/p&gt;
</content:encoded></item><item><title>Looking Back Looking Forward</title><link>https://dillieo.me/posts/growth/2015-01-11-looking-back-looking-forward/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-01-11-looking-back-looking-forward/</guid><description>Looking Back Looking Forward</description><pubDate>Sun, 11 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Part of renovating my blog as part of the &lt;a href=&quot;http://talk.desk.pm/t/10-days-to-a-better-blog-day-7/899/30&quot;&gt;10 days to a better blog&lt;/a&gt; is two fold:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look to see what has been successful on the blog&lt;/li&gt;
&lt;li&gt;Make some goals (both blogging and non-blogging) for the year.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So let’s get cracking eh?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;WordPress likes to do an automated “year in review” that I like to share &lt;a href=&quot;/2014-in-review&quot;&gt;here&lt;/a&gt;. Looking over it, I find a couple of interesting things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None of my actual posts from last year actually made the top 5 posts.&lt;/li&gt;
&lt;li&gt;All of my more nuanced “How To” type posts are the ones that were at the top.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So on one hand, I seem to have some posts that have “staying power” and one of the main reasons &lt;a href=&quot;/why-i-blog&quot;&gt;why I write&lt;/a&gt; (sharing the love). None of my more pensive posts seem to make the cut. I’m fine with that though, since those posts I think are more for my own reflection than anything else.&lt;/p&gt;
&lt;p&gt;I also noticed that I only had 30 posts last year. While that’s close to 1 a week, a more accurate look shows that I have some severe “clumping” in my blogging. I’d like that to change. I’ve heard that consistency is a key to getting a good community, so I’ll need to work on that.&lt;/p&gt;
&lt;p&gt;So instead of resolutions, I’m looking more towards goals, where I can take some proactive steps to meet them. Here’s what I want to do this year.&lt;/p&gt;
&lt;h3&gt;Blog more and consistentl y&lt;/h3&gt;
&lt;p&gt;I’m not one to think that I can blog daily, especially since I’m largely offline on the weekend (been a little crazy making the last two days work 8^D). I think if I can blog twice a week, one technical, and one pensive, then that would go a long way.&lt;/p&gt;
&lt;h3&gt;Run a half maratho n&lt;/h3&gt;
&lt;p&gt;I’ve been a runner for a long time. I love it. I’ve had a rather sporadic running habit as of late (a full year off, and a Ragnar the year before), but I’ve decided to run the local half marathon in a few months, and move forward after that. I’m excited and nervous (not a whole lot of time for 13 miles) but I love to simply run and I want to get that into my routine again.&lt;/p&gt;
&lt;h3&gt;Finish my p roject&lt;/h3&gt;
&lt;p&gt;Last year, I started a &lt;a href=&quot;http://prayerjournal.firebaseapp.com&quot;&gt;prayer journal&lt;/a&gt; app, from a desire to take an old tool and give it a digital implementation, as well as try out an idea I read about a while back. You can read more about it &lt;a href=&quot;https://prayerjournalapp.wordpress.com/2014/10/25/why-prayer-journal/&quot;&gt;here&lt;/a&gt;. I got the initial pieces off the ground, but I need to rebuild the platform and finish off some needed features. I’ve had distractions, and I want to make sure I put those aside and really make it come to life .&lt;/p&gt;
&lt;h3&gt;Listen mo re&lt;/h3&gt;
&lt;p&gt;I’m still only a third of the way through Dallas Willard’s &lt;em&gt;The Divine Conspiracy Continued _but I’ve had _Hearing God&lt;/em&gt; sitting on my nightstand for a little while and it seems to be calling to me. I think I’ll pick it up and see what I need to hear.&lt;/p&gt;
&lt;p&gt;So a glance back, an a gaze forward. Time to put my feed to the trail and press on…&lt;/p&gt;
</content:encoded></item><item><title>About Me</title><link>https://dillieo.me/posts/growth/2015-01-10-about-me/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2015-01-10-about-me/</guid><description>About Me</description><pubDate>Sat, 10 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m still cranking through the &lt;a href=&quot;http://talk.desk.pm/t/10-days-to-a-better-blog-day-1/777/74&quot;&gt;10 days to a better blog&lt;/a&gt; workshop and today was about creating/updating the &lt;a href=&quot;/about&quot;&gt;about&lt;/a&gt; page so people can know more about you. I didn&apos;t even realize I didn&apos;t have one! So &lt;a href=&quot;/about&quot;&gt;take a peek&lt;/a&gt; if you feel so led and thanks for stopping by!&lt;/p&gt;
&lt;p&gt;I&apos;m still cranking through the &lt;a href=&quot;http://talk.desk.pm/t/10-days-to-a-better-blog-day-1/777/74&quot;&gt;10 days to a better blog&lt;/a&gt; workshop and today was about creating/updating the &lt;a href=&quot;/about&quot;&gt;about&lt;/a&gt; page so people can know more about you. I didn&apos;t even realize I didn&apos;t have one! So &lt;a href=&quot;/about&quot;&gt;take a peek&lt;/a&gt; if you feel so led and thanks for stopping by!&lt;/p&gt;
</content:encoded></item><item><title>Tidying Up</title><link>https://dillieo.me/posts/development/2015-01-09-tidying-up/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-09-tidying-up/</guid><description>Tidying Up</description><pubDate>Fri, 09 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You’ve probably noticed that I’ve been blogging a lot more lately. I’ve gone 5 days straight now with 6 blog posts, thanks to the &lt;a href=&quot;http://talk.desk.pm/t/10-days-to-a-better-blog-day-1/777/74&quot;&gt;10 days to a better blog&lt;/a&gt; workshop I’ve been working on. There’s been a lot of personal introspection and revelation through this process that I’ve been grateful for. One thing I want to do more of in my blog is more personal / pensive posts, and I’m on my way. Now it’s time to get down to some brass tacks and clean up a bit, and it’s interesting what you see when you start digging.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Beyond that annual report that WordPress provides me, looking into the “raw” data brings up some interesting tidbits.&lt;/p&gt;
&lt;p&gt;At one time I was using my blog as a photo blog. I have all these categories for photo types that are empty. I moved all my pics over to Flickr at some point because I liked the way I could do some “best of” albums and organize them a lot quicker. So those categories have to go.&lt;/p&gt;
&lt;p&gt;Oh yeah… I’ve put a few recipes online too. Trying to build out that “dad’s cookbook” type thing of some really good recipes I’ve used or created. I’ll keep these, but maybe do any future recipes over on my &lt;a href=&quot;http://bakingforyou.wordpress.com&quot;&gt;wife’s gluten free dedicated blog&lt;/a&gt; (whoops, not so shameless plug there 8^D).&lt;/p&gt;
&lt;p&gt;Hey! I did a few “handyman” blog posts there. My DIY pot rack actually got some early Pinterest tricks, but overall I’ve kind of abandoned doing those things. Probably need to abandon that and merge those in somewhere else.&lt;/p&gt;
&lt;p&gt;Quotes… yes, quotes. I like them. There’s a really cool blog called &lt;a href=&quot;http://quotevadis.com&quot;&gt;quote vadis&lt;/a&gt; that inspired me to grab my own and save them on my blog, especially with the WordPress post types being able to accommodate for that. But I have a total of 26 blog posts here, so maybe this needs to go, or maybe I need to actually reflect more upon the quotes.&lt;/p&gt;
&lt;p&gt;…but I want to write about EVERYTHINGZZZZ!!!!!&lt;/p&gt;
&lt;p&gt;Oh man… See, I wrote about this yesterday… Jack of all trades, master of none kind of guy. There’s this thing called “socal brand” that popped up a while ago. “What do you want to be known as?” or “What’s your digital image and make sure to cultivate that”, they say. I’m not sure how much I want to flow with that, but I do want to balance my “geekish coding” life with a “pensive” life and reflect that through my blog. Ultimately it’s the “pensive” that needs more work, but maybe not too thin.&lt;/p&gt;
&lt;p&gt;I didn’t even get to tags yet, but I’ve always thought of them more as search engine juice, so maybe I just need to be a little less proliferate. Content is king over little keywords, right?&lt;/p&gt;
&lt;p&gt;Okay, so this morning I stripped out a completely empty category from my blog, and can see where I can merge a few categories together. It’s not perfect, but gives me a good start.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Configuring Laravel Environments On Media Temple</title><link>https://dillieo.me/posts/development/2015-01-08-quick-tip-configuring-laravel-environments-on-media-temple/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-08-quick-tip-configuring-laravel-environments-on-media-temple/</guid><description>Quick Tip Configuring Laravel Environments On Media Temple</description><pubDate>Thu, 08 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: This applies to Laravel 4. I&apos;m still looking into options for Laravel 5...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I ran into a pesky little bug today where the Laravel standard environment configuration by hostname wasn’t working on a Media Temple deployed site. After some digging and tweaking, here’s how you get it to work…&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Cause&lt;/h3&gt;
&lt;p&gt;Media Temple uses a form of dynamic hostnames for it’s grid server hosting. As a result, even when you run “hostname” at the command prompt and use that value it will not work for you.&lt;/p&gt;
&lt;h3&gt;Solution&lt;/h3&gt;
&lt;p&gt;A simple way to get environments to work is to add a server variable into your .htaccess file that resides in the “public” folder of your site. Add the following line to set an environment variable:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SetEnv HTTP_LARAVEL_ENV &quot;test&quot;;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Important Note: Media Temple requires you prefix your variable with HTTP_ for security reasons.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then we modify our bootstrap/start.php file (around line 27) to check for the variable when starting up:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$env = $app-&amp;gt;detectEnvironment(function() { return $_SERVER[&apos;HTTP_LARAVEL_ENV&apos;] ?: &apos;local&apos;; });&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Notice here that we have a fallback here so that if the environment variable isn’t found, we default to local. I know that Laravel has a “production default” mindset for it’s configuration, but I prefer to default to local because it will typically crash the app in the test/production environment and I can easily determine if I have an improper setup. In addition, having this setup doesn’t require me to do anything additional in my local development environment.&lt;/p&gt;
&lt;p&gt;There you have it. Deploy this and you should have your environment configurations singing along nicely.&lt;/p&gt;
&lt;h3&gt;Final Note&lt;/h3&gt;
&lt;p&gt;If you were using the original “hostname” type configuration, you may have been able to run the standard artisan migrate command from the command line without problems. With this new configuration, you’ll need to add one more parameter when running it:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;php artisan migrate —env=test&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Bonus Tip&lt;/h3&gt;
&lt;p&gt;Getting weird errors when trying to run migrations from the command prompt? By default Media Temple uses PHP 5.3 and you’ll need PHP 5.4+ in order to properly run Laravel. Make sure you configure the directory from the administrative panel to use the latest version of PHP. Then you can run your migrations from the command prompt as such:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;php-latest artisan migrate —env=test&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Enjoy!!!&lt;/p&gt;
</content:encoded></item><item><title>Sight</title><link>https://dillieo.me/posts/development/2015-01-08-sight/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-08-sight/</guid><description>Sight</description><pubDate>Thu, 08 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;I don&apos;t want to see more things. I want to see the things in front of me more clearly.&lt;/p&gt;
&lt;p&gt;—- Danny Pink&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s amazing how sometimes the most profound statements can be locked in away in somewhat tame conversations. They do this a lot in Doctor Who. Danny Pink really jumped out at me this past season when he said this.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’ve always tended to be a “jack of all trades, master of none” kind of guy. There is so much “there there” right?! I want to soak it all in, discover it all, see new places. I kind of like being that guy with a lot of random facts or interesting frameworks that people hadn’t heard about and pose a potential solution to a problem. I may only have a cursory knowledge of them, but I have that knowledge nonetheless.&lt;/p&gt;
&lt;p&gt;But therein lies the rub. Does the cursory knowledge really help when you’re neck deep in a situation. Does it matter how many people I barely know the handful of people I deal with daily? I think often enough the person that the guru gets more respect for their deep knowledge, even if it is in one thing.&lt;/p&gt;
&lt;p&gt;…but I want to know all the things!!!!!&lt;/p&gt;
&lt;p&gt;Yes, there is a virtue in the continued discovery of things, not being afraid to be satisfied with simply what you know.&lt;/p&gt;
&lt;p&gt;Maybe this is a new season that I’m beginning, because I’m starting to want to see in front of me more clearly.&lt;/p&gt;
</content:encoded></item><item><title>Writing Environment</title><link>https://dillieo.me/posts/development/2015-01-07-writing-environment/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-07-writing-environment/</guid><description>Writing Environment</description><pubDate>Wed, 07 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What’s my ideal writing environment? I think back a little bit and I realize I’ve had a few “environments” that I’ve blogged in before, and I think I’m starting to find one that really fits.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I used to keep a journal through junior high and high school. I did a little bit when I started college too. I’d typically hide off in my room, or just find a small corner where nobody could find me and just write. I really didn’t need a long time, just having a little pocket of quiet did the trick. When I got into college I really started to appreciate the power of music. I would queue up Harry Connick Jr.’s _25 _album and it seemed like no matter what was going on, when that simple opening chord was laid down soft and gentle and lingered, I was in another world. I could explore unhindered.&lt;/p&gt;
&lt;p&gt;Blogging hasn’t been as easy. Since I’ve done a large amount of “technical” blogs with walkthroughs and tips, I would piece them together as the day passed. While some code was uploading I’d take a few screenshots, put together some directions, and move on. That worked, but was rather disjointed. Sometimes I’d do the blog posts late at night after my wife went to bed. The quiet had returned, the focus had returned. I was tired enough that I could let my thoughts linger without the natural barriers and over analysis that I have a tendency to do during the day. But I would get tired and things would drift out too quick.&lt;/p&gt;
&lt;p&gt;So here I am. It’s about 6:15 in the morning. Kids won’t be up for _[hopefully] _another 15 minutes or so, and it’s still dark out. Midway through this post I thought about the music again and pulled up my Norah Jones playlist (she helps me unwind after a long day at work) _[mental note: need to refine the list a bit more to remove the newer upbeat charts]_ and it feels like I’ve entered that place again. The kitchen table has a cup of coffee, a bottle of canola oil on it (that won’t stay long), and my tablet from my morning devotionals. The words start to flow better and things can linger more. I like this. I’ll have to make sure to make a mental snapshot to return to it. It’ll be interesting to see how this model works for more of my technical type posts when I get them going, but I suspect that the results will be good as well.&lt;/p&gt;
</content:encoded></item><item><title>Why I Blog</title><link>https://dillieo.me/posts/development/2015-01-06-why-i-blog/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-06-why-i-blog/</guid><description>why.jpg</description><pubDate>Tue, 06 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve had this blog here for about 6 years now _[wow, really self?! that long?!] _and I never really fleshed out the reason(s) **why **I blog. Here are a couple thoughts that come to mind, but it definitely needs refining.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Sharing the Love…&lt;/h3&gt;
&lt;p&gt;I would say about 90% of my knowledge as a programmer has been self taught. This isn’t a knock against the school system, but I grew up when personal computers were still very much a “geek” thing to do. We double down on this when it comes to learning web related technologies. I remember taking a computer graphics class where the lectures and assignments were so disjointed, I decided to teach myself Perl and MySQL instead. I would sit in a dark lecture hall and read those books instead. There weren’t any classes covering this more than at a cursory level. As I moved out into my career, the notion of bootcamps, stackoverflow, google, mentorship, all of that was still non-existent. You picked up a book and trudged through the problems until you found them. As I started to have personal coding victories and learn new technology, I realized I would have loved to have had some kind of mentor to catch some of my glaring initial errors and give me some of core coding concepts to help along the way. So I started to blog about them. I once read somewhere that you truly didn’t understand a concept until you could teach it to somebody else, so that was a motivating factor as well. Test my knowledge and help others at the same time. Just trying to be another shoulder for future giants to stand on.&lt;/p&gt;
&lt;h3&gt;Introspection…&lt;/h3&gt;
&lt;p&gt;I’ve come to find that there is a lot of “there there” in life. Our beings are both flesh and spirit and that balance (or neglect) plays itself out in a lot of profound ways. I’ll admit I’m rather internal about a lot of these things to the average man on the street and some of this comes from the fact that I don’t have all the answers &lt;em&gt;[duh!]&lt;/em&gt;. A professor of mine once gave us the latin phrase “Non supere aude” - “Dare not to know.” This wasn’t a phrase to encourage blind dismissal of something, but to admit when you don’t know something, to be comfortable that you don’t, and to move forward and discover the answer. It’s too easy to feign knowledge and drop it at that. It’s harder to say “I don’t know, help me find out.” So part of my blog (and one rather minimal) is to help me flesh out those things I don’t know. To meditate on the events of my life that matter and discover some of the deeper truths that I get a glimpse of through this. Doing it “publicly” in a blog helps open up a little bit of dialog (we all have something to learn) and gets me somewhat accountable for my ideas (feel free to push back).&lt;/p&gt;
&lt;p&gt;So that’s a start. I’m sure there’s more to flesh out, but that’s how it all started and where it’s going to go.&lt;/p&gt;
</content:encoded></item><item><title>New Year New Me Sorta</title><link>https://dillieo.me/posts/development/2015-01-05-new-year-new-me-sorta/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2015-01-05-new-year-new-me-sorta/</guid><description>New Year New Me Sorta</description><pubDate>Mon, 05 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s a new year, and while I’ve always jumped off and on the bandwagon with New Years resolutions, this year there’s a few things that I’m definitely going to do. One of them is expanding this blog more.&lt;/p&gt;
&lt;p&gt;I’ve kept the blog primarily geared towards my “geekish coding” type posts, but I think it needs to expand out more. I need to put a little more “me” into my blog. If I’ve learned anything over the past year, it’s that we are a people of stories. Not in the “fantastical things that keep you avoiding the truth” kind of the stories, but in the “legacy” kind of stories. Things that go back far beyond ourselves, and shape it at the same time.&lt;/p&gt;
&lt;p&gt;Combine this with the privilege I’ve had of helping test a great blog/story telling app called &lt;a href=&quot;http://desk.pm&quot;&gt;Desk&lt;/a&gt; and it seems like the perfect time to expand more. We’ll add the icing to the cake that Desk’s creator, John Saddington, has added a 10 day workshop to a better blog and it seems like the perfect time to get it all together.&lt;/p&gt;
&lt;p&gt;So here we go. It’s time to see what I’m going to add to this new year, and newish blog. 8^D&lt;/p&gt;
&lt;p&gt;Feel free to reach out and see how I’m doing. Or &lt;a href=&quot;http://talk.desk.pm/t/10-days-to-a-better-blog-day-1/777&quot;&gt;join it&lt;/a&gt; yourself!&lt;/p&gt;
</content:encoded></item><item><title>Bienvenue Mmxv</title><link>https://dillieo.me/posts/growth/2014-12-31-bienvenue-mmxv/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-12-31-bienvenue-mmxv/</guid><description>Bienvenue Mmxv</description><pubDate>Wed, 31 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;hello 2015.&lt;/p&gt;
&lt;p&gt;what do you have in store for me?&lt;/p&gt;
&lt;p&gt;or more importantly... what do I have in store for you?&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Locating Namespaces In Visual Studio</title><link>https://dillieo.me/posts/development/2014-12-31-quick-tip-locating-namespaces-in-visual-studio/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-12-31-quick-tip-locating-namespaces-in-visual-studio/</guid><description>findnamespace_1</description><pubDate>Wed, 31 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I’m using Visual Studio 2013 Community (&lt;a href=&quot;http://www.visualstudio.com/products/visual-studio-community-vs&quot;&gt;for free too!&lt;/a&gt;) while working on my pet project, I’ve come to realize how dependent I’ve become upon &lt;a href=&quot;https://www.jetbrains.com/resharper/&quot;&gt;Resharper&lt;/a&gt; for a lot of simple programming needs. While attempting to build some code and compile it, it turns out I was missing a namespace reference that I didn’t immediately know where to find it. After a little experimentation, here’s a trick I found that helps about 90% of the time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here are the quick pictures/steps.&lt;/p&gt;
&lt;h3&gt;1. Build and see your problems…&lt;/h3&gt;
&lt;p&gt;Yep, I can’t compile, a couple namespaces are missing.&lt;/p&gt;
&lt;h3&gt;2. Move the cursor to the object and press F12&lt;img src=&quot;@assets/images/posts/2014-12-findnamespace_2.png&quot; alt=&quot;findnamespace_2&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;The F12 command is the “Go to Definition” command used to easily navigate to a function or object definition, giving you the details on its structure and methods. Click the cursor on the type of object you need the details for and press F12. The “symbol results” window will pop up some options for you.&lt;/p&gt;
&lt;h3&gt;3. Add using statement for the namespace you need.&lt;img src=&quot;@assets/images/posts/2014-12-findnamespace_3.png&quot; alt=&quot;findnamespace_3&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;Once you know the namespace you need add the appropriate using statement to the top of the page. In my case, I added two or three and bingo I have properly compiling code!&lt;/p&gt;
&lt;p&gt;If you know any other tricks, pass them along!&lt;/p&gt;
</content:encoded></item><item><title>2014 In Review</title><link>https://dillieo.me/posts/growth/2014-12-29-2014-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-12-29-2014-in-review/</guid><description>2014 In Review</description><pubDate>Mon, 29 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I always find it interesting to see what &quot;trends&quot; on my blog since most of my traffic seems to come after the fact. On one hand I could say I had nothing &quot;newsworthy&quot; to say this year. On the other hand, I could say that my &quot;sage wisdom&quot; continues to carry forward over time. You be the judge. 8^D&lt;/p&gt;
&lt;p&gt;The WordPress.com stats helper monkeys prepared a 2014 annual report for this blog.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/annual-report&quot;&gt;Click here to see the complete report.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Using Zurb Foundation For Apps In Net</title><link>https://dillieo.me/posts/development/2014-12-11-soup-to-nuts-using-zurb-foundation-for-apps-in-net/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-12-11-soup-to-nuts-using-zurb-foundation-for-apps-in-net/</guid><description>Windows_10_x64</description><pubDate>Thu, 11 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Update: Scaffold now available on &lt;a href=&quot;https://github.com/Dillie-O/z4a-dotnet-scaffold&quot;&gt;Github&lt;/a&gt;. NuGet package available &lt;a href=&quot;http://www.nuget.org/packages/z4a-dotnet-scaffold/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Update 2 Concerns over extending controllers are gone thanks to a note by Zurb, Link formatting is also updated to use the ui-sref model. I&apos;ve updated things accordingly below, as well as the scaffold online.&lt;/p&gt;
&lt;p&gt;I’ve been a big fan of Zurb and their frameworks for developing responsive layouts for a while now. I was especially excited when they announced and recently released their &lt;a href=&quot;http://foundation.zurb.com/apps/&quot;&gt;Foundation for Apps&lt;/a&gt; framework. This new framework is optimized for more speed and leverages the popular &lt;a href=&quot;http://angularjs.org&quot;&gt;AngularJS&lt;/a&gt; framework to build apps with. While AngularJS is typically build on a MEAN stack, I wanted to leverage Foundation for Apps (ZFA) in a.Net environment while I rebuild a pet project of mine, and here’s how you can make it happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Library Requirements&lt;/h2&gt;
&lt;p&gt;The first thing to do is to setup all the requirements necessary to run a FA, according to the site, you need make sure you have the following libraries in place:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Node Package Manager (npm)&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Ruby bundler package&lt;/li&gt;
&lt;li&gt;Ruby sass package&lt;/li&gt;
&lt;li&gt;Gulp&lt;/li&gt;
&lt;li&gt;Bower&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first 4 items can easily be installed using the &lt;a href=&quot;https://chocolatey.org&quot;&gt;chocolatey&lt;/a&gt; package manager. It is recommended to install Ruby version 1.9 since version 2 seems to have certificate issues when installing from the command prompt or powershell.&lt;/p&gt;
&lt;p&gt;After Ruby has been installed you can run&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gem install bundler sass&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;to get the Ruby packages needed.&lt;/p&gt;
&lt;p&gt;Afterwards, run&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm install -g gulp bower&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;with Administratrive privileges to get the node packages required.&lt;/p&gt;
&lt;p&gt;Finally, we install Zurb’s CLI tool by running&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm install -g foundation-cli&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;which comes in handy for setting up new projects.&lt;/p&gt;
&lt;h2&gt;Visual Studio Bonuses&lt;/h2&gt;
&lt;p&gt;While it isn’t required, the new Task Runner Extension for Visual Studio provides a great way to monitor and run various Grunt/Gulp packages within Visual Studio. It helps break out the front end and back end architecture within the app. You will need Visual Studio 2013 or greater, but there is the FREE &lt;a href=&quot;http://www.visualstudio.com/products/visual-studio-community-vs&quot;&gt;Visual Studio 2013 Community Edition&lt;/a&gt; that is available. Once VS2013 is in place, follow &lt;a href=&quot;http://www.hanselman.com/blog/IntroducingGulpGruntBowerAndNpmSupportForVisualStudio.aspx&quot;&gt;this blog&lt;/a&gt; for easy directions how how to get all the extensions in place.&lt;/p&gt;
&lt;p&gt;Now on to business!&lt;/p&gt;
&lt;h2&gt;Install ZFA Base&lt;/h2&gt;
&lt;p&gt;The default structure for ZFA doesn’t quite match up with what Visual Studio likes for building applications, so we will build our ZFA base and migrate it in.&lt;/p&gt;
&lt;p&gt;1. Pick a directory of your choosing and run the following from the command prompt:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;foundation-apps new zurb-base&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You’ll see the new Yeti in all it’s ASCII glory as it downloads and puts all the basic components in place.&lt;/p&gt;
&lt;p&gt;2. Once this is complete, we will want to “compile” our code to setup gulp and put our bower components into place. Run the following commands in order:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm install bower install bundle&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;3. Now we can verify everything was downloaded/configured by doing a simple build of the project. Run:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gulp build&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will build all of our code together and put it into a build folder. If you wanted to take right away, you could run `gulp` (with no build command) which would build it and fire up a test server so that you could peek at the project through the URL localhost:8080.&lt;/p&gt;
&lt;h2&gt;Create WebAPI Project&lt;/h2&gt;
&lt;p&gt;Since we’re using ZFA for our front end, we’ll tie the backend to a standard.Net WebAPI project so we can leverage it’s REST capabilities and any EF modeling we want to do.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start up a new project in Visual Studio. Use the “Empty” project template and check the “WebAPI” option to include the appropriate libraries. We’re calling our app “zurb-app” but you can use whatever you want.&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-2.png&quot; alt=&quot;Windows_10_x64 2&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2. Once Visual Studio gets the project started, jump over to your zurb-base folder and copy everthing into the root of your zurb-app project (not solution) except for the “build” folder.&lt;/p&gt;
&lt;p&gt;3. Click “view all files” then “refresh” in solution explorer and you’ll see the additional files/folders.&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-3.png&quot; alt=&quot;Windows_10_x64 3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;4. Right click and select “include in project” for the following items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;client folder&lt;/li&gt;
&lt;li&gt;bower.json&lt;/li&gt;
&lt;li&gt;gulpfile.js&lt;/li&gt;
&lt;li&gt;package.json&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;5. As we mentioned earlier, the default build action in our gulp file assembles all of the resources into a “build” folder, but for our.Net solution, we want these files to be assembled into our project root so that IIS can easily find them. To make this happen, we remove the “build” folder path references from our clean/copy actions. In addition, we add a few extra clean actions (gulp doesn’t seem to like multple rimraf commands in a single task) to properly flush our our assets/templates/etc. upon every build. The updated gulpfile.js looks like this:&lt;/p&gt;
&lt;p&gt;6. Once this is complete, right click on the gulpfile.js, select gulp option, and then “build”.&lt;img src=&quot;@assets/images/posts/2014-12-fullscreen_12_10_14__6_44_am.png&quot; alt=&quot;Fullscreen_12_10_14__6_44_AM&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Another option is to right click on the gulpfile.js and select the “Task Runner Explorer” option. This brings up a nice window (that you can dock) with the actions associated with the gulp file. You can then double click the “build” action whenever you need it.&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-4.png&quot; alt=&quot;Windows_10_x64 4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;7. After the gulp build completes, refresh the solution explorer and add the following items to the project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;index.html&lt;/li&gt;
&lt;li&gt;assets folder&lt;/li&gt;
&lt;li&gt;partials folder&lt;/li&gt;
&lt;li&gt;templates folder&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;8. Now it’s time to see the basics in action. Build and run the project using your old friend CTRL+F5. Hazzah! We have zurb!&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-5.png&quot; alt=&quot;Windows_10_x64 5&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The default items in Zurb is EXTREMELY basic (none of the header links even work), so let’s add a few things to prove things are functional.&lt;/p&gt;
&lt;h2&gt;Add New Page/View&lt;/h2&gt;
&lt;p&gt;1. Expand the client folder, right click on the templates folder, and select “Add HTML page” Give it the name “news”.&lt;/p&gt;
&lt;p&gt;2. Replace all the existing HTML with the following to create the news view:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--- name: news url: /news --- &amp;lt;h1&amp;gt;Welcome to the News Page!&amp;lt;/h1&amp;gt;;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;3. Next we update the client/index.html page so that our home and news links are valid angular links (around line 15):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul class=&quot;primary condense menu-bar&quot;&amp;gt;; &amp;lt;li&amp;gt;&amp;lt;a&amp;gt;&amp;lt;strong&amp;gt;Foundation for Apps&amp;lt;/strong&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a&amp;gt;ui-sref=&quot;home&quot;&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a&amp;gt;ui-sref=&quot;about&quot;&amp;gt;About&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#!/news&quot;&amp;gt;News&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Contact&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4. Run the gulp build command again to rebuild our assets/templates/etc and index page.&lt;/p&gt;
&lt;p&gt;5. Refresh the browser. There’s no need to rebuild the.Net code since none was affected. Click on the news link, we now have a news page! You can click the home link again to go back too. If you don’t see this right away, you might have to hit enter in the URL bar instead of a simple refresh.&lt;img src=&quot;@assets/images/posts/2014-12-fullscreen_12_10_14__7_52_am.png&quot; alt=&quot;Fullscreen_12_10_14__7_52_AM&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now let’s add some dynamic stuff...&lt;/p&gt;
&lt;h2&gt;Add WebAPI Method&lt;/h2&gt;
&lt;p&gt;1. Right click on the “Controllers” folder and select “Add Controller” In the scaffold options that come up, select “Web API 2 Controller with read/write actions”. In the next screen, Give it the name “InfoController”.&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-6.png&quot; alt=&quot;Windows_10_x64 6&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-7.png&quot; alt=&quot;Windows_10_x64 7&quot; /&gt;&lt;/p&gt;
&lt;p&gt;2. We’ll modify the default Get() method to return a single string instead with the current date/time. WebAPI2 works with JSON by default, so we are all set.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// GET: api/Info 
public string Get() 
{ 
    return DateTime.Now.ToShortDateString() + &quot; &quot; + DateTime.Now.ToShortTimeString(); 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3. Now it’s time to compile the API and verify it’s functionality. I like to use a Chrome tool called &lt;a href=&quot;http://getpostman.com&quot;&gt;PostMan&lt;/a&gt; that allows us to easily make REST calls and see our results:&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-8.png&quot; alt=&quot;Windows_10_x64 8&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, let&apos;s wire up some AJAX fun.&lt;/p&gt;
&lt;h2&gt;Bind Angular Action to WebAPI&lt;/h2&gt;
&lt;p&gt;1. First we need to open the assets/templates/news.html and assign a new controller for it, instead of using the default. We also will add a place holder for our timestamp, and a button action to get it. Our file now looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- name: news url: /news controller: NewsController --- &amp;lt;h1&amp;gt;Welcome to the News Page!&amp;lt;/h1&amp;gt;

&amp;lt;p&amp;gt; Current News Time: &amp;lt;b&amp;gt;&amp;lt;span&amp;gt;{{ newsTime }}.&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; &amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt; &amp;lt;a class=&quot;button&quot; ng-click=&quot;getTime()&quot;&amp;gt;Get News Time&amp;lt;/a&amp;gt; &amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2. Open up the bower_components/foundation-apps/js/controllers.js file (more on this later) and add our controller code at the bottom of the file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;angular.module(&apos;application&apos;).controller(&apos;NewsController&apos;, [&apos;$scope&apos;, &apos;$stateParams&apos;, &apos;$state&apos;, &apos;$http&apos;, function ($scope, $stateParams, $state, $http) 
{ 
    $scope.newsTime = &apos;Not retrieved yet.&apos;; $scope.getTime = function () 
    {
        var responsePromise = \$http.get(&quot;/api/info&quot;);
        responsePromise.success(function (data, status, headers, config) { \$scope.newsTime = data; });
        responsePromise.error(function (data, status, headers, config) { \$scope.newsTime = &apos;Failed to get time: &apos; + data; }); 
    }; 
}]);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3. Finally, run the gulp build command and refresh the page. Our news page now looks like this:&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-9.png&quot; alt=&quot;Windows_10_x64 9&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Go ahead and click the button. You’ll get something like this.&lt;img src=&quot;@assets/images/posts/2014-12-windows_10_x64-10.png&quot; alt=&quot;Windows_10_x64 10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There you have it! A fully functional.Net WebAPI application using the new Zurb Foundation for Apps on the front end!&lt;/p&gt;
&lt;h2&gt;Download&lt;/h2&gt;
&lt;p&gt;Just in case you want to examine things further, I’ve gone ahead and zipped up a copy of both the base and the app for your convenience. You can download it &lt;a href=&quot;http://1drv.ms/1vJzcQE&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Improvements&lt;/h2&gt;
&lt;p&gt;I know that ZFA has only been out for a few days know, but there are a couple of things that could be done for a big improvement:&lt;/p&gt;
&lt;p&gt;Watch Task in Gulp - Currently I have to rebuild gulp every time I change my index/template/js files. It would be nice if there was an action to run that would auto watch/build/refresh. I’ve seen this in other projects, so maybe I just need to look it up.&lt;/p&gt;
&lt;p&gt;Extending/Configuring Angular - By default, you have an AngularJS application with the name “application”. I can modify this through the bower_components folder, but the next time I update the code base for some ZFA changes, I’m going to lose this. More importantly, I was unable to create my controllers in my client/assets/js folder where I expected to. I tried editing the existing app.js file (which gets merged) as well as my own controllers.js file to no luck. I received errors about a function not existing. I even tried writing my controller code in the template itself with no luck. Maybe I’m missing something in the architecture, but this becomes a bit hassle to overcome as your project expands.&lt;/p&gt;
&lt;p&gt;That said, I’m VERY excited at the doors this opens up and I can’t wait to get my &lt;a href=&quot;http://prayerjournal.firebaseapp.com&quot;&gt;project&lt;/a&gt; rebased to use ZFA and.Net. If you build any projects using this setup, definitely let me know! I’d love to see it!&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas</title><link>https://dillieo.me/posts/growth/2014-12-03-12-songs-of-christmas/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-12-03-12-songs-of-christmas/</guid><description>12 Songs Of Christmas</description><pubDate>Wed, 03 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As mentioned the other day in my &lt;a href=&quot;http:///2014/12/01/christmas-advent-music/&quot;&gt;Christmas advent music&lt;/a&gt; post, here’s a collection of my favorite 12 songs (and renditions) for Christmas. Click the links for details on each song, or just fire up the playlist and start listening!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/5MgSxM4RAsQqXA4iTu4WT1&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/19/12-songs-of-christmas-o-tannenbaum-by-vince-guaraldi-trio/&quot;&gt;O Tannenbaum&lt;/a&gt; - &lt;em&gt;Vince Guraldi Trio&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/13/12-songs-of-christmas-sleigh-ride-by-harry-connick-jr/&quot;&gt;Sleigh Ride&lt;/a&gt; - &lt;em&gt;Harry Connick Jr.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/12/12-songs-of-christmas-merry-christmas-baby-by-bb-king/&quot;&gt;Merry Christmas Baby&lt;/a&gt; - &lt;em&gt;B.B. King&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/21/12-songs-of-christmas-santa-claus-is-coming-to-town-by-manhattan-transfer/&quot;&gt;Santa Claus is Coming to Town&lt;/a&gt;&lt;a href=&quot;http:///2012/12/10/12-songs-of-christmas-carol-of-the-bells-by-david-benoit/&quot;&gt; - &lt;em&gt;Manhattan Transfer&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/10/12-songs-of-christmas-carol-of-the-bells-by-david-benoit/&quot;&gt;Carol of the Bells&lt;/a&gt; - &lt;em&gt;David Benoit&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/21/12-songs-of-christmas-jingle-bells-by-mannheim-steamrolle/&quot;&gt;Jingle Bells&lt;/a&gt; - &lt;em&gt;Mannheim Steamroller&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/18/12-songs-of-christmas-wizards-in-winter-by-trans-siberian-orchestra/&quot;&gt;Wizards in Winter&lt;/a&gt; - _Trans-Siberian Orchestra___&lt;/li&gt;
&lt;li&gt;What Child is This? - &lt;em&gt;Third Day&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/14/12-songs-of-christmas-perry-saves-christmas-by-phineas-and-ferb/&quot;&gt;Perry Saves Christmas&lt;/a&gt; - &lt;em&gt;Phineas and Ferb&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Jingle Bells - &lt;em&gt;Herb Alpert &amp;amp; The Tijuana Brass&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Little Drummer Boy* - Audio Adrenaline*&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http:///2012/12/24/12-songs-of-christmas-o-holy-night-three-versions/&quot;&gt;O Holy Night&lt;/a&gt; - &lt;em&gt;Point of Grace&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For you non-Spotify folks, here’s the GrooveShark playlist:&lt;/p&gt;
&lt;p&gt;http://grooveshark.com/playlist/12+Songs+Of+Christmas/102807443&lt;/p&gt;
&lt;p&gt;Joyeux Noel a tout le monde!!!&lt;/p&gt;
</content:encoded></item><item><title>Christmas Advent Music</title><link>https://dillieo.me/posts/development/2014-12-01-christmas-advent-music/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-12-01-christmas-advent-music/</guid><description>Christmas Advent Music</description><pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here we are! Advent season is here again! To say I’m a fan of the season is putting it rather mildly. I broke &lt;a href=&quot;http:///2010/11/26/give-thanksgiving-its-due-a-pseudo-rant/&quot;&gt;my own rules&lt;/a&gt; this year and put some Christmas lights up on the house as well as got the Christmas music going early this year. Speaking of music, if you’re looking for some, I have a few places you can look.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been building up my own collection of holiday favorites over the years and put them together in what I affectionately call my “Phat Chunk O Christmas” collection. There’s a great collection of timeless classics and some eclectic charts, old and new, that will keep your work days flying by. You can play it through Spotify or right through the web page here:&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/6iapIFkfx2L1RVJ4eXUQRL&lt;/p&gt;
&lt;p&gt;Not a Spotify user? I&apos;ve been able to incorporate 95% of the list into a GrooveShark playlist you can listen to without logging in here:&lt;/p&gt;
&lt;p&gt;http://grooveshark.com/playlist/Phat+Chunk+O+Christmas/102757490&lt;/p&gt;
&lt;p&gt;If you need a more distilled mix. I’ve pulled my absolute favorites into the “Essential Christmas Mix” that you can listen to here:&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/2bJa1XC3Oy2EVLLiHPyOoT&lt;/p&gt;
&lt;p&gt;In the next few days I’ll pull together some old blog posts of my 12 favorite Christmas songs (and their variations into a post that you can listen to as well.&lt;img src=&quot;@assets/images/posts/2014-11-christmaslounge.jpg&quot; alt=&quot;&quot; /&gt;When I’m not listening to my mix, I’m grooving to the sounds of the “Christmas Lounge” provided by Soma.FM. They describe it as &quot;Chilled holiday grooves and classic winter lounge tracks.” It’s fabulous and perfectly safe for work (and the kids).&lt;/p&gt;
&lt;p&gt;Give it a listen &lt;a href=&quot;http://somafm.com/christmas/&quot;&gt;here&lt;/a&gt; (and make a donation if you can).&lt;/p&gt;
&lt;p&gt;So Merry Christmas to all and enjoy the advent season! Have some music you listen to? I&apos;d love to hear it! I&apos;m always looking for more!&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2014</title><link>https://dillieo.me/posts/life/2014-11-24-thankful-tree-2014/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2014-11-24-thankful-tree-2014/</guid><description>Thankful Tree 2014</description><pubDate>Mon, 24 Nov 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We’re still in the process of making our thankful tree this year, but since Thanksgiving is coming soon, I thought it best to get these thoughts out now...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here are the top three things I’m thankful for this year:&lt;/p&gt;
&lt;h3&gt;My wife’s health&lt;/h3&gt;
&lt;p&gt;It’s been a crazy year. Last year about this time she was diagnosed with thyroid cancer. After surgery, radiation treatment, lots of rest, and lots of prayer, she received her “clean” diagnosis in June. It’s still been a long road to recovery, but I’m thankful that she is still here and getting stronger day by day.&lt;/p&gt;
&lt;h3&gt;Weather changes&lt;/h3&gt;
&lt;p&gt;Even when it is a gorgeous 75 degrees all the time, I’ve never liked the single climate environments. Winter is finally starting to show up around here, with it’s blustery 25 degree mornings, and I love it. There’s something to the change in seasons, the anticipation it brings, the unique joys it brings, the reminder that life is a cycle and a rhythm, that you can miss when it’s the same all the time. I’m thankful I get a solid four seasons to embrance.&lt;/p&gt;
&lt;h3&gt;Coffee&lt;/h3&gt;
&lt;p&gt;Yeah, not so serious of a thing but to be thankful for but hey, it taste’s good, it helps me start my day, and it’s one way I can easily connect with others with little money or time.&lt;/p&gt;
&lt;p&gt;What are you thankful for this year?&lt;/p&gt;
</content:encoded></item><item><title>Whats Your Pet Project</title><link>https://dillieo.me/posts/development/2014-11-20-whats-your-pet-project/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-11-20-whats-your-pet-project/</guid><description>Whats Your Pet Project</description><pubDate>Thu, 20 Nov 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a saying that “when I’m not coding, I’m coding.” I love what I do that much. I also bought into the commercials back in the day that stated “never stop learning.” So how do I fuse the two together? I do so through fun and educational pet projects.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Why have a pet project? Why just not learn new technology on the job through a project or training? Here are several reasons why:&lt;/p&gt;
&lt;h4&gt;There are no deadlines!&lt;/h4&gt;
&lt;p&gt;Often times you’re on a tight budget or time crunch at work. This can affect the amount of time you can spend working with a new technology. Instead of being able to get immersed in it, you might simply find the quick code snippets online and move forward. Being able to work on a pet project during your own time gives you the freedom to take a couple nights, or a couple months, to really dig in deep and not worry when anything is actually done.&lt;/p&gt;
&lt;h4&gt;Resources are everywhere!&lt;/h4&gt;
&lt;p&gt;Between the various code academies out there, online tutorials, free eBooks (I personally take advantage of the &lt;a href=&quot;http://www.oreilly.com/reviews&quot;&gt;O’Reilly Reader Review Program&lt;/a&gt; to find “getting started” type books for new technologies), and good ‘ol &lt;a href=&quot;http://stackoverflow.com&quot;&gt;StackOverflow&lt;/a&gt;, there is no shortage of materials to get you started. Previously you would have to go to your local bookstore, find 1 book -hopefully-, then read through that and hope there were plenty of code examples to work with.&lt;/p&gt;
&lt;h4&gt;You can do something fun!&lt;/h4&gt;
&lt;p&gt;Yes, you may love your job, but sometimes you’re building something that doesn’t really excite your interests. When you’re working on something that YOU really want to work on, you get excited! You take the extra time to track down that random bug or cool layout tweak. The desire to make something that you want to use, even if it is small, gives you that extra drive. It also gives you that extra sense of gratification when it actually works!&lt;/p&gt;
&lt;h4&gt;My Projects&lt;/h4&gt;
&lt;p&gt;When I think about it more, I think my first pet project started a good 10 years back, but here are some recent examples of my own pet projects:&lt;/p&gt;
&lt;p&gt;A year or so back, I was interested in learning Ruby on Rails. I also had this itch to make a random quote generator to use from my old &lt;a href=&quot;http://en.wikipedia.org/wiki/QWK_(file_format)&quot;&gt;QWK Mail days&lt;/a&gt;. So over a couple of nights &lt;a href=&quot;http://quoteadillieo.aws.af.cm&quot;&gt;Quote-a-Dillie-O&lt;/a&gt; was born. Shortly after that I needed a little more “data oriented” knowledge in Ruby on Rails. I also wanted to take a hard look at how to build an app that could “run on any screen” using &lt;a href=&quot;http://foundation.zurb.com&quot;&gt;Zurb Foundation&lt;/a&gt; so I built a game timer for a friend and his shop.&lt;/p&gt;
&lt;p&gt;A little while after that I wanted to check out the &lt;a href=&quot;http://laravel.com&quot;&gt;Laravel&lt;/a&gt; framework that we were starting to use with new projects. My friend’s game timer needed a new home as well. So I rebuilt the &lt;a href=&quot;http://timer.gameonarizona.com&quot;&gt;game timer&lt;/a&gt; using Laravel. I was even able to sell a copy of it to somebody for use on their own site. Then I REALLY neeeded to get some kind of Trello and Pomodoro integration going. I also needed to brush up more on my front end design and jQuery skills (for AJAX data binding from 3rd party services). So I rolled up my sleeves and created &lt;a href=&quot;http://trellodoro.apphb.com&quot;&gt;Trellodoro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My current pet project is a complete change of pace. It originally started to start getting familiar with &lt;a href=&quot;https://angularjs.org&quot;&gt;AngularJS&lt;/a&gt; for a project we were working on. We took a different route for that project, but my interest was still there. So I moved forward with AngularJS, stumbled across a “real time” application framework called &lt;a href=&quot;http://firebase.com&quot;&gt;Firebase&lt;/a&gt; and have been building a &lt;a href=&quot;http://prayerjournal.firebaseapp.com&quot;&gt;prayer journal&lt;/a&gt; application to let you track (and optionally share) your prayers.&lt;/p&gt;
&lt;p&gt;So what’s your pet project? Why not start one today (or tonight really, no using your employers work time 8^D)? Ultimately, it doesn’t matter if you’re building “yet another twitter reader” as long as it’s something that YOU would realy want to use and you can learn something while building it.&lt;/p&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;
</content:encoded></item><item><title>Whats Your Souvenir</title><link>https://dillieo.me/posts/growth/2014-11-19-whats-your-souvenir/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-11-19-whats-your-souvenir/</guid><description>Whats Your Souvenir</description><pubDate>Wed, 19 Nov 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I poured a cup of coffee this morning, threw on a hat before heading down to my office, and realized they were both from the same &lt;a href=&quot;/2014/09/02/the-magic-of-the-years-and-ears/&quot;&gt;recent trip&lt;/a&gt; that our family took this summer. Immediately the coffee tasted that much better and I felt a bit more grounded. It made me think a little bit...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;When you go on a vacation, or anywhere really, you can get souvenirs of all shapes and sizes. Pins, pennants, mugs, hats, shirts, sweaters, shot glasses, foam fingers, it gets pretty crazy! For me, the souvenirs that can give me a constant reminder of a great trip/event is what I appreciate the most. Every morning I enjoy a cup of coffee, and when I pour it into that mug (2 or 3 times a week) the memories come in. When I put that hat on to go run some errands to work around the house, the memory is there. Sometimes I get compliments about the hat too, and I get to share about our family adventure.&lt;/p&gt;
&lt;p&gt;What about you? What souvenirs do you get when you go on trips? What makes them special?&lt;/p&gt;
</content:encoded></item><item><title>Review Angularjs Up And Running</title><link>https://dillieo.me/posts/development/2014-10-31-review-angularjs-up-and-running/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-10-31-review-angularjs-up-and-running/</guid><description>Review Angularjs Up And Running</description><pubDate>Fri, 31 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;AngularJS is a new and popular Javascript framework. They make the bold claim on their website that &quot;AngularJS is what HTML would have been, had it been designed for building web-apps.” I’ve been wanting to get my feet wet with AngularJS, especially with some upcoming projects that might use it. Fortunately I stumbled across &quot;AngularJS: Up and Running&quot; &lt;em&gt;by Brad Green and Shyam Seshadri&lt;/em&gt; (as well as a &lt;a href=&quot;http://prayerjournal.firebaseapp.com)%20I%20wanted%20to%20start&quot;&gt;pet project&lt;/a&gt; and was able to get coding!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Given that AngularJS provides a different approach to a lot of common MVC frameworks out there, this book isn’t for the completely new developer to Javascript frameworks. Ideally you run an AngularJS application without the typical jQuery / boostrap libraries that are common to modern web applications, so this new approach to referencing DOM elements might be confusing. I’d recommend you have an intermediate (or greater) knowledge of Javascript and the HTML DOM to really take advantage of this book.&lt;/p&gt;
&lt;p&gt;That said, this book is great at starting with the fundamentals and gradually moving you through more advanced concepts within the AngularJS framework. The book starts with your typical “Hello World” app (Angular Style) and then moves out from there to binding, switches, services, and even setting up directives. There is a fully functional working example in each chapter, which makes it possible to code in the examples yourself as you read and see how they work in action. I’m a “hands on” type learner, so taking these examples and tweaking them for my own customization allowed me to learn the best.&lt;/p&gt;
&lt;p&gt;Since AngularJS was designed with unit testing in mind, the book spends a full chapter, as well as a few sections within chapters on how unit testing works and how to setup your tests. I’ve always known about unit testing and wanted to actually start writing code with tests in it, so this was a big help. There is a full chapter dedicated to end to end testing as well, which was a new concept to me that I also found helpful.&lt;/p&gt;
&lt;p&gt;The best part, and something I haven’t seen in a lot of books, was the final chapter dedicated to best practices. There are so many times as a coder when you’re learning through “bad” examples because they help you understand the concepts, but aren’t the way you’d write the code in a live environment. The problem is that you’re stuck writing bad code or searching for what the proper way to code is. This book provides you with solid best practices, as well as a list of tools and code structure guidelines, to make sure you’re coding correctly from the start.&lt;/p&gt;
&lt;p&gt;If you’re wanting to learn AngularJS, I highly recommend &quot;AngularJS: Up and Running&quot; &lt;em&gt;by Brad Green and Shyam Seshadri&lt;/em&gt;. It will give you all the fundamentals you need to be coding with Angular in no time. You can find the book through O’Reilly books at &lt;a href=&quot;http://shop.oreilly.com/product/0636920033486.do&quot;&gt;http://shop.oreilly.com/product/0636920033486.do&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Desk Made Me Fall In Love With Blogging Again</title><link>https://dillieo.me/posts/development/2014-10-30-desk-made-me-fall-in-love-with-blogging-again/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-10-30-desk-made-me-fall-in-love-with-blogging-again/</guid><description>Desk Made Me Fall In Love With Blogging Again</description><pubDate>Thu, 30 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ll admit blogging was getting a little stale. I don’t think it was so much the content but the process of getting it there. I know that sounds odd, but that’s where I was at. However, that all changed once I came across a beautiful new app called &lt;a href=&quot;http://desk.pm&quot;&gt;Desk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Desk is a blog publishing app with the goal of taking away the clutter that you find with most blogging platforms and allow you to simply tell your story. Here’s what you’re typical composition window looks like...&lt;/p&gt;
&lt;p&gt;…beautiful, isn’t it?! You can simply type away without the distractions of drop down lists, checkboxes, buttons, and everything else. Desk also supports different layout modes depending on how you like to write:&lt;img src=&quot;@assets/images/posts/2014-10-desk_night_mode.png&quot; alt=&quot;&quot; /&gt;Night Mode&lt;img src=&quot;@assets/images/posts/2014-10-desk_fullscreenmode.png&quot; alt=&quot;&quot; /&gt; Full Screen Mode&lt;img src=&quot;@assets/images/posts/2014-10-desk_transparent_mode.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Transparent Mode&lt;/p&gt;
&lt;p&gt;Desk even supports Markdown code. I’ll admit I was a little reluctant to work with Markdown, but being able to simply &lt;strong&gt;bold&lt;/strong&gt; some text without any fancy keystrokes is great!&lt;img src=&quot;@assets/images/posts/2014-10-desk_markdown.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Working with images is simple as well. Simply drag and drop an image into a post and it shows right up with options for resizing and alignment:&lt;img src=&quot;@assets/images/posts/2014-10-desk_image_addition.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But Desk isn’t just a “text editor” with a few extra features. It’s designed to allow you to easily publish your stories wherever you want. Currently you can publish to WordPress, Blogger, Tumblr, Facebook, Typepad, Movable Type, and Squarespace. That allows you to take the SAME post and not have to retype, or even copy/paste it several times if you’re spanning multiple blogs. Just change your target and you’re set!&lt;/p&gt;
&lt;p&gt;Desk also allows you to save your drafts to iCloud, so you won’t lose them if you move over to another computer or want to access them from somewhere else. Another geeky (yet huge) benefit is that your drafts in Desk are self contained. That means if you accidentally delete all of those images from you computer that you had for an old post, your post won’t be ruined, because each draft has the images are right there!&lt;/p&gt;
&lt;p&gt;There’s a lot more I could go into (previews, getting your existing blog drafts, quick publishing) but I need to start blogging more! I have a pile of drafts loaded up that need finishing and I can’t wait!&lt;/p&gt;
&lt;p&gt;Go check out &lt;a href=&quot;http://desk.pm&quot;&gt;Desk&lt;/a&gt; today! It’s available in the Mac App Store and very much worth the cost.&lt;/p&gt;
</content:encoded></item><item><title>Sick Doctors And Healthy Patients</title><link>https://dillieo.me/posts/growth/2014-10-23-sick-doctors-and-healthy-patients/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-10-23-sick-doctors-and-healthy-patients/</guid><description>Sick Doctors And Healthy Patients</description><pubDate>Thu, 23 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Theology is full of theories and arguments expounding the miracles it works in each soul. We may be able to understand all these speculations, cogently discuss, write, teach, and instruct souls through them. But with only this in mind in relation to those whom that divine purpose exists, I suggest are like sick doctors trying to cure patients who are in perfect health.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;-- Jean-Pierre de Caussade&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Create An Email Template In Airmail</title><link>https://dillieo.me/posts/tips/2014-10-15-quick-tip-how-to-create-an-email-template-in-airmail/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2014-10-15-quick-tip-how-to-create-an-email-template-in-airmail/</guid><description>1413331258_0.png</description><pubDate>Wed, 15 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ever since Outlook started giving me grief, I’ve become a big fan of &lt;a href=&quot;http://airmailapp.com&quot;&gt;Airmail&lt;/a&gt;. It has a really simple and polished interface, can easily handle multiple accounts, and works really well. The one thing that is missing from Airmail though is the ability create mail templates / stationary. Since I send out “&lt;a href=&quot;/a-fresh-perspective-two-years-and-counting-as-a-remote-worker&quot;&gt;daily virtual standup&lt;/a&gt;” e-mails, I want a quick and easy way to get this done. Here’s a little “hack” I’ve come up with in order to have a template at my fingertips.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step is to send an e-mail to yourself with the content that you want to save as a template. Here’s what mine looks like:&lt;/p&gt;
&lt;p&gt;Once your e-mail arrives. Open it up. Then use the File-&amp;gt;Export to EML option available within Airmail. I created a “E-mail Templates” folder under my “Documents” folder and saved it there.&lt;img src=&quot;@assets/images/posts/2014-10-1413331260_1.png&quot; alt=&quot;1413331260_1.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The next step is to make sure that Airmail is the default application used for email messages. If it isn’t, then you can follow the directions outlined &lt;a href=&quot;http://www.mariasguides.com/2007/12/21/changing-mac-os-xs-default-e-mail-application/&quot;&gt;here&lt;/a&gt;. I’ve also found that I can right click on the.eml file, use the “Open With…” option and select Airmail, as well as checking the box to always open files with this program.&lt;/p&gt;
&lt;p&gt;Now that this is in place, you can use Alfred or Spotlight to quickly access your template. I hit ALT + SPACE, type in “DVS” and the first item in my results is my DVS email.&lt;img src=&quot;@assets/images/posts/2014-10-1413331262_2.png&quot; alt=&quot;1413331262_2.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The message will open in Airmail, and I can simply copy/paste the message contents into a new message and go from there.&lt;/p&gt;
&lt;p&gt;With hotkeys in place this “template” is nearly as good as the real thing!&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Validation Lights Using Zurb Foundation And Angularjs</title><link>https://dillieo.me/posts/development/2014-10-13-quick-tip-validation-lights-using-zurb-foundation-and-angularjs/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-10-13-quick-tip-validation-lights-using-zurb-foundation-and-angularjs/</guid><description>Quick Tip Validation Lights Using Zurb Foundation And Angularjs</description><pubDate>Mon, 13 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The more I play with &lt;a href=&quot;http://foundation.zurb.com&quot;&gt;Zurb Foundation&lt;/a&gt; and &lt;a href=&quot;http://angularjs.org&quot;&gt;AngularJS&lt;/a&gt;, the more I love it. As a middle tier / backend developer, having these tools at my disposal gives me a nice looking app with powerful client side data binding / object manipulation with little work.&lt;/p&gt;
&lt;p&gt;Here’s a little trick I came up with this weekend while working on a &lt;a href=&quot;https://prayerjournal.firebaseapp.com&quot;&gt;pet project&lt;/a&gt; to do form validation without taking up much space on the screen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I won’t go into much explanation here, I’ll let the CodePen do most of the talking. The trick here is to leverage the postfix form layout with Zurb (I’m actually using both prefix and postfix) in conjunction with angular’s validation and no-show / ng-hide directives to show or hide our error/valid span within the postfix.&lt;/p&gt;
&lt;p&gt;This example doesn’t actually show the error messages, since I’m trying to optimize for a mobile layout, but you could easily display error messages below the inputs or potentially collate them all above/below the form entry.&lt;/p&gt;
&lt;p&gt;Note that the create/cancel buttons don’t actually work, they are just there for show. You can see, however, that the create button will not be enabled until everything is valid.&lt;/p&gt;
&lt;p&gt;I hope this helps! Enjoy!&lt;/p&gt;
&lt;p&gt;http://codepen.io/Dillie-O/pen/vwDBL/&lt;/p&gt;
</content:encoded></item><item><title>Community</title><link>https://dillieo.me/posts/growth/2014-10-10-community/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-10-10-community/</guid><description>Community</description><pubDate>Fri, 10 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;safe and secure enough to share inward struggles, knowing you will still be accepted as you are but with the hope and desire to be transformed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;— Joanna Jung&lt;/p&gt;
</content:encoded></item><item><title>How To Run Multiple Projects In A Single Azure Site</title><link>https://dillieo.me/posts/development/2014-09-11-how-to-run-multiple-projects-in-a-single-azure-site/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-09-11-how-to-run-multiple-projects-in-a-single-azure-site/</guid><description>How To Run Multiple Projects In A Single Azure Site</description><pubDate>Thu, 11 Sep 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is probably a fringe case, but here’s the scenario. I have a site for a client that is actually broken down into several projects, but not in a single solution. The layout looks something like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Root Folder&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;index.html (basic home page with links to project roots)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ProjectA&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Default.aspx&lt;/li&gt;
&lt;li&gt;Details.aspx&lt;/li&gt;
&lt;li&gt;etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ProjectB&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Default.aspx&lt;/li&gt;
&lt;li&gt;Features.aspx&lt;/li&gt;
&lt;li&gt;etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ProjectC&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Default.aspx&lt;/li&gt;
&lt;li&gt;Contact.aspx&lt;/li&gt;
&lt;li&gt;etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By default, if you were to have your root folder checked into source control, and had Azure deploy from the root folder, you’d either have only Project A deployed on the site, or most likely, the deployment would fail with a message that it doesn’t know what project to deploy.&lt;/p&gt;
&lt;p&gt;There was nothing I could do to get around this situation, but I did come up with a way to make it work.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This trick will break a couple of “best practices” but when you need things to work you do what you must.&lt;/p&gt;
&lt;h3&gt;Create simple deployment file&lt;/h3&gt;
&lt;p&gt;The first step is to instruct the Azure deployment not to do anything. To set this up, add a file named .deployment in the Root Folder and give it the following content:&lt;/p&gt;
&lt;p&gt;[config]&lt;br /&gt;
project = .&lt;/p&gt;
&lt;p&gt;This will do a “raw” deployment of all the files in the folder (including subfolders).&lt;/p&gt;
&lt;h3&gt;Include binaries&lt;/h3&gt;
&lt;p&gt;Since we’re doing a “raw” deployment without compiling anything, we will have needed to precompile the files for each of the projects. In addition, we’ll need to right click on the bin folder with the project files and use the “Include in Project” option so that they are added to source control (and deployment)&lt;/p&gt;
&lt;h3&gt;Add binaries to root&lt;/h3&gt;
&lt;p&gt;Oddly enough, this still won’t do the trick when it comes to some master template files and other references. The final step is to create a bin folder in the Root Folder (even if there is a simple index.html file there) and copy the binaries from each of the project files there. That way the application can find the binaries necessary if the base pathing isn’t working.&lt;/p&gt;
&lt;h3&gt;Deploy and verify&lt;/h3&gt;
&lt;p&gt;Once all of this is in place, check in your files again and let Azure do it’s deployment. If all goes like it should, the index.html page will come up when you go to the site root and navigating to root/ProjectA will load up the Default.aspx page there without difficulites.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;Published Using Desk&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>The Magic Of The Years And Ears</title><link>https://dillieo.me/posts/growth/2014-09-02-the-magic-of-the-years-and-ears/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-09-02-the-magic-of-the-years-and-ears/</guid><description>The Magic Of The Years And Ears</description><pubDate>Tue, 02 Sep 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;About this time, a good 17 years ago now, I started my college year in a similar fashion. I met up with with a bunch of friends at Disnelyand for some fun in the magic kingdom before the intense studies began. At the carousel located just behind the iconic castle, friends old and new congregated. One of those new friends and I would soon start an adventure still going on today...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;17 years ago we met at this carousel…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is the woman I met at the carousel and married 4 years later. We had many adventures at Disneyland with friends during our college years. Both of us had a visit or two as kids as well and the magic of those times was never forgotten.&lt;/p&gt;
&lt;p&gt;Fast forward a few years and our children are 8 years old! The perfect time to capture all of the magic that we had enjoyed as kids. The characters, the rides, the fun! So lots of planning (and surprising) with the family (kids, parents, AND grandparents) and we made our trip to Southern California. To say it was amazing was an understatement. Two days was not enough to capture all of the magic, but we came pretty dang close.&lt;/p&gt;
&lt;p&gt;But more importantly than all the fun was how everything was a huge family affair. For starters, we were able to get together with my best friend and his family, who we haven’t seen in a few years. We were able to enjoy a little bit of Disneyland with them too, marvelling at how time flies and what fatherhood means.&lt;img src=&quot;@assets/images/posts/2014-09-1409632180_2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Best friends since the dawn of time it seems…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It was also fun to see the changes in the park over the years. Some things were old… like Splash Mountain. It was fun seeing our kids enjoy the characters and the drop at the end (well, one of them 8^D). Some things are new. The entire Disney California Adventures park was something we all got to experience with wide eyes of wonder.&lt;img src=&quot;@assets/images/posts/2014-09-1409632198_3.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Welcome to Radiator Springs!&lt;/em&gt;&lt;img src=&quot;@assets/images/posts/2014-09-1409632214_4.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Dad Gum!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Some things are different, like Star Tours. When I went on the ride, there was only one adventure to take. I had it memorized too. 8^D Now, I hear there are about 40 different trips you can take, and in “4D” as well! I think it could have been the favorite ride out of everybody in the family.&lt;/p&gt;
&lt;p&gt;Plus you can build droids now too!&lt;img src=&quot;@assets/images/posts/2014-09-1409632218_5.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Look sir, droids!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So thank you Disneyland, for providing a magic that lasts from grandparents to grandchildren, and I’m sure it will continue a lot longer. There are memories that will cherished and re-told for a long long time.&lt;img src=&quot;@assets/images/posts/2014-09-1409632221_6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Code Analysis The Hot Sauce Test</title><link>https://dillieo.me/posts/development/2014-08-22-code-analysis-the-hot-sauce-test/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-08-22-code-analysis-the-hot-sauce-test/</guid><description>Code Analysis The Hot Sauce Test</description><pubDate>Fri, 22 Aug 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Oftentimes I am called into a project that is adding new features to an existing application. While a lot of updates seem easy on the surface (I’m just adding a basic page that saves the user’s e-mail address), the underlying architecture of the system can make this rather complex. The shocking thing is that a lot of times the complexity isn’t immediatley discoverable. To help identify and estimate the work needed for a new feature, I’ve devised what I like to call “the hot sauce test.&quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To help identify the amount of work and potential complications in adding new features, I propose a scenario with the client:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let’s suppose we need to add a new field to the system. This field tracks one simple thing: the user’s favorite brand of hot sauce. How do we add this to your system?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Discussing the answer to this question then helps us cover a wide variety of issues:&lt;/p&gt;
&lt;h2&gt;Data Questions&lt;/h2&gt;
&lt;h3&gt;What’s the underlying data storage system?&lt;/h3&gt;
&lt;p&gt;There are SQL, NoSQL, Cloud based storage systems. Maybe the user is using a proprietary storage system for this kind of data. Knowing this allows you familiarize yourself with the technology or ask more questions about libraries or constraints.&lt;/p&gt;
&lt;h3&gt;What architecture are you using to access your data?&lt;/h3&gt;
&lt;p&gt;Are you using stored procedures, an ORM (object relational model), a WebAPI, or writing good old fasioned parameterized queries? I once worked on a project where the data was accessed through a home grown ORM, so adding a simple field to the system required updating a third party library that the application was dependent upon, as well as coding extra parameters into the data access layer code within the application itself. This process wasn’t immediately recognizable until I went in to update things for the first time.&lt;/p&gt;
&lt;h3&gt;Are there any constraints on your data model?&lt;/h3&gt;
&lt;p&gt;Some places require boolean type values to be char values instead with Y/N/Null as acceptble values. Some require integer for 1/0/Null values. Knowing this helps you in your middle tier/font end for processing radio buttons and other such items. Your &quot;hot sauce ids&quot; may wind up being some kind of encoded value based on the name and the index it appears in.&lt;/p&gt;
&lt;h3&gt;How are data structure changes made?&lt;/h3&gt;
&lt;p&gt;Do you use SQL scripts? Do you use a migration script built into your ORM? Do you have to send a request to a DBA to have the change made? This will affect time spent simply adding the field before you can build your code.&lt;/p&gt;
&lt;h3&gt;Will the user be “free forming” the data or will they have a fixed list to choose from?&lt;/h3&gt;
&lt;p&gt;This can lead to the need to create another table (see previous question).&lt;/p&gt;
&lt;h2&gt;Code Behind / Business Layer Questions&lt;/h2&gt;
&lt;h3&gt;What kind of access security does the system have?&lt;/h3&gt;
&lt;p&gt;User authentication would protect their hot sauce preference from being modified by just them, but user authorization on top of this could allow some users to be able to modify the list of hot sauces to choose from. It could also dictate if we need to build a &quot;hot sauce administration&quot; page to manage values.&lt;/p&gt;
&lt;h3&gt;Is the hot sauce preference required?&lt;/h3&gt;
&lt;p&gt;If so, we’ll need to make sure to do some additional data validation (both here and at the UI most likely) and if you let the preference be “free form” you might want to do some spell checking on it, or check for “white space”.&lt;/p&gt;
&lt;h3&gt;Once the update is in place, how do you deploy the site?&lt;/h3&gt;
&lt;p&gt;Is there a “git pull” type deployment, an, “XCopy Deployment”, or do we need to contact the server administrator to deploy the code? Do we make a backup of the existing system first? Do we have access to the server to debug any deployment problems?&lt;/p&gt;
&lt;h2&gt;UI / Display Questions&lt;/h2&gt;
&lt;h3&gt;Will the user be typing in their preference or selecting from a list?&lt;/h3&gt;
&lt;p&gt;This could have been answered previously, but depending on which way the discussion goes, you may ask this first, which would lead you to followup data questions.&lt;/p&gt;
&lt;h3&gt;Are you using any UI libraries?&lt;/h3&gt;
&lt;p&gt;jQuery UI, Zurb, Bootstrap, etc. This let’s you know if you have the UI elements you already need or if you potentially need to download an extension to an existing library.&lt;/p&gt;
&lt;h3&gt;Do you want an “dynamic” update or a “page refresh” update?&lt;/h3&gt;
&lt;p&gt;This helps you decide if you are going to use AJAX to update the details or a standard “post back”. This also might lead you to ask about a Web API or other method of updating the data&lt;/p&gt;
&lt;h3&gt;Are you using any MVC libraries?&lt;/h3&gt;
&lt;p&gt;AngularJS, KnockoutJS, Backbone, etc. If you wind up going with the “dynamic” update these libraries can potentially save some time, or cause more work to wire up all of the data points. 8^D&lt;/p&gt;
&lt;h2&gt;Come on! I just want to know the user’s favorite hot sauce!&lt;/h2&gt;
&lt;p&gt;As you can see, something as simple as a user preference can involve a lot of work depending on the architecture of the existing system. Hopefully this gives you an idea the next time you are adding features to a new system on what to watch out and plan for.&lt;/p&gt;
&lt;p&gt;Any key questions I’m missing here? I’d love to add them. Just let me know!&lt;/p&gt;
</content:encoded></item><item><title>How To Add A Windows Phone 8 Live Tile Using Angularjs</title><link>https://dillieo.me/posts/development/2014-08-19-how-to-add-a-windows-phone-8-live-tile-using-angularjs/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-08-19-how-to-add-a-windows-phone-8-live-tile-using-angularjs/</guid><description>How To Add A Windows Phone 8 Live Tile Using Angularjs</description><pubDate>Tue, 19 Aug 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I’ve started up &lt;a href=&quot;http://prayerjournal.apphb.com&quot;&gt;yet another pet project&lt;/a&gt; and wanted to start working with AngularJS. So far things have been great (another blog post to follow). One thing I like to do with my “web based apps” is use a well known trick for creating a windows phone live tile so I can pin them to my home screen.&lt;/p&gt;
&lt;p&gt;Doing this same thing using AngularJS is amazingly simple and needs only a slight modification. Here’s how you do it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Create the Tile&lt;/h2&gt;
&lt;p&gt;The first step is to create the tile image you want on your home screen. Typically you want this to be a 768x768 square PNG image with a transparent background, so that your theme’s color (or background in WP 8.1) can show through.&lt;/p&gt;
&lt;h2&gt;Add the Div&lt;/h2&gt;
&lt;p&gt;The next step is to create a div element at the bottom of your page (or home template) to display the live tile...&lt;/p&gt;
&lt;p&gt;You’ll notice here that we have the ng-show AngularJS directive in place. This simple element easily allows us to show and hide the screen with the tile. We update our controller to hide the div by default (your app and controller name can be whatever you like)...&lt;/p&gt;
&lt;h2&gt;Trigger the Display&lt;/h2&gt;
&lt;p&gt;Finally, all we do is create a link, button, image, etc. with the ng-click directive to show/hide the tile...&lt;/p&gt;
&lt;p&gt;That’s all there is to it!&lt;/p&gt;
&lt;h2&gt;Why all the work?&lt;/h2&gt;
&lt;p&gt;You may be wondering why you have to go to all this trouble in the first place? The way Windows Phone 8 works is that when you pin a web page to your start screen, Internet Explorer takes a snapshot of the page and creates a tile image using that. It grabs roughtly the top 768 pixels of the page. By creating this special overlay div with the icon we want, we “trick” the phone into using this for our live tile. I’m sure there will be better supported options down the road, but for now, this works just fine with not too much work. Hope this helps!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;Published using Desk&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Quick Tip Removing Old Files In Azure Containers</title><link>https://dillieo.me/posts/development/2014-07-02-quick-tip-removing-old-files-in-azure-containers/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-07-02-quick-tip-removing-old-files-in-azure-containers/</guid><description>Quick Tip Removing Old Files In Azure Containers</description><pubDate>Wed, 02 Jul 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been doing a lot of coding with Windows Azure as the hosted platform lately. I’ve really been impressed by the power and flexibility that is avaialable. One thing I recently did was create a tool that imports data from a mainframe system into our database using the new WebJobs feature available. This leverages the Azure storage containers to save the data files and logs for easy retrieval and prevents them from being removed.&lt;/p&gt;
&lt;p&gt;While Azure storage does provide automatic cleaning of it’s internal logs, it doesn’t provide a way to automatically clean out old files in your containers. Our containers were filling up pretty fast and the policy was to only retain records for 30 days. Fortunately, you can create a simple script (and save it as a WebJob) to keep your containers nice and tidy.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To remove your old files in a container, we need to make a simple query against the container against the last modified date property. I keep a “date threshold” configurable parameter so that I can adjust this value as needed without having to recompile. Make sure you use NuGet to import the WindowsAzure.Storage libraries and place the following code into your app.&lt;/p&gt;
&lt;p&gt;I created a simple console app with this script. Saved it as a WebJob, and uploaded it to our Azure instance to run daily. Having the console write statements generates information to the output log that I can use for debugging purposes.&lt;/p&gt;
&lt;p&gt;That’s all there is to it! Enjoy!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;…proudly published using DeskPM&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Worth Sharing Low Iodine Diet Lid Nachos</title><link>https://dillieo.me/posts/tips/2014-06-17-worth-sharing-low-iodine-diet-lid-nachos/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2014-06-17-worth-sharing-low-iodine-diet-lid-nachos/</guid><description>Worth Sharing Low Iodine Diet Lid Nachos</description><pubDate>Tue, 17 Jun 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week my wife started her LID (low iodine diet) and finding compatible foods with this diet can be tricky at times. No dairy, no fish, no salt (except for kosher) limits a lot of your options. Nachos are a staple in our house and I came up with a way to make them taste nearly as good as the real deal.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Ingredients&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Unsalted Tortilla Chips - Found at Trader Joe’s&lt;/li&gt;
&lt;li&gt;Unsalted Fire Roasted Tomato Salsa - Found at Trader Joe’s&lt;/li&gt;
&lt;li&gt;1 Pound Ground Turkey - Found at Trader Joe’s. It&apos;s pure turkey with a little rosemary and water. They have a “kosher white ground turkey” as well.&lt;/li&gt;
&lt;li&gt;Herdez Brand Yucatan Blend Frozen Vegetables (contains fire roasted corn, bell peppers, poblano peppers, and black beans)&lt;/li&gt;
&lt;li&gt;1 Medium onion, diced small&lt;/li&gt;
&lt;li&gt;4 Cloves garlic, diced small&lt;/li&gt;
&lt;li&gt;1 4oz. can diced green chilis - Safeway brand makes one with no salt, as well as “The Authentic New Mexican” brand that comes frozen in a larger tub. It might take a little searching, but you should be able to find some.&lt;/li&gt;
&lt;li&gt;1 Tbsp. grape seed oil (or whatever LID oil you like to use)&lt;/li&gt;
&lt;li&gt;2 Ripe avocados&lt;/li&gt;
&lt;li&gt;1/4 tsp. garlic powder&lt;/li&gt;
&lt;li&gt;1/4 tsp. onion powder&lt;/li&gt;
&lt;li&gt;A couple pinches of kosher salt&lt;/li&gt;
&lt;li&gt;A pinch of ground pepper.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Directions&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Put the oil into a large pan and heat over high heat.&lt;/li&gt;
&lt;li&gt;Once the pan is hot, add the onion and garlic.&lt;/li&gt;
&lt;li&gt;Saute the onion and garlic until the onion is transparent and starting to burn a little on the edges. Then add the green chilis.&lt;/li&gt;
&lt;li&gt;Saute for another minute or so until the onion and chilis start to burn just a little. It adds to that smoky taste at the end.&lt;/li&gt;
&lt;li&gt;Add the ground turkey, salt, and pepper. Break up the ground turkey and mix it well with the veggies. Reduce heat to medium and let the meat slowly brown, stirring occasionaly.&lt;/li&gt;
&lt;li&gt;While the meat is browning, add the Yucatan blend veggies into a pot and just barely cover with water. Heat until the veggies are no longer frozen, even slightly warm. There is no need to boil the water since they are already cooked. Take off the heat and drain.&lt;/li&gt;
&lt;li&gt;Cut the avocados open. Remove the seeds and add the “meat” of the avocado (not the skins) into a bowl. There are several tricks to this. I like to cut a criss cross pattern (horizonal and veritcal) with a paring knive, not piercing the skin, and then scoop out the insides with a spoon into a bowl.&lt;/li&gt;
&lt;li&gt;Mash the avocado well. Mix in garlic powder and onion powder.&lt;/li&gt;
&lt;li&gt;Add 1/3 to 1/2 of the cooled Yucatan veggies into the bowl. Mix well. You now have some delicious guacamole. Add a pinch of salt and some lemon/lime juice if desired to add a little tang to it. Set aside.&lt;/li&gt;
&lt;li&gt;Once the meat has been completely browned, remove from heat and drain any excess juice there may be left.&lt;/li&gt;
&lt;li&gt;Now assemble! I prefer a layered approach of chips, meat, salsa, chips, meat, salsa, yucatan veggies (there’s still half a pot left over!), and guacamole.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Naturally you can tweak this recipe to your liking. If you’re not keen on turkey, you can pick up Tyson frozen chicken breasts (the ones at Costco are 100% chicken, no salt added), cut them into strips or chunks, and cook them in the pan. If you don’t like avocados you can skip the guacamole.&lt;/p&gt;
&lt;p&gt;Between the meat, the salsa, and the beans and corn found in the veggies, you can have a hearty nacho plate and you won’t miss the cheese. Let me know if you find any other alternative to use.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;…proudly published using DeskPM&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Worth Sharing Low Iodine Diet Lid Bbq Sauce</title><link>https://dillieo.me/posts/tips/2014-06-16-worth-sharing-low-iodine-diet-lid-bbq-sauce/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2014-06-16-worth-sharing-low-iodine-diet-lid-bbq-sauce/</guid><description>Worth Sharing Low Iodine Diet Lid Bbq Sauce</description><pubDate>Mon, 16 Jun 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week my wife started her LID (low iodine diet) and finding compatible foods with this diet can be tricky at times. No dairy, no fish, no salt (except for kosher) limits a lot of your options. However, I was able to modify a BBQ sauce recipe of mine that went great on some pulled pork we had last night.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Ingredients&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2 c no salt ketchup (Heinz makes this, maybe others)&lt;/li&gt;
&lt;li&gt;1/4 c cider vinegar&lt;/li&gt;
&lt;li&gt;2 tbsp honey&lt;/li&gt;
&lt;li&gt;1 tbsp mustard (ground to a powder if you want)&lt;/li&gt;
&lt;li&gt;1/4 c brown sugar&lt;/li&gt;
&lt;li&gt;1 tsp kosher salt&lt;/li&gt;
&lt;li&gt;1 tsp garlic powder&lt;/li&gt;
&lt;li&gt;1 tsp onion powder&lt;/li&gt;
&lt;li&gt;1/4 tsp ground pepper&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Directions&lt;/h2&gt;
&lt;p&gt;Mix all ingredients together in a pot. Simmer on low heat for 20 to 30 minutes until well blended. Let cool and transfer to a jar. You can store this in the refrigerator. Hopfully this helps you out in your LID cooking endeavors. We’re excited to try it on other recipes as well!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;...proudly published using DeskPM&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Building A Data Import Tool With Azure Webjobs</title><link>https://dillieo.me/posts/development/2014-06-12-building-a-data-import-tool-with-azure-webjobs/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-06-12-building-a-data-import-tool-with-azure-webjobs/</guid><description>Building A Data Import Tool With Azure Webjobs</description><pubDate>Thu, 12 Jun 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/building-data-import-tool-azure-webjobs/&quot;&gt;Building a Data Import Tool with Azure WebJobs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I had a guest post over at my employer&apos;s blog about Azure WebJobs. Check it out!&lt;/p&gt;
</content:encoded></item><item><title>Introducing Trellodoro Trello Pomodoro Personal Kanban Bliss</title><link>https://dillieo.me/posts/development/2014-06-10-introducing-trellodoro-trello-pomodoro-personal-kanban-bliss/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-06-10-introducing-trellodoro-trello-pomodoro-personal-kanban-bliss/</guid><description>Introducing Trellodoro Trello Pomodoro Personal Kanban Bliss</description><pubDate>Tue, 10 Jun 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been on a quest to make the and the &lt;a href=&quot;http://pomodorotechnique.com/&quot;&gt;Pomodoro Technique&lt;/a&gt; work for my day to day programming needs. I&apos;ve tried &lt;a href=&quot;/kanned-tomatoes-a-kanban-pomodoro-way-of-getting-things-done&quot;&gt;not once&lt;/a&gt;, but &lt;a href=&quot;/kanned-tomatoes-an-update&quot;&gt;two times&lt;/a&gt; to make things work and I think I&apos;m finally making progres..&lt;/p&gt;
&lt;p&gt;Both times, I kept coming back to &lt;a href=&quot;http://trello.com/&quot;&gt;Trello&lt;/a&gt; as the place where I like to keep my personal kanban board. However, I didn&apos;t have a way to store my Pomodoro iterations on the cards without modifying descriptions, and losing a bit of time along the way.&lt;/p&gt;
&lt;p&gt;However, thanks to the Trello API, this can now be done easily through the use of Trello&apos;s &quot;stickers&quot; feature. One clock sticker indicates one &quot;pomodoro&quot; completed. I can easily update the cards from within my own timer and move on to the next.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;How it Works&lt;/h2&gt;
&lt;p&gt;The beauty is in the simplicity.&lt;/p&gt;
&lt;p&gt;First, connect to your Trello account. Then select a card that has been assigned to you that you want to work on.&lt;/p&gt;
&lt;p&gt;Then click the &quot;Go&quot; button.&lt;/p&gt;
&lt;p&gt;This will open up the timer. Then click the &quot;Start&quot; button. The timer will give you a 25 minute countdown and ring when time is up. It will immediately jump into a 5 minute break timer for you.&lt;img src=&quot;@assets/images/posts/2014-06-1402336998_2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once your break is up (or anytime really). Click the &quot;Pomodoro&quot; button. This will add a sticker to your card in Trello (it shows up almost immediately!). Each sticker is offset, so you can see how many pomodoros you&apos;ve completed.&lt;/p&gt;
&lt;p&gt;When you&apos;re ready to start on another task. Close the timer, select a new card from the drop down list, and click the &quot;Go&quot; button again!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://trellodoro.apphb.com/&quot;&gt;Now start that clock!&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Run Anywhere&lt;/h2&gt;
&lt;p&gt;Trellodoro is built using the amazing &lt;a href=&quot;http://foundation.zurb.com/&quot;&gt;Zurb Foundation&lt;/a&gt; framework. That means you can run Trellodoro on your &quot;small screen&quot;, tablet, or even phone and still see the updates on your Trello board.&lt;/p&gt;
&lt;h2&gt;Customization&lt;/h2&gt;
&lt;p&gt;Do you need a longer or shorter pomodoro period? Simply change the values in the &quot;Configure Pomodoro Timer&quot; section to meet your needs before clicking the &quot;Go&quot; button. If you reset your timer, it&apos;ll remember these values.&lt;/p&gt;
&lt;p&gt;Moving forward, I&apos;m looking to add some additional customziations depending on need. Maybe you want some different stickers? Random stickers? Custom stickers? I&apos;ll see what I can do. Check out the &lt;a href=&quot;https://trello.com/b/1UhfdPHs/trellodoro&quot;&gt;Trellodoro Trello Board&lt;/a&gt; and provide your feedback.&lt;/p&gt;
&lt;h2&gt;Feedback &amp;amp; Donations&lt;/h2&gt;
&lt;p&gt;Feeback is ALWAYS welcome and if you feel like donating to support me and the site, I won&apos;t shy away from that. See the &lt;a href=&quot;http://trellodoro.apphb.com/Home/Support&quot;&gt;support&lt;/a&gt; page for details.&lt;/p&gt;
&lt;h2&gt;Start that Clock!&lt;/h2&gt;
&lt;p&gt;So give &lt;a href=&quot;http://trellodoro.apphb.com&quot;&gt;Trellodoro&lt;/a&gt; a try! I think you’ll be pleasantly surprised!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;&lt;em&gt;...Proudly published using Desk PM&lt;/em&gt;&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Triple Fresh And Staying Strong</title><link>https://dillieo.me/posts/development/2014-06-02-triple-fresh-and-staying-strong/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-06-02-triple-fresh-and-staying-strong/</guid><description>Triple Fresh And Staying Strong</description><pubDate>Mon, 02 Jun 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been a banner year for &lt;a href=&quot;http://freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt; and I feel like I was just writing my two year followup and here we are at three years! We were we received an award as the &lt;a href=&quot;http://www.freshconsulting.com/psbj-fastest-growing-companies/&quot;&gt;6th fastest growing company&lt;/a&gt; in the Puget Sound Business Journal. We’ve expanded our core team by nearly a dozen people, and the amazing projects that we get to work on continues to increase. We also &lt;a href=&quot;http://www.freshconsulting.com/team-fresh-completes-ragnar-northwest-passage/&quot;&gt;ran 200 miles together&lt;/a&gt; at the Ragnar Northwest Passage (as well as again this year in a couple of months!). It’s been a whirlind time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Professionally it has been another amazing year. I realize that I haven’t blogged as much about the tips and tricks I’ve picked up along the way, but part of that has been that I’ve been so busy jumping from project to project that I haven’t put muy thoughts down on the matter. So much so I’ve “&lt;a href=&quot;/kanned-tomatoes-an-update&quot;&gt;re-applied&lt;/a&gt;” Kanban and Pomodoro to my “getting things done” activities with great success.&lt;/p&gt;
&lt;p&gt;Probably the “banner” of my previous year has been working with &lt;a href=&quot;http://azure.microsoft.com&quot;&gt;Microsoft Azure&lt;/a&gt;. We have built an infrastructure for a new client that is amazingly scalable and easy to deploy. We have an automated import job that receives data from their mainframe computer and loads it into our local database for viewing with lightning speed. We can scale up (or down) our resources as needed and there is no headache with managing servers or upgrades, or compatiblity issues. It all “just works”. The front end of the app is written using Twitter Bootstrap and DataTables.net, which gives the user powerful speed and flexibility with sorting a lot of data without lots of round trips to the database. All of this is only phase 1 of the project and we’re building new things for Phase 2 and Azure doesn’t even flinch.&lt;/p&gt;
&lt;p&gt;Another item just coming on the horizon is the use of &lt;a href=&quot;http://aws.amazon.com/cloudsearch/&quot;&gt;Amazon CloudSearch&lt;/a&gt; with the S3 bucket we’ve setup for a client. They have a huge document store they keep online and thanks to the abilities of CloudSearch we are going to be able to build an index of searchable information for these documents. The building and modification of these indexes is all done through simple REST calls, so there is no heavy library to load into the system or heavy syntax/formatting to try and work through. JSON and REST make for some beautiful tech.&lt;/p&gt;
&lt;p&gt;The last “tech item” of note has been the creative and developmental process of a new &lt;a href=&quot;http://halftale.com&quot;&gt;online sharing service&lt;/a&gt; I’ve had the privelege of working through. It’s a blend of Facebook and Google+ where you collaborate with family and friends on specific events in your life. There have been a lot of developmental iterations on it and figuring out just the right balance between security and openness, and managing that all in code has been a challenge that I’ve enjoyed.&lt;/p&gt;
&lt;p&gt;Ultimately I can only reiterate a lot of the things I said last year. I work in an environment where my ideas are respected (and relied upon), which you can’t always find in this profession. The amount of new and creative technologies that I get to work with is mind blowingly fun. I have the flexibility of working from home, which has been even more of a blessing this year as we’ve balanced out some family issues along the way. I’m one of those rare people in this day and age that get to work in their “dream job” and I can’t thank the Fresh team enough for that! I’m looking forward to another three-peat of Fresh goodness! Thank you Fresh!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;…proudly published using desk.pm&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Quick Tip How To Run Codeigniter On Php 55 And Mysql 56</title><link>https://dillieo.me/posts/development/2014-05-30-quick-tip-how-to-run-codeigniter-on-php-55-and-mysql-56/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-05-30-quick-tip-how-to-run-codeigniter-on-php-55-and-mysql-56/</guid><description>Quick Tip How To Run Codeigniter On Php 55 And Mysql 56</description><pubDate>Fri, 30 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This isn&apos;t a &quot;production endorsed&quot; solution, but it&apos;s something that can get you by in a pinch. After reformatting my MacBook Pro and installing PHP 5.5 and MySQL 5.6 on it, I found that an old CodeIgniter application I was supporting wouldn&apos;t run for me. After some error diagnosis (and code hacking) I was able to make things work by doing the following:&lt;/p&gt;
&lt;p&gt;1. Change your config/database.php file to use the &quot;mysqli&quot; database driver. The &quot;mysql&quot; one is for older versions and will call deprecated methods if used.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Rename and remap your &quot;Yield&quot; class. In PHP 5.5 there is is a new yield language construct, and that will interfere with the Yield class/method that CodeIgniter uses. To fix this:&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
&lt;li&gt;Modify your hooks/Yield_hook.php file and rename the class to &quot;Yield_hook&quot;&lt;/li&gt;
&lt;li&gt;In your config/hooks.php file, change the first hook mapping from class &quot;Yield&quot; to &quot;Yield_hook&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once you&apos;ve saved those files, you should be up and running.&lt;/p&gt;
</content:encoded></item><item><title>How To Add Zurb Foundation 5 To A Laravel 4 App</title><link>https://dillieo.me/posts/development/2014-05-29-how-to-add-zurb-foundation-5-to-a-laravel-4-app/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-05-29-how-to-add-zurb-foundation-5-to-a-laravel-4-app/</guid><description>How To Add Zurb Foundation 5 To A Laravel 4 App</description><pubDate>Thu, 29 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I needed to rebuild a simple &lt;a href=&quot;http://gametimer.roku-mart.com&quot;&gt;game timer app&lt;/a&gt; and figured it would be a great way to get my feet wet with &lt;a href=&quot;http://laravel.com&quot;&gt;Laravel&lt;/a&gt;. I’ve heard great things about it and wanted to give it a try. I also wanted to upgrade the application to use &lt;a href=&quot;http://foundation.zurb.com&quot;&gt;Zurb Foundation 5&lt;/a&gt;, since I already used 4 with the application and wanted to use the latest and greatest. Unfortunately, there aren’t any composer packages or ruby gems or other handy installers to get Zurb into my Laravel project. It turns out it isn’t as hard as you might think.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To add Zurb Foundation 5 to your Laravel 4 project, you simply need to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Follow the &lt;a href=&quot;http://laravel.com/docs/quick&quot;&gt;Laravel Quickstart&lt;/a&gt; to start a fresh application if you don’t have one already.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://foundation.zurb.com/develop/download.html&quot;&gt;Download&lt;/a&gt; Zurb Foundation 5 from their site. Note: Don’t install the Sass version. This may be a deal breaker for you, but not for me.&lt;/li&gt;
&lt;li&gt;Copy the css resources into the public/css folder in your Laravel project.&lt;/li&gt;
&lt;li&gt;Copy the javascript resources into the public/js folder in your Laravel project. This will wind up having a subfolder for foundation and vendor, but that is okay. All of the scripting paths are relative and can find things without a hassle.&lt;/li&gt;
&lt;li&gt;Edit your app/views/layout.blade.php file so that it looks something like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That’s all there is to it! You can see where there are yield statements for title, content, and custom script imports, as well as a basic top bar with navigation in place. You can customize this to your heart’s content.&lt;/p&gt;
&lt;p&gt;Enjoy Laravel 4 and Zurb Foundation 5 quick and easy!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;&lt;em&gt;...Proudly published using Desk PM&lt;/em&gt;&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Kanned Tomatoes An Update</title><link>https://dillieo.me/posts/development/2014-05-28-kanned-tomatoes-an-update/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-05-28-kanned-tomatoes-an-update/</guid><description>Kanned Tomatoes An Update</description><pubDate>Wed, 28 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Edit: I&apos;ve finally built a tool to integrate Trello and Pomodoro! Check out &lt;a href=&quot;/introducing-trellodoro-trello-pomodoro-personal-kanban-bliss&quot;&gt;Trellodoro&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A little over two years ago I wrote a post about using &lt;a href=&quot;/kanned-tomatoes-a-kanban-pomodoro-way-of-getting-things-done&quot;&gt;Kanban and Pomodoro&lt;/a&gt; as a way to boost productivity. Sadly the approach never stuck for myself. The kanban technique was alive and active (and still is), but for some reason I had a hard time making the pomodoro approach stick. Last week I decided to give it another run.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Last week things started to get a little crazy with work. I was working with two clients on three projects, all which involved heavy coding and database work. In addition, I was working with the team to do some bid projections for an upcoming project. With the constant influx of e-mail, and my propensity to immediately respond and change directions, I was losing productivity rapidly. Realizing that I needed to get a handle on things back, I decided to go back to that “tomato” again. This time with the commitment to really stick to the technique and not deviate. Unless there was an emergency in the e-mail, I’d wait until my break in order to respond to it.&lt;/p&gt;
&lt;p&gt;With that in mind, I went back to all of the old tools I had discovered to see if anything has changed:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://orkanizer.com&quot;&gt;Orkanizer&lt;/a&gt; - This one seems to have not changed since I last used it. It is still the same and functional, but extremely limited. It is just a timer to use.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rhapsodyapp.com&quot;&gt;Pomodoro Crate&lt;/a&gt; - The app has been rebranded to “RhapsodyApp” an dhas the same features as it has before. It is still very functional, and having project organization is quite helpful. However, I find the “setup” process to getting my tasks in, setting them as ones to do today, and then working with them to be a little inhibiting to my time management. I realize part of the Pomodoro technique itself is to take the time to prepare your work, but I’m heavily steeped in &lt;a href=&quot;http://personalkanban.com&quot;&gt;personal kanban&lt;/a&gt; by now so the layout is almost too different for me. I do like how a little dot appears in the tasks. It should be worth noting that the code for pomodoro crate is &lt;a href=&quot;http://https//github.com/adriansalceanu/pomodorocrate&quot;&gt;available on GitHub&lt;/a&gt; if you want for fork it, tweak on some Ruby code, and run it yourself.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://kanbanflow.com&quot;&gt;Kanban Flow&lt;/a&gt; - Out of all the apps, this seeems to be the one that has continued to grow. It has a kanban layout with a pomodoro timer at the bottom of the screen. Once you select it, you can tag which task you’re using (on the board) and it will update tasks as you go. Your card on your kanban board will have the time spent on the project, and I wouldn’t mind having simple pomodoro count dots there instead. Maybe that’s an option. It’s a very well designed app and I’m tempted to pick it up again, since there is a free to get 99% of the functionality out of it without ads. Data entry for tasks is still a little slow for me (I REALLY like the quick entry of task I can do through Trello) and I think using a drop down list, or a button on the card itself to start the pomodoro timer (instead of clicking the timer, clicking a button to select the associated task, and then selecting the card) would go a long way. I know, I’m picky, but I guess I have my routines by now. 8^D&lt;/p&gt;
&lt;p&gt;Anything New - It’s hard to find “new” pomodoro tools out there that are web based. Technology has come a long way in two years since I first wrote my article. Then you can type “pomodoro app” into a search engine and get the web apps out there, now you get mobile apps in your result. I’ve played with a couple of them as simple timers, but that’s what most of them are. If anybody has recommendations I’d love to hear it..&lt;/p&gt;
&lt;p&gt;So this leads me back to my original plan of &lt;a href=&quot;http://trello.com&quot;&gt;Trello&lt;/a&gt;. I’ve STILL been using Trello for my personal kanban board because of it’s amazingly simple and quick entry system. I can clone my boards, click into a list, and add my items. There are shortcut codes (like # for tagging and @ for assingment) that make entry as fast as typing “Do this task now! #b @s” which will create a new card that has my “bug” code tag on it and assign it to me (not that there is anybody else, but it’s good habit 8^D) and then I get running. From there I’ve found a simple Pomodoro Timer that runs in my task bar, has a few audio queues, and largely stays out of your way. I don’t think the developer is actively maintaining it anymore, so I’ll see about posting a copy of it (it’s for Mac, I wouldn’t mind a Win7/Win8 tool if you can recommend one).&lt;/p&gt;
&lt;p&gt;The final step is marking Pomodoros. I want to track my time spend on tasks but doing so in Trello required me to open the task and then modify the description, or modify the title, which was a little time consuming. I also couldn’t see the pomodoro count at a glance. That is until I decided to get a little silly (having kids does this to you 8^D) and I decided to go with… stickers!&lt;/p&gt;
&lt;p&gt;Trello has a quick “drag and drop” feature that allows you to add stickers to your cards for whatever reason you want. So I decided that what better way to track my pomodos than with a sticker. As I complete a pomodoro, I slap a digital sticker on my card and continue on. I can track my progress at a glance and have a little fun with it too. Trello folks, if you’re reading this, any way we could add a tomato sticker to the free set? 8^D&lt;/p&gt;
&lt;p&gt;So with a streamlined workflow and a lot of determination, I’ve been a lot more productive and a lot less “frazzle brained” due to the jumping across multiple projects. I can easily jump between projects if needs be during various pomodoros and as the e-mails pour in I can peek at the subject heading notification and if it doesn’t look like a “pomodoro stopper” I simply wait until my break (or a completely new pomodoro for interacting with clients/coworkers) to accomplish this. It has been a VERY successful experience.&lt;/p&gt;
&lt;p&gt;It has been so successful that we’ve tried it a little bit with our kids as they finish off the school year. They are participating in an online academy where there work either comes in the form of online assignments or worksheets to fill out. Some assignments are longer and instead of forcing them through a 45 minute assignment, we break it down to pomodoros. The five minute break in the middle of things seems to be enough to give them a break, but not completely remove their focus on the task at hand. School is almost out for summer, but we might revisit that next year.&lt;/p&gt;
&lt;p&gt;So I think that the kanban/pomodoro way to get things done is going to become some permanent (and well embraced) repitoire for my work habits. Have you had much success with it, or something else? I’d love to hear about it!&lt;/p&gt;
&lt;h6&gt;&lt;a href=&quot;http://desk.pm&quot;&gt;&lt;em&gt;...Proudly published using Desk PM&lt;/em&gt;&lt;/a&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Rebuilding Your Dev Environment Quick And Easy On Windows With Boxstarter</title><link>https://dillieo.me/posts/development/2014-05-20-rebuilding-your-dev-environment-quick-and-easy-on-windows-with-boxstarter/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-05-20-rebuilding-your-dev-environment-quick-and-easy-on-windows-with-boxstarter/</guid><description>Rebuilding Your Dev Environment Quick And Easy On Windows With Boxstarter</description><pubDate>Tue, 20 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: Have a Mac? You can do the same thing with &lt;a href=&quot;/rebuilding-your-dev-environment-quick-and-easy-on-osx-with-kitchenplan&quot;&gt;KitchenPlan&lt;/a&gt;...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After being completely enamored and giddy &lt;a href=&quot;/rebuilding-your-dev-environment-quick-and-easy-on-osx-with-kitchenplan&quot;&gt;with the discovery of KitchenPlan&lt;/a&gt; to automate my OSX rebuild, I started thinking, “Man, it would be truly amazing if I could do the same thing with my Windows VMs!” After a little bit of digging around, to my wonderful surprise there IS a tool that does the same thing thanks to &lt;a href=&quot;http://boxstarter.org&quot;&gt;Boxstarter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://boxstarter.org&quot;&gt;Boxstarter&lt;/a&gt; is a fabulous tool that automates the installation and configuration of apps on your machine. The authors of the tool say it far more eloquently:&lt;/p&gt;
&lt;p&gt;Repeatable, reboot resilient windows environment installations made easy using &lt;a href=&quot;http://chocolatey.org/&quot;&gt;Chocolatey&lt;/a&gt; packages. When its time to repave either bare metal or virtualized instances, locally or on a remote machine, Boxstarter can automate both trivial and highly complex installations. Compatible with all Windows versions from Windows 7/2008 R2 forward.&lt;/p&gt;
&lt;p&gt;As mentioned above, Boxstarter depends on Chocolatey, the “homebrew” of Winodws that has made life a lot easier for developers. Nearly everything you need out there for your dev environment exists now as a chocolatey package, which means you can install (and script) from Powershell. There are tons of packages available.&lt;/p&gt;
&lt;p&gt;Boxstarter comes in a small package, that allows you to easily expand upon. You can create custom packages based on your needs and even run them against Hyper-V and Azure VMs to really build out your infrastructure easily.&lt;/p&gt;
&lt;p&gt;The thing that impressed me most was the web installer that allows you to get up and running in moments.&lt;/p&gt;
&lt;p&gt;To start, you simply create your package file as a series of chocolatey config/install commands. You can even host this as a gist on GitHub. Here’s what mine looks looks like:&lt;/p&gt;
&lt;p&gt;Here you can see I have a couple quick config changes for the File Explorer, and then install by tools and browsers. The best part is at the end I have Visual Studio and SQL Server Express available for install as well.&lt;/p&gt;
&lt;p&gt;Once you create your gist, you want to click the “raw view” icon so that you get the URL of the gist file in question. Boxstarter provides a WebInstaller at the following URL&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://boxstarter.org/package
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You add your Gist file to the URL in the following manner:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://boxstarter.org/package/nr/url?https://gist.githubusercontent.com/Dillie-O/3451887b858e44e710f6/raw/e5ea225437587494215ef1f75433702c3ad5ff56/dillieo-boxstarter.config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Note: This will only work in Internet Explorer unless you have installed a “Click-Once” extension for Firefox/Chrome.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In the URL above, the “nr” option tells Boxstarter not to reboot the machine (since some packages want you to when it isn’t required. If you’re doing some large package or system update installs through this, it is recommended that you take the parameter off. If so, Boxstarter will prompt you for your password, verify it, then manage the restart/login/continue process of the package installs for you.&lt;/p&gt;
&lt;p&gt;Now sit back, relax, and enjoy! It took about an hour for my fresh Win8 dev environment to come online (not counting the OS install) and I let it run while brewing my coffee and enjoying a quiet morning. How amazing is that?! Give Boxstarter a try next time you’re setting up your development machine, you’ll love it!&lt;/p&gt;
&lt;h6&gt;&lt;em&gt;...Proudly published using &lt;a href=&quot;http://desk.pm&quot;&gt;Desk PM&lt;/a&gt;&lt;/em&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Rebuilding Your Dev Environment Quick And Easy On Osx With Kitchenplan</title><link>https://dillieo.me/posts/development/2014-05-19-rebuilding-your-dev-environment-quick-and-easy-on-osx-with-kitchenplan/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-05-19-rebuilding-your-dev-environment-quick-and-easy-on-osx-with-kitchenplan/</guid><description>Rebuilding Your Dev Environment Quick And Easy On Osx With Kitchenplan</description><pubDate>Mon, 19 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: Have a PC? You can do the same thing with &lt;a href=&quot;/rebuilding-your-dev-environment-quick-and-easy-on-windows-with-boxstarter&quot;&gt;BoxStarter&lt;/a&gt;...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This weekend I had one of those dreaded “rebuild your machine” weekends. It was my kids’ birthday too! While I like the “fresh smell” of a new machine, free of clutter and running fast, the time it takes to get everything in place makes it a little tedious. However, all of that changed when I stumbled upon a great little tool from an &lt;a href=&quot;http://vanderveer.be/setting-up-my-perfect-dev-environment-on-osx-10-9-using-chef-kitchenplan/&quot;&gt;old bookmarked post&lt;/a&gt; called &lt;a href=&quot;http://kitchenplan.github.io/kitchenplan/&quot;&gt;KitchenPlan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://kitchenplan.github.io/kitchenplan/&quot;&gt;KitchenPlan&lt;/a&gt; is a GREAT tool that helps automate the installation and configuration of your machine. Here’s how they describe it on their site:&lt;/p&gt;
&lt;p&gt;Kitchenplan is a small tool to fully automate the installation and configuration of an OSX workstation (or server for that matter) using Chef. But while doing so manually is not a trivial undertaking, Kitchenplan has abstracted away all the hard parts.&lt;/p&gt;
&lt;p&gt;After doing a fresh install of Mavericks on my MacBook Pro (thanks to &lt;a href=&quot;http://diskmakerx.com&quot;&gt;DiskMaker X&lt;/a&gt;), I simply fired up terminal prompt and ran the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gem install kitchenplan&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;After a few minutes, I had a copy of KitchenPlan installed locally from their repository.&lt;/p&gt;
&lt;p&gt;The next step was to run the setup tool and get a configuration file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;kitchenplan setup&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When prompted, I answered “No” that I didn’t have a repository with my configuration file (more on this later). KitchenPlan went ahead and created a few default configuration files for me within the /opt/kitchenplan/config folder.&lt;/p&gt;
&lt;p&gt;You can view my configuration files &lt;a href=&quot;https://github.com/Dillie-O/kitchenplan-config&quot;&gt;here&lt;/a&gt;, which are largely copied from the authors.&lt;/p&gt;
&lt;p&gt;From here, I simply opened up the configuration file and modified them. KitchenPlan uses .yml files that are easy to read and parse. In addition, it uses a default/group/person layout so that you can use KitchenPlan within an organization to designate rules/configurations at a larger scale. For example, all of your machines may have Sublime Text installed, but only your devs will need to get the latest version of php/mysql/postresql installed. In addition, you can update settings as well with the configuration file.&lt;/p&gt;
&lt;p&gt;Here’s an example of the “developer” configuration configuration file:&lt;/p&gt;
&lt;p&gt;This configuration puts a whole lot of development libraries on my machine, including latest versions of PHP/MySQL/PostgreSQL on my mache. NodeJS and a handful of typical applications (Grunt / Bower) that go with it are also installed. Notice how in addition to applications that are installed I can do handy things like set my terminal profile colors and display the full path to a folder in finder. There are lots of other things you can add to this configuration by checking out the KitchenPlan &lt;a href=&quot;https://github.com/kitchenplan/chef-osxdefaults&quot;&gt;configuration cookbook&lt;/a&gt; or &lt;a href=&quot;https://github.com/kitchenplan/chef-applications&quot;&gt;application cookbook&lt;/a&gt; sections. KitchenPlan supports even more than your basic “dev” tools. Apps like Adium and Spotify are also available for installation.&lt;/p&gt;
&lt;p&gt;Once your configuration is set, the final step is to simply run&lt;/p&gt;
&lt;p&gt;&lt;code&gt;kitchenplan provision&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You’ll be prompted for your admin password and KitchenPlan will be off cooking up your amazing new system! My system took about 30 minutes to 45 minutes to run (I don’t have an exact count) which is much better than the 3 to 4 hours it has taken me previously. Even better, the installation was unattended, so I could take care of more important things, like having fun with my family. Once KitchenPlan was complete, I went back in later that night and copied over some backup files and installed some other programs that weren’t in the cookbook (like Pomodoro, Office, etc.)&lt;/p&gt;
&lt;p&gt;One of the beautiful features about KitchenPlan is that is runs using popular and stable tools homebrew and chef to make everything work. This means that if you run into a few issues, you should be able to search online for solutions (though I never ran into anything). KitchenPlan is also “rerunnable” since homebrew checks to see if a given library has already been installed or not. The first couple of times I ran KitchenPlan, I had a copule of recipes in there that didn’t exist or were broken, which killed the process. After updating my config files, I simply reran “kitchenplan provision” and the process ran again. All previous items were flagged as “up to date” and moved on to the next. If you decide to add new items (or versions) to your configuration down the road, you can rerun the provisionn tool and everything will run without a hitch.&lt;/p&gt;
&lt;p&gt;This leads me to the mention of a repository that I moved passed earlier. If you keep your configuration files in a repository, KitchenPlan will simply download them and place them in the proper configuration location. By doing this, you can have a standard configuration in place, and then let the user modify their personal configuration for any final tools they may need before provisioning.&lt;/p&gt;
&lt;p&gt;Next time you need to rebuild your OSX machine (or plan our a global deployment plan), give KitchenPlan a try. I think you’ll be pleasantly surprised. I definitely was!!!!&lt;/p&gt;
&lt;h6&gt;&lt;em&gt;...Proudly published using &lt;a href=&quot;http://desk.pm&quot;&gt;Desk PM&lt;/a&gt;&lt;/em&gt;&lt;/h6&gt;
</content:encoded></item><item><title>How To Embed Full Page Iframes With Busting In Wordpress</title><link>https://dillieo.me/posts/development/2014-05-14-how-to-embed-full-page-iframes-with-busting-in-wordpress/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-05-14-how-to-embed-full-page-iframes-with-busting-in-wordpress/</guid><description>How To Embed Full Page Iframes With Busting In Wordpress</description><pubDate>Wed, 14 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes (at least I did) you need to embed a page (maybe even your own) in “full screen&quot; within your WordPress site. The problem is that by default, you’ll have the header, footer, and any widgets also embedded in the site. This can cause some layout nightmares. However, here’s a trick I have put togetether to render these kind of pages and keep your links working properly.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The best way to embed a page in your current one is through the use of an iFrame. By now you’ve probably seen them in action. They’re rather ubiquitous and easy to implement. As it’s core, it is as simple as:&lt;/p&gt;
&lt;p&gt;…and you will see it show up in your page.&lt;/p&gt;
&lt;p&gt;With WordPress, you can start a new page in your site, go to Text mode, insert the code above, and you’d be all set.&lt;/p&gt;
&lt;p&gt;However, at this point, you’ll see your header, footer, widgets, etc. on the page. We need a way to get rid of all of this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1: Create a “Content Only” Template&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thanks to the WordPress template stucture, this is an easy task. Open up your text editor of choice and paste in the following code:&lt;/p&gt;
&lt;p&gt;Save this file to whatever you like (I named mine page-contentonly.php) and upload it into the wp-content/themes/[theme] folder that you are currently using.&lt;/p&gt;
&lt;p&gt;Next, create a new page and paste the iFrame code listed above. Go over to the right hand side of the WordPress editor and find the drop down for your page templates. You can now select the “Content Only” page template.&lt;/p&gt;
&lt;p&gt;Now publish your page and give it a peek. Voila! Your iFrame page fills the entire screen (without the “double scrollbar issue”) and none of your header/footer/widget areas are in place.&lt;/p&gt;
&lt;p&gt;There’s one last step to this process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Create “iFrame busting” code&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The one downfall with the iFrame is that any links that you click, will load within the iFrame, which can cause issues with your URLs or other resources. To fix this, we add some simple JavaScript code to the end of your normal page templates. Depending on how your theme is setup, there may be a widget, a footer.php file, or some other page that contains your closing &amp;lt;/body&amp;gt; tag. Find this file/section and add the following code:&lt;/p&gt;
&lt;p&gt;The beauty about this little snippet is that it only runs when the page loaded is within an iFrame. It also will update all links and form elements with the proper target, so there is nothing used unless absolutely necessary.&lt;/p&gt;
&lt;p&gt;That’s it! Nest iFrames in your WordPress site without the headers/footers as needed!&lt;/p&gt;
&lt;h6&gt;&lt;em&gt;...Proudly published using &lt;a href=&quot;http://desk.pm&quot;&gt;Desk PM&lt;/a&gt;&lt;/em&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Happy Star Wars Day</title><link>https://dillieo.me/posts/growth/2014-05-04-happy-star-wars-day/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-05-04-happy-star-wars-day/</guid><description>Happy Star Wars Day</description><pubDate>Sun, 04 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;From our house to yours, wishing you a Happy Star Wars day!!!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;May the Fourth be with you!!!&lt;/em&gt;&lt;img src=&quot;@assets/images/posts/2014-05-1399215351_2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h6&gt;&lt;em&gt;...Proudly published using &lt;a href=&quot;http://desk.pm&quot;&gt;Desk PM&lt;/a&gt;&lt;/em&gt;&lt;/h6&gt;
</content:encoded></item><item><title>Quick Tip Creating Outlook Templates For Mac</title><link>https://dillieo.me/posts/growth/2014-04-30-quick-tip-creating-outlook-templates-for-mac/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-04-30-quick-tip-creating-outlook-templates-for-mac/</guid><description>Quick Tip Creating Outlook Templates For Mac</description><pubDate>Wed, 30 Apr 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a remote worker, I keep in touch with my colleagues by way of the “&lt;a href=&quot;/a-fresh-perspective-two-years-and-counting-as-a-remote-worker&quot;&gt;daily virtual standup&lt;/a&gt;”. This is a short and sweet e-mail that outlines &lt;em&gt;what I did yesterday&lt;/em&gt; and well as &lt;em&gt;what I’m going to do today&lt;/em&gt;. Oddly enough, Outlook for Mac &lt;strong&gt;does not&lt;/strong&gt; have a mail template that I could create to send these out faster! So here’s a quick trick I use as a workaround...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;You can make your own e-mail “templates” by simply hacking up a signature. Do the following:&lt;/p&gt;
&lt;p&gt;1. Start a new e-mail message. Enter the default text that you want.&lt;/p&gt;
&lt;p&gt;2. Hilight the entire message (or use CMD+A) and copy it to the clipboard.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the &lt;em&gt;Signatures&lt;/em&gt; button in the ribbon and select &lt;em&gt;Edit Signatures:&lt;/em&gt;&lt;img src=&quot;@assets/images/posts/2014-04-1398917480_2.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;4. Click the + button to add a new signature. Paste in your content, then click the “Untitled” section and rename your signature:&lt;img src=&quot;@assets/images/posts/2014-04-1398917482_3.png&quot; alt=&quot;&quot; /&gt; That’s it! Close the window and next time you create a new e-mail message, you can simply select the template from the signatures section and you’re all set!&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
&lt;h6&gt;&lt;em&gt;...Proudly published using &lt;a href=&quot;http://desk.pm&quot;&gt;Desk PM&lt;/a&gt;&lt;/em&gt;&lt;/h6&gt;
</content:encoded></item><item><title>2 Alternate Configurations For Windows Azure Deployment</title><link>https://dillieo.me/posts/development/2014-04-18-2-alternate-configurations-for-windows-azure-deployment/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-04-18-2-alternate-configurations-for-windows-azure-deployment/</guid><description>2 Alternate Configurations For Windows Azure Deployment</description><pubDate>Fri, 18 Apr 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/2-alternate-configurations-for-windows-azure-deployment/&quot;&gt;2 Alternate Configurations for Windows Azure Deployment&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have a guest post over at my company&apos;s blog outlining some of my Azure adventures. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>How To Redirect Your Domain Or Subdomain To Your Windows Azure Website</title><link>https://dillieo.me/posts/development/2014-03-31-how-to-redirect-your-domain-or-subdomain-to-your-windows-azure-website/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2014-03-31-how-to-redirect-your-domain-or-subdomain-to-your-windows-azure-website/</guid><description>Message Cube CNAME Example</description><pubDate>Mon, 31 Mar 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve become quite a fan of Windows Azure, through both a personal project and a project I&apos;m working on for a client. All the resources I need are at my fingertips, being able to do instant deployments from source control is a HUGE time saver, and the infrastructure is stable and scalable. One thing that was a little tricky at first was how to get my new subdomain to redirect to my Azure account, and here&apos;s how to make it happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;For those that are familiar with all of this, you need to first create a CNAME record that points your domain to awverify.azurewebsite.com and let that be verified by Azure. This may take a few hours depending on domain propagation. After that, create an A record for your domain to point to the IP address listed in the &quot;Manage Domains&quot; section of your website settings and set the domain name associated with it.&lt;/p&gt;
&lt;h3&gt;First Step: Verifying You Own the Domain&lt;/h3&gt;
&lt;p&gt;Before Azure will host your website under a domain name, it wants to verify you actually own the domain (or subdomain) name in question. To do this, we create a CNAME record for our domain in question that forwards to Azure&apos;s special &quot;verification&quot; domain of awverify.[yoursubdomain].azurewebsites.net. You need to make sure the redirect is for &quot;awverify&quot; on both ends. For example, you create a CNAME record that points:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;awverify.messagecube.cu.cc TO awverify.messagecube.azurewebsites.net
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For added assistance, I go ahead and create a CNAME redirect for my main domains as well&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;messagecube.cu.cc TO messagecube.azurewebsites.net
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your screen will vary based on your domain provider, but mine looks like this:&lt;/p&gt;
&lt;p&gt;You can verify that this is working when doing a ping on your &quot;awverify&quot; domain resolves to the IP addresses listed in your &quot;configure domain&quot; settings on your website. This may take minutes or hours depending on how your particular domain provider propagates their changes and for them to spread.&lt;img src=&quot;@assets/images/posts/2014-03-messagecube_ipaddress_sample.png&quot; alt=&quot;Message Cube IP Address Example&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Second Step: Creating the A Record Redirect&lt;/h3&gt;
&lt;p&gt;Once you&apos;ve verified that the CNAME record is propagating properly, now you can create an A record that will redirect the IP address of your domain to the Azure IP for your website (see screenshot above). The first step is to log in to your Azure website, go to the &quot;Configure&quot; section. Scroll down to the &quot;domain names&quot; section, and click the &quot;Manage Domains&quot; button. Type in the URL of your subdomain, and wait for the green checkbox to light up next to the domain name.&lt;img src=&quot;@assets/images/posts/2014-03-messagecube_domain_verify.png&quot; alt=&quot;Message Cube Domain Configuration.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then, go back to your domain provider, and add an A name record that points your subdomain to the IP address of your Azure site:&lt;img src=&quot;@assets/images/posts/2014-03-messagecube_aname_sample.png&quot; alt=&quot;Message Cube A Record Example&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s it! Again, depending on how long your domain provider propagates the settings, it may take a few minutes to a couple of hours to finalize.&lt;/p&gt;
&lt;h3&gt;Final Step: Check the redirect on the site.&lt;/h3&gt;
&lt;p&gt;Finally, open up your domain in the browser and make sure the redirects are working!&lt;img src=&quot;@assets/images/posts/2014-03-messagecube_final.png&quot; alt=&quot;Message Cube Redirect Sample&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There you have it! Hopefully this gets you past any tricky ends you may have run into redirecting your subdomains to Windows Azure websites. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Stand In The Rain</title><link>https://dillieo.me/posts/growth/2014-03-20-stand-in-the-rain/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2014-03-20-stand-in-the-rain/</guid><description>Stand In The Rain</description><pubDate>Thu, 20 Mar 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve always been kind of a &quot;glass is three quarters full&quot; kind of guy. It didn&apos;t matter how the circumstances were, I would move forward with an overabundance of hope to the resolution of a situation. A lot of times this involved squashing my personal feelings or thoughts on the situation. I&apos;d brush off the what&apos;s or the why&apos;s and simply focus on how to make it go away.&lt;/p&gt;
&lt;p&gt;I realize now that it also stifled a lot of opportunities to grow.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My second favorite verse in the Bible (maybe it&apos;ll become my favorite) is this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I have said these things to you, that in me you may have peace. In the world you will have tribulation. But take heart; I have overcome the world.” - (John 16:33 ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There&apos;s a few things that have jumped out at me (more profoundly than the first few times) that needed deeper reflection:&lt;/p&gt;
&lt;p&gt;First, note that Jesus himself (and by way of the trinity God himself) doesn&apos;t say you &lt;em&gt;may&lt;/em&gt; have trouble (as older translations say it) or that if &lt;em&gt;you are sinning&lt;/em&gt; you&apos;ll have trouble. No, he says that you &lt;strong&gt;will&lt;/strong&gt; have trouble. This is something that you simply need to accept and expect. Sometimes I think I try too much to avoid trouble that I stress myself out and inadvertently cause it. Tribulations will come. It&apos;s not necessarily due to anything I&apos;ve done, but they&apos;ll come. It&apos;s also not worth worrying about when the next &quot;shoe will drop&quot; because if it does, it&apos;ll happen in it&apos;s own due time. So what to do about it?&lt;/p&gt;
&lt;p&gt;Note what Jesus says next. He &lt;em&gt;doesn&apos;t&lt;/em&gt; say &quot;...but just blow it off, ignore it, pay no heed to it, I&apos;m in charge of things.&quot; Instead, he&apos;s says something more profound, he says to &lt;strong&gt;take heart&lt;/strong&gt;. This is far different. Yes, we do not let our troubles overwhelm us and take control of our focus. We are to retain our hope that the Lord of the universe is in charge and cares for us. However, this doesn&apos;t mean we simply brush off our troubles. We shouldn&apos;t try to find a quick fix (which might make things worse) and fail to learn or grow from them. These are the times to be refined through the process. We need to pause and listen during these times, to see what we need to learn and grow from.&lt;/p&gt;
&lt;p&gt;I&apos;m reminded of a song by one of my favorite bands called &quot;Stand in the Rain&quot;. The chorus of the song says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So stand in the rain Stand your ground Stand up when it&apos;s all crashing down You stand through the pain You won&apos;t drown And one day, whats lost can be found You stand in the rain&lt;/p&gt;
&lt;p&gt;~ Superchick&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We stand through our trials. Yes we get soaked. Yes it will feel miserable and confusing. In the end though, we make it through the rain. We stand and take heart that Jesus has overcome the world and can easily overcome anything in our life. We become stronger and wiser for it.&lt;/p&gt;
</content:encoded></item><item><title>2013 In Review</title><link>https://dillieo.me/posts/development/2013-12-31-2013-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-12-31-2013-in-review/</guid><description>2013 In Review</description><pubDate>Tue, 31 Dec 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As popular as I thought my Netgear post wound up being this year (due to the volume of comments) I still couldn&apos;t crack my old time top posts. An interesting year it has been!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The WordPress.com stats helper monkeys prepared a 2013 annual report for this blog.&lt;/p&gt;
&lt;p&gt;Here&apos;s an excerpt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Louvre Museum has 8.5 million visitors per year. This blog was viewed about &lt;strong&gt;110,000&lt;/strong&gt; times in 2013. If it were an exhibit at the Louvre Museum, it would take about 5 days for that many people to see it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;/annual-report&quot;&gt;Click here to see the complete report.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Picadillieo Best Of 2013</title><link>https://dillieo.me/posts/growth/2013-12-26-picadillieo-best-of-2013/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-12-26-picadillieo-best-of-2013/</guid><description>Picadillieo Best Of 2013</description><pubDate>Thu, 26 Dec 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been another year of random, and not so random, photos filed under &quot;L&quot; for life. Here are the ones I found to be my favorite, in no particular order, hosted on my &lt;a href=&quot;http://www.flickr.com/photos/dillieo/sets/72157639057436535&quot;&gt;Flickr site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;http://www.flickr.com/photos/dillieo/sets/72157639057436535&lt;/p&gt;
&lt;p&gt;Who knows what will be filed for 2014...&lt;/p&gt;
</content:encoded></item><item><title>Review Html5 Hacks</title><link>https://dillieo.me/posts/development/2013-12-20-review-html5-hacks/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-12-20-review-html5-hacks/</guid><description>Review Html5 Hacks</description><pubDate>Fri, 20 Dec 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;HTML5 is REALLY doing some great things for web developers. It has breathed new life in to web applications and with the advancements made in CSS3, it&apos;s feasible to build a full fledged application that runs without any installation for your users on their desktop, tablet, and mobile phone with minimal changes to you. I&apos;ll admit that I know quite a bit about HTML, but HTML5 was a new world for me in a lot of ways. Knowing the right code or &quot;hacks&quot; to make this work against all the different browsers is what &lt;em&gt;HTML5 Hacks&lt;/em&gt; by Jesse Cravens and Jeff Burtoft provides for developers new and experienced.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This book is structured to provide the overview/explanation of a concept (such as the dragging and dropping div elements), and then outline some &quot;hacks&quot; that can be used in your page to make things happen. What is really helpful is that the book also provides alternatives if you want to support older browsers when possible.&lt;/p&gt;
&lt;p&gt;The book starts out with the most fundamental element in HTML5, the doctype definition itself! While this seems trivial, it is actually very important and I learned some new things from reading this very first hack. From there the books goes through a variety of topics, not in any particular order. The next few topics cover more &quot;low level&quot; items like input data types and validation, DOM events, and microformats.&lt;/p&gt;
&lt;p&gt;While not technically a &quot;HTML&quot; topic, the book then goes into some of the new CSS3 features, like custom fonts, text manipulations, media queries, and even image sprites. I appreciated this section because some of these new features are part of what makes HTML5 so valuable and having a base knowledge of these hacks comes in handy.&lt;/p&gt;
&lt;p&gt;After this we delve into multimedia handling, both for audio and video. I&apos;m rather fond of the mediaelement.js library and was happy to see it referenced in here. There is a good amount of time spent on canvas and SVG. This is important because SVG has really become a first class citizen for most modern web development and it is still new to a lot of folks.&lt;/p&gt;
&lt;p&gt;The final sections of the book deal with more advanced topics and libraries. The WebStorage and FileSystem APIs were two things I had looked forward to during the preview for the HTML5 spec and was quite satisfied with the hacks the book provided. There are a few hacks for GeoLocation and the WebWorker as well. The book puts all of this together in the end through the use of Node.js and a few other popular libraries to really demonstrate what you can do with HTML5 without even touching a backend database or server!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;HTML5 Hacks&lt;/em&gt; is a fabulous book to get started and go deep with what HTML5 provides. Newcomers (such as myself) will be able to get introduced and comfortable with HTML5 quickly. Veterans will have a nice reference guide to work with, and maybe find some new tricks to use themselves.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://shop.oreilly.com/product/0636920026273.do&quot;&gt;http://shop.oreilly.com/product/0636920026273.do&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>As A Service Provides Developers A Cloud Paradise</title><link>https://dillieo.me/posts/development/2013-12-13-as-a-service-provides-developers-a-cloud-paradise/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-12-13-as-a-service-provides-developers-a-cloud-paradise/</guid><description>As A Service Provides Developers A Cloud Paradise</description><pubDate>Fri, 13 Dec 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/as-a-service-provides-developers-cloud-paradise/&quot;&gt;“As A Service” Provides Developers a Cloud Paradise&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been fortunate enough to have another &lt;a href=&quot;http://www.freshconsulting.com/as-a-service-provides-developers-cloud-paradise/&quot;&gt;blog post to be featured on my work blog&lt;/a&gt;. Now go have some coding fun this weekend!&lt;/p&gt;
</content:encoded></item><item><title>Bitcoin For The Newcomer Hobbyist And Poor Man</title><link>https://dillieo.me/posts/development/2013-11-21-bitcoin-for-the-newcomer-hobbyist-and-poor-man/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-11-21-bitcoin-for-the-newcomer-hobbyist-and-poor-man/</guid><description>BitCoin</description><pubDate>Thu, 21 Nov 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The world of bitcoin has intrigued me ever since I read an &lt;a href=&quot;http://www.wired.com/magazine/2011/11/mf_bitcoin/all/&quot;&gt;article in Wired magazine&lt;/a&gt; two years ago. The idea of a digital currency, built upon cryptography algorithms, and free of any centralized source, and the equally mysterious disappearance of its founder had me hooked. Its skyrocket in price (I almost bought a couple for $10 less than a year ago and now a recent spike has them at $600). Since then I&apos;ve followed the stories, the trends, and even made a few &quot;satoshis&quot; along the way. It&apos;s still a complex and crazy place for somebody wanting to start out, or even participate for purely a &quot;hobby&quot; manner (like me). In that regard I offer up an introduction and some resources that I hope will have you intrigued like me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;What is it?!&lt;/h2&gt;
&lt;p&gt;If you have the time, I highly recommend the &lt;a href=&quot;http://www.wired.com/magazine/2011/11/mf_bitcoin/all/&quot;&gt;Wired article&lt;/a&gt; I referenced to earlier. Even though it is a couple years old, it provides a great insight into the origins, implementation, and early years of bitcoin.&lt;/p&gt;
&lt;p&gt;If you don&apos;t have (or want) to read it, bitcoin is a digital currency. It exists purely through the network of computers that process the transactions involved with it. Since it uses highly encrypted algorithms and computations to process transactions, it prevents the system from being hacked. It also provides the method of how new bitcoins are created. Validating the transactions in the system results in additional bitcoins awarded to those that solve them. The system is setup so that only a fixed number of bitcoins will be released on a steady basis, so this creates value (due to scarcity) and regulation (there&apos;s no central bank) to everything.&lt;/p&gt;
&lt;p&gt;While you can spend hours pouring over the details of the system itself, the main benefits to bitcoin is that it is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Decentralized - There is no central bank regulating bitcoin prices. The entire network is handled through the &quot;blockchain&quot; that everybody participating has access to. All transactions are public, so they can be verified by any system and released to other members too.&lt;/li&gt;
&lt;li&gt;Anonymous - This is probably the most controversial aspect of bitcoin. Transactions are processed through accounts that are simply large hash addresses. This also adds privacy and security to your transactions.&lt;/li&gt;
&lt;li&gt;International - No need to compare euros to dollars to yen, to pesos. Bitcoin has started out as available to all since it exists in cyberspace.&lt;/li&gt;
&lt;li&gt;Divisible - While 1 BTC is worth roughly $600 (at the time of this writing), each bitcoin can be divisible up to 8 decimal places (called a satoshi) which allows for more flexibility and use in the long run.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What can do I do with them?&lt;/h2&gt;
&lt;p&gt;Sounds great! But what do I do with a bunch of bits floating around on my computer? For starters, the &lt;a href=&quot;https://www.bitcoinstore.com&quot;&gt;bitcoin store&lt;/a&gt; has a large selection of electronics and other items available to purchase with bitcoin. &lt;a href=&quot;http://bitcoincoffee.com&quot;&gt;Bitcoin Coffee&lt;/a&gt; and &lt;a href=&quot;http://pizzaforcoins.com&quot;&gt;PizzaForCoins&lt;/a&gt; also take payments via bitcoin. Some bigger companies, such as WordPress, Etsy, Reddit are also accepting bitcoin payment options as well. You can find a large list of vendors accepting bitcoin &lt;a href=&quot;https://bitpay.com/directory#/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&apos;re feeling more adventurous, there are a plethora of online casinos out there that are solely bitcoin based. In addition, there are several major bitcoin exchanges that allow you to buy and sell bitcoin like the stock market. These exchanges are the ones that help determine the value of bitcoin currently. The major players are &lt;a href=&quot;https://www.mtgox.com/&quot;&gt;Mt. Gox&lt;/a&gt;, &lt;a href=&quot;https://btc-e.com/&quot;&gt;BTC-e&lt;/a&gt;, &lt;a href=&quot;https://www.bitstamp.net/&quot;&gt;Bitstamp&lt;/a&gt;, and &lt;a href=&quot;https://www.btcchina.com/&quot;&gt;BTC China&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;How do I get bitcoins?&lt;/h2&gt;
&lt;p&gt;To get bitcoins, you first need a wallet to store them in. The wallet is the large hash name that is used for the transactions and are arbitrary in name. One of the best places to get a wallet is &lt;a href=&quot;https://coinbase.com/?r=50ab998849d7298f1900018c&amp;amp;utm_campaign=user-referral&amp;amp;src=referral-link&quot;&gt;Coinbase&lt;/a&gt;. They offer a secure wallet with two factor verification and the easiest way (in the US) to purchase bitcoins. If you&apos;re not in the US, or are looking for alternatives, &lt;a href=&quot;https://blockchain.info/wallet&quot;&gt;blockchain.info&lt;/a&gt; is your next best bet.&lt;/p&gt;
&lt;p&gt;Once you have a wallet, the next thing to do is fill it.&lt;/p&gt;
&lt;h3&gt;Buy Bitcoins&lt;/h3&gt;
&lt;p&gt;The easiest way is to simply buy bitcoins at the market rate. &lt;a href=&quot;https://coinbase.com/?r=50ab998849d7298f1900018c&amp;amp;utm_campaign=user-referral&amp;amp;src=referral-link&quot;&gt;Coinbase&lt;/a&gt; (as mentioned above) provides the easiest way to purchase bitcoins, since you link your bank account right to your wallet. However, you&apos;re limited to only US accounts for this. Another popular way to buy bitcoins is through service called &lt;a href=&quot;https://localbitcoins.com/&quot;&gt;Local Bitcoins&lt;/a&gt;. It serves as a matching service between those that are buying and selling bitcoins in your local area. You make the final arrangements directly with the other person, wherever/whenever you want.&lt;/p&gt;
&lt;h3&gt;Earn Bitcoins&lt;/h3&gt;
&lt;p&gt;Another approach is to visit what is known as a &quot;bitcoin faucet&quot;. These sites take your wallet Id and award you a small amount of satoshis after filling out a captcha or other code. A really great site I discovered recently is called &quot;&lt;a href=&quot;http://www.landofbitcoin.com/?r=GD160a0zhT24n5Vy&quot;&gt;Land of Bitcoin&lt;/a&gt;&quot;. It keeps an archive of all of the faucets and provides you an easy way to navigate each site and get your satoshis. One thing to note is that the faucet sites provide a tiny amount of bitcoin, and often require you to accumulate a small amount before they will cash out to your wallet. Be prepared to spend a lot of time (or TV commercials at night) typing in your wallet address before you can work with it.&lt;/p&gt;
&lt;h3&gt;Mine Bitcoins&lt;/h3&gt;
&lt;p&gt;The traditional way to earn bitcoins is to mine them. Mining involves using your compeer to solve the complex cryptography equations that is used to verify transactions. There are lots of &lt;a href=&quot;https://en.bitcoin.it/wiki/Software&quot;&gt;mining programs&lt;/a&gt; out there that will do this for you. With such a large amount of computers (and companies now) mining, doing solo mining will yield minimal profits. Instead, contributing your machine to a &lt;a href=&quot;https://en.bitcoin.it/wiki/Mining_Pool&quot;&gt;mining pool&lt;/a&gt; is the way to go. You participate in part of a group to solve the block chain and get a split of the profits. One particular site, &lt;a href=&quot;https://bitminter.com/&quot;&gt;bitminter&lt;/a&gt;, has their own mining program that will get you up and running easily. This was the only program I could quickly and easily get running on my MacBook Pro.&lt;/p&gt;
&lt;p&gt;In the past, bitcoin mining was done by taking advantage of the graphics cards built into computers. A person could build a mining rig using a desktop computer that help multiple slots for video cards. As the race to be the first one to &quot;win&quot; the mining bonus gets ever tighter, the mining rigs have gotten bigger and more optimized. The recent release of &quot;ASIC Miners&quot; have rendered mining based on graphics cards pointless. ASIC mining rigs start at $300 and go up sky high from there and require a fair amount of power.&lt;/p&gt;
&lt;p&gt;A cheaper approach is to do &quot;cloud mining&quot; by purchasing a share of the ASIC mining pools provided by &lt;a href=&quot;https://cex.io/r/1/DillieO/0/&quot;&gt;CEX.io&lt;/a&gt;. You purchase some mining power and it is immediately tossed into the pool. You get a share of the profits (like a standard mining pool) and they take a little extra for maintenance fees. That way you don&apos;t have to have your computer running all the time and you can still make some bitcoin.&lt;/p&gt;
&lt;h3&gt;How do you make your bitcoins?&lt;/h3&gt;
&lt;p&gt;For me, I tried mining bitcoin on one of my extra computers that I had that were several years old. I soon realized that my video card was too old and the CPU was too slow. Similarly, running the mining software on my work computer didn&apos;t work because it wasn&apos;t a process that you could simply run in the background. So I turned to faucets. I&apos;ve done a lot of digging to find faucets that allowed me to quickly add to my faucet during nights and free time. Two of my favorites are &lt;a href=&quot;http://www.bitvisitor.com/?ref=1FatYQNytoNF9L1adFuuWnxyz9WxEeoHW2&quot;&gt;BitVisitor&lt;/a&gt; and &lt;a href=&quot;http://dailybitcoins.org/index.php?aff=0fbc30219d63da01ca2985ca3df57fc3&quot;&gt;DailyBitcoins&lt;/a&gt;. Outside of them, I frequently go through &lt;a href=&quot;http://www.landofbitcoin.com/?r=GD160a0zhT24n5Vy&quot;&gt;Land of Bitcoin&lt;/a&gt; since it keeps all of the faucets readily available. This took me a quite a while to amass some bitcoins (still far less than 1 8^D). Once I did, I purchased some &quot;cloud mining&quot; through &lt;a href=&quot;https://cex.io/r/1/DillieO/0/&quot;&gt;CEX.io&lt;/a&gt; so that I could get some coins while I slept. I&apos;m hoping to continue this process a bit more and eventually just stick with cloud mining and potentially a bit of exchange trading once I get enough bitcoin. I&apos;ll never be rich, but I&apos;ll get to participate in the economy, which is my ultimate goal.&lt;/p&gt;
&lt;h2&gt;Keep your money safe!&lt;/h2&gt;
&lt;p&gt;Now that you&apos;re starting to make some digital money, here are a few tips to keep your money safe.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Keep multiple wallets - Having too much bitcoin in a single wallet can lead to disaster if a hacker gets into it, or you simply forget the wallet address (it is this really long hash code after all). Keep multiple wallets (even on multiple sites) each with a smaller amount of bitcoin so it all doesn&apos;t disappear.&lt;/li&gt;
&lt;li&gt;Keep an offline wallet - Yes, that&apos;s right! Since the bitcoin is essentially one huge ledger, you can keep a copy of your bitcoin offline so that hackers can&apos;t get to it. You can even create a &quot;paper wallet&quot; which isn&apos;t quite as secure, but it easier to maintain. Details can be found &lt;a href=&quot;https://en.bitcoin.it/wiki/How_to_set_up_a_secure_offline_savings_wallet&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Keep your wallet addresses somewhere safe. Again, these cryptographic names are confusing and not easy to remember. Make sure you have a copy of the address itself somewhere you can access it, even if it&apos;s a piece of paper in your wallet. There are plenty of horror stories out there of those losing lots of money.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Now get out there!&lt;/h2&gt;
&lt;p&gt;Hopefully this has given you a good overview and some details on how you can get involved with bitcoin. Am I staking my life on it? No, not by far. Does it have potential? I think it has a LOT of potential. Ultimately though, I think it is an amazing experiment in what the future might hold and having a small piece of it makes for great conversation and a bit of fun. Hopefully you will get interested in it too.&lt;/p&gt;
&lt;p&gt;Questions or comments? Leave them here and I&apos;ll do my best to answer. Like what you read? Consider &lt;a href=&quot;https://coinbase.com/checkouts/1e996c3be84f9d229dac36e2cce2e69f&quot;&gt;leaving a small tip&lt;/a&gt; as a thank you, in bitcoin, naturally 8^D.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Getting Apache Up And Running After Updating To Osx Mavericks 109</title><link>https://dillieo.me/posts/development/2013-10-23-quick-tip-getting-apache-up-and-running-after-updating-to-osx-mavericks-109/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-10-23-quick-tip-getting-apache-up-and-running-after-updating-to-osx-mavericks-109/</guid><description>Quick Tip</description><pubDate>Wed, 23 Oct 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you&apos;ve taken the plunge and are now running the latest and greatest OSX Mavericks. You&apos;ve hit one snag though. All of your local websites that you&apos;ve built and run through apache are simply returning an &quot;It Works!&quot; page. Don&apos;t Fret! When OSX updated itself, it updated it&apos;s Apache install, essentially overwriting your /private/etc/apache2/httpd.conf file. However, before doing this, it created a backup of this file and named it https.conf.pre-update.&lt;/p&gt;
&lt;p&gt;Simply pull up your favorite Diff tool (I really like &lt;a href=&quot;http://www.sourcegear.com/diffmerge/&quot;&gt;DiffMerge&lt;/a&gt; from &lt;a href=&quot;http://www.sourcegear.com&quot;&gt;SourceGear&lt;/a&gt;), find the differences, and apply the changes. For me it simply meant re-enabling virtual hosts and PHP5. Restart apache when you&apos;re done and you&apos;re good to go!&lt;/p&gt;
&lt;p&gt;Note: If you don&apos;t have a httpd.conf.pre-update file, or it seems to not have the right values, check for a https.conf~previous file. I had one named that which included my homebrew modifications that were made.&lt;/p&gt;
</content:encoded></item><item><title>Exceptional In Ordinary Things</title><link>https://dillieo.me/posts/growth/2013-10-21-exceptional-in-ordinary-things/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-10-21-exceptional-in-ordinary-things/</guid><description>Exceptional In Ordinary Things</description><pubDate>Mon, 21 Oct 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Discipleship is built entirely on the supernatural grace of God. Walking on water is easy to someone with impulsive boldness, but walking on dry land as a disciple of Jesus Christ is something altogether different. Peter walked on the water to go to Jesus, but he “followed Him at a distance” on dry land (Mark 14:54). We do not need the grace of God to withstand crises—human nature and pride are sufficient for us to face the stress and strain magnificently. But it does require the supernatural grace of God to live twenty-four hours of every day as a saint, going through drudgery, and living an ordinary, unnoticed, and ignored existence as a disciple of Jesus. It is ingrained in us that we have to do exceptional things for God—but we do not. We have to be exceptional in the ordinary things of life, and holy on the ordinary streets, among ordinary people—and this is not learned in five minutes.&lt;/p&gt;
&lt;p&gt;~ Oswald Chambers&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>The Dance Chapel Halloween</title><link>https://dillieo.me/posts/development/2013-10-16-the-dance-chapel-halloween/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-10-16-the-dance-chapel-halloween/</guid><description>The Dance Chapel Halloween</description><pubDate>Wed, 16 Oct 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Always a fun jam from the Dance Chapel crew! Go give it a listen!&lt;/p&gt;
&lt;p&gt;Always a fun jam from the Dance Chapel crew! Go give it a listen!&lt;/p&gt;
</content:encoded></item><item><title>Bienvenue Again Picadillieo</title><link>https://dillieo.me/posts/growth/2013-10-08-bienvenue-again-picadillieo/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-10-08-bienvenue-again-picadillieo/</guid><description>Bienvenue Again Picadillieo</description><pubDate>Tue, 08 Oct 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, after some more soul searching, theme browsing, and general fall-clean-up-ishness, I&apos;ve &quot;reopened&quot; by &lt;a href=&quot;http://picadillieo.wordpress.com&quot;&gt;photo blog&lt;/a&gt; and migrated everything back over there. I love the &quot;tiled&quot; layout that I can display here and it just seems better to have all of the pics in one spot.&lt;/p&gt;
&lt;p&gt;Articles, reviews, quotes, links, and general pensee will still remain here.&lt;/p&gt;
&lt;p&gt;So go check it out and update your RSS feeds if you need to. Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://picadillieo.wordpress.com&quot;&gt;http://picadillieo.wordpress.com&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Atomic Commits</title><link>https://dillieo.me/posts/development/2013-10-04-atomic-commits/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-10-04-atomic-commits/</guid><description>Atomic Commits</description><pubDate>Fri, 04 Oct 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/atomic-commits/&quot;&gt;http://www.freshconsulting.com/atomic-commits/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I had a guest post today over at my companies blog about source control commits. Something we all need to check in on from time to time.&lt;/p&gt;
</content:encoded></item><item><title>Living And Life</title><link>https://dillieo.me/posts/growth/2013-09-12-living-and-life/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-09-12-living-and-life/</guid><description>Living And Life</description><pubDate>Thu, 12 Sep 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Never get so busy making a living that you forget to make a life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;~ Keith Jowers (&lt;a href=&quot;https://twitter.com/dads4life&quot;&gt;@dads4life&lt;/a&gt;)&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Debug Php Scripts From The Command Line Using Phpstorm 6</title><link>https://dillieo.me/posts/development/2013-09-09-quick-tip-debug-php-scripts-from-the-command-line-using-phpstorm-6/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-09-09-quick-tip-debug-php-scripts-from-the-command-line-using-phpstorm-6/</guid><description>Quick Tip</description><pubDate>Mon, 09 Sep 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m a big fan of &lt;a href=&quot;http://www.jetbrains.com/phpstorm/&quot;&gt;PHPStorm&lt;/a&gt;. It has made my PHP development life so much easier, especially with debugging. I&apos;ve been trying to debug a PHP script from the command line (to diagnose a cron job that runs on our server) and here&apos;s how you can do it using PHP Storm.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This tip assumes that you already have PHP Storm running and debugging is successfully working. If you don&apos;t, check out &lt;a href=&quot;https://www.jetbrains.com/phpstorm/webhelp/debugging-with-a-php-web-application-debug-configuration.html&quot;&gt;this article&lt;/a&gt; on how you can get things setup.&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The first thing to do is to start up your site to debug as usual. Click the icon or hit Ctrl+D (or ^D for Mac users) to launch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The next step is to grab the &quot;idekey&quot; used by PHPStorm when it launched the debugger and add this to your CLI path environment. To do this, simply execute the following:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;export XDEBUG_CONFIG=&quot;idekey=session_name&quot;&lt;/code&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Finally, execute your PHP statement from the command prompt in your project directory. You should hit the proper breakpoints if you have them set.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&apos;s it! I can&apos;t believe it took me this long to piece it together!&lt;/p&gt;
</content:encoded></item><item><title>Review Enders Game By Orson Scott Card</title><link>https://dillieo.me/posts/development/2013-09-04-review-enders-game-by-orson-scott-card/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-09-04-review-enders-game-by-orson-scott-card/</guid><description>Enders Game Cover</description><pubDate>Wed, 04 Sep 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You&apos;d think being a geek such as myself that I would have already read Ender&apos;s game a long time ago. Sadly I hadn&apos;t. My wife read it about a year or so back and absolutely loved it, so I had a mental note to do so. After seeing the movie trailer a couple of times for the upcoming movie, I realized now was the time to give this book a read, and holy cow was it worth it! (Spoiler Free Zone Ahead)&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;In the future, Earth has been attacked twice by an alien race, known as the &apos;Buggers&apos;. The second invasion nearly wiped out the entire planet, until an unknown hero by the name of Mazer Rackham came and and wiped out the Bugger invasion, saving the human race. However, it has been anticipated that a third invasion will come, and if the human race can&apos;t figure something out, they will be annihilated.&lt;/p&gt;
&lt;p&gt;Ender&apos;s Game follows the story of a young child named Andrew &quot;Ender&quot; Wiggin. He&apos;s a boy genius (to put it mildly) who is monitored and then recruited to join the International Fleet to become one of the elite commanders of the fleet. Ender is immediately isolated from the rest of his fellow soldiers (it&apos;s so difficult to say that at age 6!) due to his intelligence and ability to analyze a combat situation. When he begins battle training games, he proves himself even more adept as he takes unusual approaches to combat and doesn&apos;t simply win, he destroys his opponents so there is no way they can come back . Some of these techniques wind up being used in his personal life as well.&lt;/p&gt;
&lt;p&gt;Ender&apos;s obstacles continue every step of the way. The rules and frequencies of battles change at a brutal pace. Some rules are broken right before the battle starts, to challenge Ender even further. This continues as Ender graduates from battle school to command school. Here the training is more difficult, the simulations are even more challenging, and now Ender is in command of others and must maintain their trust and support.&lt;/p&gt;
&lt;p&gt;In addition to all of this, there is a lot of personal turmoil going on inside of Ender&apos;s head. I have to continually remind myself that at the beginning of this book he&apos;s merely 6 years old (my daughters are 7) and by the end he&apos;s only 10 years old with the weight of the planet on his soldiers. Ender has been an outcast of sorts, even being at the top of his game. He continually struggles with this, and some of this is reflected through an online game that Ender interacts with during his time in battle school. In addition, Ender knows the military wants him for something big, really big. He&apos;s just not sure if he wants a part of this or not. We are privy to some of this knowledge throughout the book, but some of the biggest surprises and twists come at the end of the book, which I won&apos;t reveal here. Go and read it already!&lt;/p&gt;
&lt;p&gt;This book is an face paced and easy read. While to some degree there is a lot of &quot;science&quot; involved with the story (space stations, alien races, space travel, futuristic weapons, etc.), most of this is assumed over to focus more on the story aspect of Ender and his challenges, which I enjoyed. It&apos;s the issues that this book raises that will keep you thinking and thinking long after the book is done (it&apos;s been going through my head for 3 days now).&lt;/p&gt;
&lt;p&gt;For starters, look what they&apos;re doing to a 6 year old child! Yes he is gifted, but does that truly justify what is going on? Training is bad enough, but the extremes they are pushing Ender make it even rougher. There are a few discussions through the book by the military authorities about exactly what is going on, and I&apos;ll let you decide whether or not they are valid, and if those involved are willing to accept the repercussions. The surprising amount of emotion and thought that Ender possesses is really fascinating. He has some rather in depth conversations and insights with himself as he processes all of this and I wonder if some of this depth is what goes through the minds of my twin 7 year old daughters on a day to day basis.&lt;/p&gt;
&lt;p&gt;What about these &quot;Buggers&quot;? We&apos;re told about a lot about what they did, and there is a lot of fear about what they will come to do, but not a lot of signs indicating that they are on their way. Why rush so hastily into this? Why did they attack us in the first place? Lots of things that are questioned along the way, and answered in part, but you keep wondering about them.&lt;/p&gt;
&lt;p&gt;Ender&apos;s Game also provides a small aside into international politics and the power of the pseudo-anonymous voice. Peter and Valentine, Ender&apos;s brilliant brother and sister, become opposing voices in the online public discourse. Since this area is typically reserved for adults, they have to disguise themselves behind false names. However, their thoughts and commentary about world politics intrigue and grip the population at large, playing on a lot of common emotions and thoughts out there. The results are quite surprising.&lt;/p&gt;
&lt;p&gt;In short, you should go and read this book. It provides a great universe in which to explore some interesting ideas. It frames itself well within a fast paced story with the human race at stake. I read this book over the course of a weekend, and I&apos;m typically a slow reader. I&apos;m equally excited for the movie that is coming out, because the cast lined up for the major parts looks amazing. As with previous reviews (see &lt;a href=&quot;/review-the-hunger-games-movie&quot;&gt;Hunger Games&lt;/a&gt;) I&apos;m curious to see how well the movie will map over, since a lot of what goes on in the book is internal processing. I&apos;m also eager to read &quot;Ender&apos;s Shadow&quot;, which is a parallel telling of the story from the viewpoint of Bean, a fellow student and prominent character in the book.&lt;/p&gt;
</content:encoded></item><item><title>Vision And Action</title><link>https://dillieo.me/posts/growth/2013-08-28-vision-and-action/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-08-28-vision-and-action/</guid><description>Vision And Action</description><pubDate>Wed, 28 Aug 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Vision without action is a daydream.&lt;/p&gt;
&lt;p&gt;Action without vision is a nightmare.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Review Windows Powershell Cookbook 3Rd Edition</title><link>https://dillieo.me/posts/development/2013-08-26-review-windows-powershell-cookbook-3rd-edition/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-08-26-review-windows-powershell-cookbook-3rd-edition/</guid><description>PowerShell Cookbook</description><pubDate>Mon, 26 Aug 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve become an increasing fan of Windows PowerShell. It&apos;s additional use of variables, scripts, and libraries opens up doors to some powerful scripting options that I need. I&apos;m working on creating some deployment scripts for web applications I maintain across various web servers, and simple batch files wouldn&apos;t fit the bill. Having worked a little bit with PowerShell, I really needed something that would provide a reference guide for all the tasks I wanted to accomplish. I also needed to learn a bit more about the fundamental concepts and features of PowerShell itself. &lt;em&gt;Windows PowerShell Cookbook, 3rd Edition&lt;/em&gt; by Lee Holmes provides that provides the examples and reference guide necessary for nearly all of my PowerShell needs.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Like most &quot;cookbook&quot; style O&apos;Reilly books, the first chapter of the book provides an brief overview of Windows PowerShell. It outlines the core concepts of structured commands (also known as cmdlets) and how you can use deep object integration (you can grab the entire notepad application process as a variable) with PowerShell. Other topics like ad-hoc scripting (chaining PowerShell commands at the command prompt) are also covered as well.&lt;/p&gt;
&lt;p&gt;From there, the book expands to cover specific tasks and the PowerShell code to execute them. Each task (or recipe) provides a top level explanation, execution examples (and sometimes expected output), and the full code itself. This allows you to easily copy and paste (code is available online) these scripts and add them as your own for your work.&lt;/p&gt;
&lt;p&gt;What&apos;s really nice is that the recipes progress in complexity as well as give you some &quot;cooking directions&quot; about what is happening. While the first couple of chapters give you recipes dealing with the fundamentals, the subsequent chapters deal with pipelines (taking the results of one command and sending it to another), variables, looping, and so on. That way complete beginners (such as myself) can build their knowledge of of PowerShell without feeling completely lost.&lt;/p&gt;
&lt;p&gt;By the end of the book, you will have recipes for Internet enabled scripts (pushing files to a remote server), creating zip archives, and working with user input to help dictate the names of files/folders that are to be modified. All of this is exactly what I need to create my deployment scripts for my sites.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Windows PowerShell Cookbook, 3rd Edition&lt;/em&gt; is an essential book to any programmer. It is structured in a way that beginners can read through the book and build up their skills along the way. Veteran developers can use it as a handy reference guide, complete with fully functional samples. It is a must have book for anybody working with Windows PowerShell.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://shop.oreilly.com/product/0636920024132.do&quot;&gt;http://shop.oreilly.com/product/0636920024132.do**.**&lt;/a&gt;&lt;a href=&quot;http://shop.oreilly.com/product/0636920023630.do&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Creating A Quick Website To Always Know Your Php Configuration In Osx</title><link>https://dillieo.me/posts/development/2013-08-22-creating-a-quick-website-to-always-know-your-php-configuration-in-osx/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-08-22-creating-a-quick-website-to-always-know-your-php-configuration-in-osx/</guid><description>PHP Info Site</description><pubDate>Thu, 22 Aug 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I&apos;ve been doing a lot of PHP reconfigurations. I&apos;m upgrading versions, adding/removing features, and checking whether or not XDebug was installed. The standard technique is to modify a page on your site to include the phpinfo() command to get your details, but I decided to do something a little more convenient and permanent. I decided to create my own website for PHP Info!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead of having to add a page/snippet and then remove it later on, I created a single page with my PHP Info call and then mapped it to a domain name in my hosts file. That way I always have the PHP info I need in a second. This is incredibly simple to accomplish.&lt;/p&gt;
&lt;h3&gt;1. Create Your Info File&lt;/h3&gt;
&lt;p&gt;Fire up your favorite text editor (Mine is currently &lt;a href=&quot;http://www.sublimetext.com/&quot;&gt;Sublime&lt;/a&gt;) and add one single line of code:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;?php phpinfo(); ?&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s the standard line that will spit out your PHP configuration in a HTML friendly format. Save this in it&apos;s own folder as index.php. For me, I created a &quot;/Users/DillieO/Projects/phpinfo&quot; folder and saved it there.&lt;/p&gt;
&lt;h3&gt;2. Update Apache Virtual Hosts File&lt;/h3&gt;
&lt;p&gt;I&apos;m not exactly sure where your apache configuration files are. For me, they reside in the /private/etc/apache2/extra folder. You may need to execute a &quot;locate&quot; command at the command prompt to find yours. Open up the httpd-vhosts.conf file and add the following lines:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost \*:80&amp;gt; # This server name must also be added to /private/etc/hosts DocumentRoot &quot;/Users/DillieO/Projects/phpinfo&quot; ServerName phpinfo.dev &amp;lt;/VirtualHost&amp;gt;

&amp;lt;Directory &quot;/Users/DillieO/Projects/phpinfo&quot;&amp;gt; Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all &amp;lt;/Directory&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See what we did there? We mapped a convenient URL (phpinfo.dev) to our folder. Note that you&apos;ll need to map the absolute path to your project folder here. Save this file (you&apos;ll be prompted for your admin password) and we&apos;re off to the next file.&lt;/p&gt;
&lt;h3&gt;3. Update your Hosts File&lt;/h3&gt;
&lt;p&gt;The next step is to update our hosts file so that when we attempt to resolve phpinfo.dev, we get a local resolution, and not try to actually go out to the internet to find the file. Again, the location may vary, but for me, I open up the hosts file in the /private/etc folder and add the following line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;127.0.0.1 phpinfo.dev&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Save this file (again you may be prompted for your admin password) and there&apos;s one last step.&lt;/p&gt;
&lt;h3&gt;4. Restart Apache and View the Site.&lt;/h3&gt;
&lt;p&gt;We need Apache to refresh itself with the new virtual host, so restart it with the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo apachectl restart&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will prompt you for the admin password, you can&apos;t do it any other way.&lt;/p&gt;
&lt;p&gt;Once complete, fire up your web browser and navigate to http://phpinfo.dev and voila! You&apos;re PHP settings are right there, nice and easy to view at any time.&lt;/p&gt;
&lt;p&gt;This has already saved me several minutes (and random git status updates that think my files have changed) and it&apos;s always available, even if I want to peek at all the random things available.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Gluten Free Cheeseburger Macaroni That Helper Kind</title><link>https://dillieo.me/posts/life/2013-08-20-worth-sharing-gluten-free-cheeseburger-macaroni-that-helper-kind/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2013-08-20-worth-sharing-gluten-free-cheeseburger-macaroni-that-helper-kind/</guid><description>Worth Sharing Gluten Free Cheeseburger Macaroni That Helper Kind</description><pubDate>Tue, 20 Aug 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been working on my own &quot;Daddy&apos;s Cookbook&quot; for a little while now. I have pancakes, BBQ sauce, chicken nuggets, and other things that everybody in the family enjoys &lt;em&gt;(7 year olds can be quite picky at times)&lt;/em&gt;. Having a good cheeseburger macaroni (or &quot;helper&quot; if you prefer) is a great recipe I&apos;ve been wanting to add. The box stuff can get rather expensive at times and have you seen all the weird stuff they&apos;ve put in it?! After much tweaking and tasting, I&apos;ve finally found a recipe everybody likes.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This recipe has been modified from &lt;a href=&quot;http://www.lynnskitchenadventures.com/2013/01/homemade-cheeseburger-helper.html&quot;&gt;Lynn&apos;s Kitchen Adventures&lt;/a&gt; recipe.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here are the ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 lb. ground turkey &lt;em&gt;(you can use ground beef if you&apos;d like)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;1 cup chicken stock &lt;em&gt;(vegetable stock or even water works in a pinch)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2 cups rice milk &lt;em&gt;(regular milk works well too)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;1 cup &quot;southwestern&quot; salsa &lt;em&gt;(the kind with corn, black beans, etc. in it)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2 cups gluten free small shell noodles &lt;em&gt;(macaroni or bow tie works too)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2 tbsp. dried onion flakes &lt;em&gt;(you can use powder, but the flakes are much better)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;1 cup sour cream&lt;/li&gt;
&lt;li&gt;2 cups shredded cheese &lt;em&gt;(&quot;fiesta&quot; type blends work best, but sharp is good too)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Directions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Brown the meat in a large skillet. Drain any excess juices if they are there.&lt;/li&gt;
&lt;li&gt;Add stock, milk, salsa, and noodles to the skillet and bring to a boil.&lt;/li&gt;
&lt;li&gt;Once boiling, reduce heat to low, cover, and cook for 15 minutes, or until the pasta is done and most of the liquid is absorbed.&lt;/li&gt;
&lt;li&gt;Take off the heat and mix in the onion flakes, sour cream, and cheese.&lt;/li&gt;
&lt;li&gt;Cover and let sit for another 5 to 10 minutes until the cheese is melted and blended together.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Note: Make sure to check your salsa ingredients if you are working on making this gluten free. I&apos;ve been quite happy with Walmart&apos;s brand of southwestern salsa lately and it is gluten free.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Serve and enjoy! I personally like a little more of a kick at times, so I&apos;ll mix in a bit of Cholula hot sauce in my bowl when I serve myself.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Quick File Zipping In Windows 8</title><link>https://dillieo.me/posts/tips/2013-08-14-quick-tip-quick-file-zipping-in-windows-8/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2013-08-14-quick-tip-quick-file-zipping-in-windows-8/</guid><description>Quick Tip</description><pubDate>Wed, 14 Aug 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For starters, here&apos;s your basic Windows Explorer folder:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-08-quickzip_start.png&quot; alt=&quot;Windows Explorer Folder&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If you select some (or all) of your files, you can click on the &quot;Share&quot; ribbon menu item and see a great shortcut to zip up your files:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-08-quickzip_context.png&quot; alt=&quot;Windows Explorer Share Context&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You could click this button and be done. However, I do this process a lot, so we&apos;re going to make things even more efficient. If you right click on the zip icon, you&apos;ll see a couple of options:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-08-quickzip_zipoption.png&quot; alt=&quot;Zip Options&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The quick access toolbar is that toolbar up at the very top, always accessible with your frequently used actions. After clicking &quot;Add to Quick Access Toolbar&quot; your window will now look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-08-quickzip_final.png&quot; alt=&quot;Quick Access Toolbar w/Zip Option&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now there&apos;s no right clicking or menu navigation necessary! Simply select your files, click the button up top, and you&apos;re done!&lt;/p&gt;
&lt;p&gt;Saves me a few seconds, and that adds up over time. 8^D Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Mount A Timemachine Network Drive At Login</title><link>https://dillieo.me/posts/development/2013-08-02-quick-tip-how-to-mount-a-timemachine-network-drive-at-login/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-08-02-quick-tip-how-to-mount-a-timemachine-network-drive-at-login/</guid><description>Quick Tip</description><pubDate>Fri, 02 Aug 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve had a lot of feedback from my article on &lt;a href=&quot;/how-to-get-netgear-readyshare-to-work-with-time-machine-and-mountain-lion&quot;&gt;using readyshare drives for TimeMachine backups&lt;/a&gt;. The one glitch I&apos;ve found is that I have to remount the sparsebundle file every time I log in. Here&apos;s a way to fix that issue.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;You may have seen articles that have you simply drag the drive into your Login Items profile to have it remount on login. This hasn&apos;t worked for me. It may be due to the fact that the readyshare drive has to be mounted first, I&apos;m not 100% sure. However, we can create a simple AppleScript that will do the job for us.&lt;/p&gt;
&lt;p&gt;Fire up the AppleScript editor (under Applications) and paste in the following script:&lt;/p&gt;
&lt;p&gt;[gist]6140774&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Your path(s) will vary based on your share and sparse bundle names.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Before running this script, make sure your readyshare drives have been unmounted. Click the &quot;run&quot; button and verify the results. If you open up Finder, you should see your ReadyShare drive in the &quot;Shares&quot; section and your Time Machine drive listed in the &quot;Devices&quot; section.&lt;/p&gt;
&lt;p&gt;If all is successful, use the File-&amp;gt;Export dialog, making sure to change the format to &quot;Application&quot;. You can name it whatever you&apos;d like.&lt;/p&gt;
&lt;p&gt;Once this is done, open up the &quot;Users and Groups&quot; settings, select your profile, and drag the application file from finder into the Login Items section.&lt;/p&gt;
&lt;p&gt;Next time you reboot your computer, all your drives should come back for you automatically.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Batch Svn Rename Of Files Through Powershell</title><link>https://dillieo.me/posts/projects/2013-07-29-quick-tip-batch-svn-rename-of-files-through-powershell/</link><guid isPermaLink="true">https://dillieo.me/posts/projects/2013-07-29-quick-tip-batch-svn-rename-of-files-through-powershell/</guid><description>Quick Tip</description><pubDate>Mon, 29 Jul 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I needed all filenames that had a space in them replaced with an underscore so that they would run properly in our batch scripts. In addition, I needed to do this through SVN, and not just a standard rename, so that our other developers noted the changes as well.&lt;/p&gt;
&lt;p&gt;After a little tweaking, here&apos;s the quick and easy way to do it through Powershell.&lt;/p&gt;
&lt;p&gt;[gist]6106435&lt;/p&gt;
&lt;p&gt;Note that I&apos;ve formatted this on multiple lines for readability, simply remove the newline characters so that it is a single line and you can run it at the command prompt in the directory of your choosing.&lt;/p&gt;
&lt;p&gt;If you need to tweak things a little, make sure to change the -match parameter on the first line to the character (and potentially string) that you&apos;re filtering off of, as well as the replace statement.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Team Fresh Completes Ragnar Northwest Passage</title><link>https://dillieo.me/posts/growth/2013-07-25-team-fresh-completes-ragnar-northwest-passage/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-07-25-team-fresh-completes-ragnar-northwest-passage/</guid><description>Team Fresh Completes Ragnar Northwest Passage</description><pubDate>Thu, 25 Jul 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had the distinct pleasure of running in the Ragnar Northwest Passage relay race this weekend with my company. My thoughts/recap can be found here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freshconsulting.com/team-fresh-completes-ragnar-northwest-passage/&quot;&gt;http://www.freshconsulting.com/team-fresh-completes-ragnar-northwest-passage/&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Running Tip A Good Runner Pushes The Hills</title><link>https://dillieo.me/posts/growth/2013-06-24-running-tip-a-good-runner-pushes-the-hills/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-06-24-running-tip-a-good-runner-pushes-the-hills/</guid><description>Carriage Trail, Redlands 5-19-13a</description><pubDate>Mon, 24 Jun 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s a little crazy to think that my big Ragnar race is less than a month away! As I&apos;ve been on my training runs, there&apos;s one constant: I make sure to hit two major hills during my run. Sometimes they are short and steep, sometimes they are a longer and gradual. Either way, a hill placed at the wrong time can suck all energy and momentum out of your run. Here are some tricks (and a pseudo clever acronym) I use to get through them.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;PUmp your arms&lt;/h3&gt;
&lt;p&gt;Your normal &quot;relaxed&quot; stride will quickly drain your energy when you start going up the hill. You need to speed up your pace a little in order to get up that hill. The easiest way to do that is to pump your arms. Yes, you heard me right. Pump your arms!&lt;/p&gt;
&lt;p&gt;There&apos;s something interesting about your body when your running that you may not have noticed. Your arms and your legs like to be in a rhythm together. You never see your arms moving faster than your legs, or vice versa. It&apos;s also a bit easier to get your arms to move faster than your legs. Your legs are busy supporting the weight of your body and moving you forward. Your arms are just keeping momentum. So start pumping your arms faster. You don&apos;t have to pretend to sprint either. Just start pumping your arms a bit harder, and your legs will follow suit.&lt;/p&gt;
&lt;h3&gt;Shorten your stride&lt;/h3&gt;
&lt;p&gt;Have you ever tried to go up a flight of stairs using your normal walking stride? It doesn&apos;t work too well. Most likely you&apos;re trip on a step since your normal stride is designed to go &quot;long&quot; and you need to go &quot;up&quot; the stairs. To accomodate for this, shorten your stride. When you combine this with the pumping of the arms (and subsequently your legs), this will get your knees up and shorten your stride, perfect for going up hills.&lt;/p&gt;
&lt;h3&gt;Head up&lt;/h3&gt;
&lt;p&gt;Now that we have the mechanics in place, it&apos;s time to finish things off with the mental factor. Hills are tough. With really steep hills, your body tends to slump down a little (since it&apos;s getting tired) and you wind up staring at your feet. This won&apos;t do. You&apos;ll only see the ground and this isn&apos;t very motivating. Look up! Pick a target at the top of your hill. It could be a mailbox, a tree, a person, anything. Sometimes just the top of the hill itself will do. Now focus on that point. Use laser precision, stare at it, and don&apos;t let your eyes off until you get to the top of the hill. You&apos;d be surprised at what a simple focus like this can do to your motivation and energy. Keeping your head up also has the added bonus of opening up your air passages, so you can get extra oxygen to those leg muscles that are carrying you up!&lt;/p&gt;
&lt;p&gt;But wait, there&apos;s more to just getting up to the top.&lt;/p&gt;
&lt;h3&gt;once you crest the peak of the hill Extend your Stride&lt;/h3&gt;
&lt;p&gt;Excellent! You&apos;ve made it to the top of the hill. Your legs are probably burning a bit, your breathing is heavy, but you&apos;re there! Your body is going to want to get back into its normal &quot;long&quot; stride, but it might be so fatigued that all you&apos;re going to get is a short stride, a tired body, and the rest of your run will be slow and miserable.&lt;/p&gt;
&lt;p&gt;Once you crest the peak of the hill, you&apos;re body will let out a small sigh of relief. You can feel this. It&apos;s saying all the climbing work is done. Once you feel this, make yourself to three long strides with your legs. You want to over exaggerate this a little in your mind. The reason for this is this will get your legs stretched out again. This will help your body get into the stride it was used to before you started up the hill, and will carry you forward.&lt;/p&gt;
&lt;p&gt;Hopefully this gets you up the next batch of hills that you run, with the energy and motivation to tackle the next one. Any tips you have for hills? I&apos;d love to hear them!&lt;/p&gt;
</content:encoded></item><item><title>Get More Life Out Of Your Computer With A Ssd Upgrade</title><link>https://dillieo.me/posts/growth/2013-06-20-get-more-life-out-of-your-computer-with-a-ssd-upgrade/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-06-20-get-more-life-out-of-your-computer-with-a-ssd-upgrade/</guid><description>Get More Life Out Of Your Computer With A Ssd Upgrade</description><pubDate>Thu, 20 Jun 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://freshconsulting.com/get-more-life-out-of-your-computer-with-a-ssd-upgrade/&quot;&gt;Get More Life Out of Your Computer With A SSD Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My guest post today over at my work blog from my recent upgrade...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://freshconsulting.com/get-more-life-out-of-your-computer-with-a-ssd-upgrade/&quot;&gt;Get More Life Out of Your Computer With A SSD Upgrade - Fresh Consulting&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>A Fresh Perspective Two Years And Counting As A Remote Worker</title><link>https://dillieo.me/posts/development/2013-06-04-a-fresh-perspective-two-years-and-counting-as-a-remote-worker/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-06-04-a-fresh-perspective-two-years-and-counting-as-a-remote-worker/</guid><description>A Fresh Perspective Two Years And Counting As A Remote Worker</description><pubDate>Tue, 04 Jun 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Time flies when you&apos;re having some Fresh fun! This week I&apos;ve started my second year with &lt;a href=&quot;http://freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt; as a remote worker. This has been my first foray into remote working, so I&apos;ve been &lt;a href=&quot;/the-remote-worker-one-month-in&quot;&gt;documenting&lt;/a&gt; some &lt;a href=&quot;/the-remote-worker-three-months-in&quot;&gt;milestones/tips&lt;/a&gt; along the way. While my &lt;a href=&quot;/a-fresh-year&quot;&gt;first year&lt;/a&gt; seemed to be a huge eye opening experience in the way the private sector work, technologies to work with, and projects to work on, this year seemed a lot more focused.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I spent a good 9 months on a single project this past year. Even then there was some small updates that made time linger more, but that&apos;s where the bulk of my effort went. It was an amazing project and I worked in an area I didn&apos;t have a lot of experience before: front end scripting. We worked with a company to rebuild their dashboard map to make it a &quot;single page application&quot; (SPA) that had better mapping, more data, and purely configurable from the database so if they wanted to change their color scheme for a given metric, no front end work was needed.&lt;/p&gt;
&lt;p&gt;The company already had their own crack .Net team, so I was there as the front end &quot;glue man.&quot; There would be discussions about a dashboard feature (a pie chart with data for X). Our designer would come up with the layout and a prototype with highcharts. The back end guys would discuss how they were going to update their data warehouse to provide that data. Then they&apos;d look at me and ask how we put the two together. Eventually we worked out a smooth system for how to set up our AJAX requests and what the JSON results were to return. We wanted to make the client as &quot;dumb&quot; as possible; It makes a call to the API, it gets data. If the status is OK, then it drops a color, or an array of data, or something else, into the proper parameter that highcharts needs. Problem solved. There was enough going on with the management of 40+ charts/tables/map entities that had to respond to a change that needed to be handled.&lt;/p&gt;
&lt;p&gt;In the end the project turned out to be an amazing release that the users loved. I gained some direct and detailed work with &lt;a href=&quot;http://d3js.org&quot;&gt;d3&lt;/a&gt;, &lt;a href=&quot;http://www.highcharts.com/&quot;&gt;highcharts&lt;/a&gt;, &lt;a href=&quot;http://datatables.net/&quot;&gt;datatables.net&lt;/a&gt;, and &lt;a href=&quot;http://backbonejs.org/&quot;&gt;backbone.js&lt;/a&gt; that I&apos;ll be able to take to other place and refine even more. I even had a few good blog posts out of it, and a big one to follow soon.&lt;/p&gt;
&lt;p&gt;This year was more of a &quot;tools and techniques&quot; year that anything else. As my remote relationship with Fresh has strengthened and more members have come on board, I&apos;ve had a little more autonomy with my projects and time to work with them. This has had some pros and cons, main con being that sometimes our meetings would start off with a lot of catch up on really old items or confusion over a random e-mail that had come through. To help resolve this, I took a page from the &quot;daily standup&quot; meetings that our client above was using and started generating my own &quot;daily virtual standup&quot; meetings via e-mail. Staying true to it&apos;s goals, the e-mail can be glanced at in a minute, maybe two, and gives a quick overview of what client, what takes (sometimes a ticket number) and the progress on it from yesterday and the goals for today. If any question points are brought up, then we can discuss them further. This has been an amazing help in the overall communication level and most questions are answered equally as fast. It may have even inspired some additional progress meetings in the office 8^D&lt;/p&gt;
&lt;p&gt;I really really try to work &quot;smarter and not harder&quot;, especially with the need to jump into various projects (across different languages at times) often. The tools I&apos;ve picked up and used over the past year have made my work that much more productive and manageable:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/visualstudio/eng&quot;&gt;Visual Studio Professional 2012&lt;/a&gt; - Express is great, but some of the plugins with Pro really help&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jetbrains.com/resharper/&quot;&gt;JetBrains Resharper&lt;/a&gt; - I&apos;ve never written better code in my life and it&apos;s helped me refactor a lot of existing code we have.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jetbrains.com/phpstorm&quot;&gt;JetBrains PHPStorm&lt;/a&gt; - Easiest way I&apos;ve been able to setup PHP debugging to date. (need to a full version 8^D)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jetbrains.com/ruby&quot;&gt;JetBrains RubyMine&lt;/a&gt; - Best way I&apos;ve been able to learn Ruby on the side (need to get a full version too 8^D)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.coffeecup.com/osx/web-editor/&quot;&gt;CoffeeCup Web Editor &lt;/a&gt;- I&apos;m a long time fan of the PC version, but they now have a nice Mac version I can use for my quick edits/checks.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.sublimetext.com/&quot;&gt;Sublime Text&lt;/a&gt; - Where have you been all my life?! It is an insanely powerful text editor! I&apos;ve been converted! Plus it runs on Mac and PC.&lt;/p&gt;
&lt;p&gt;&quot;But what about the company itself?!&quot; you may be thinking. Fresh is fabulous and wonderful, even more so than when I first started there. Our core team is growing, and everybody is willing to chip in somewhere or another when needed. While I don&apos;t see it often being the remote guy, collaboration is always encouraged and a person won&apos;t hesitate to ask for help on an issue that arises after getting stumped for too long. There&apos;s fun stuff the team does as well outside of &quot;work hours&quot;, such as a &lt;a href=&quot;http://freshconsulting.com/fresh-show-at-seattle-snow-day/&quot;&gt;huge snowball fight to set a world record&lt;/a&gt; or even our upcoming &lt;a href=&quot;http://freshconsulting.com/a-fresh-perspective-on-running/&quot;&gt;ragnar relay race&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The bottom line is I work in a place where my ideas are respected, I&apos;m given the tools I need to implement them, and I get to solve a plethora of problems on a daily basis. I also do this from the comfort of my downstairs office at home so I have the flexibility of time to be with my family too. While there have been lots of balancing acts to learn, it has only gotten better over the past two years and I have Fresh to thank for that!&lt;/p&gt;
&lt;p&gt;Here&apos;s to another 2 and beyond!&lt;/p&gt;
</content:encoded></item><item><title>Refactored Advanced Removal Of Duplicate Rows In Sql Server</title><link>https://dillieo.me/posts/development/2013-06-03-refactored-advanced-removal-of-duplicate-rows-in-sql-server/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-06-03-refactored-advanced-removal-of-duplicate-rows-in-sql-server/</guid><description>Refactored Advanced Removal Of Duplicate Rows In Sql Server</description><pubDate>Mon, 03 Jun 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Refactoring is an ongoing process. After running into a few glitches on the test server with my existing script, I was able to refactor my &lt;a href=&quot;/advanced-removal-of-duplicate-rows-in-sql-server&quot;&gt;advanced duplicate row removal script&lt;/a&gt; to make things a lot faster and still delete the proper rows! Read on to see what changed.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Step 1: Remove Ugly * Selection&lt;/h3&gt;
&lt;p&gt;It is a little bit of SQL 101 (shame on me) but unless you absolutely need it, never use a SELECT(*) query in your lookups. Using * forces the server to go pull down the details for the table in question to get the name of all the columns and then add them. This is particularly painful with large tables. In addition, if all you&apos;re doing is getting a count, just use a single column name. Every little bit of time helps in big processing. With that in mind, our initial duplicate query shaved off a bit of time by doing this:&lt;/p&gt;
&lt;p&gt;[gist]5700625&lt;/p&gt;
&lt;p&gt;You&apos;ll find we do this elsewhere in the final script too.&lt;/p&gt;
&lt;h3&gt;Step 2: Remove the JOIN and use a subquery in the DELETE Statement&lt;/h3&gt;
&lt;p&gt;Even though my queries were running fine locally, the test server was running into problems deleting duplicate rows on my largest table. The statements would execute fine, but no records would be removed. In addition, due to the ugly nature of the JOIN being used (we had to match up every column), it was taking a long time.&lt;/p&gt;
&lt;p&gt;After doing some digging and diagnosing, I found a better way to run our query, and that&apos;s by doing a subquery. By doing a subquery, we can still use the TOP (x - 1) row limitation we need, but we can also do a direct matching against column values, instead of the crazy joining I was doing before. Without the joins, the query runs immensely faster and looks like this:&lt;/p&gt;
&lt;p&gt;[gist]5700786&lt;/p&gt;
&lt;h3&gt;Putting it Together&lt;/h3&gt;
&lt;p&gt;With that in mind, here&apos;s our new final script. For the most part it looks the same, just some fine tuning on the query and the deletion portion:&lt;/p&gt;
&lt;p&gt;[gist]5700776&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Living</title><link>https://dillieo.me/posts/growth/2013-05-31-living/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-05-31-living/</guid><description>Living</description><pubDate>Fri, 31 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;You have never really lived until you have done something for someone who can never repay you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;~ Unknown&lt;/p&gt;
</content:encoded></item><item><title>Cowardice Is Virtue How Dr Who Saved The World Through Cowardice Evangelical Outpostevangelical Outpost</title><link>https://dillieo.me/posts/development/2013-05-31-cowardice-is-virtue-how-dr-who-saved-the-world-through-cowardice-evangelical-outpostevangelical-outpost/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-31-cowardice-is-virtue-how-dr-who-saved-the-world-through-cowardice-evangelical-outpostevangelical-outpost/</guid><description>Cowardice Is Virtue How Dr Who Saved The World Through Cowardice Evangelical Outpostevangelical Outpost</description><pubDate>Fri, 31 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a guest post today featuring Dr. Who!!!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://evangelicaloutpost.com/archives/2013/05/cowardice-is-virtue-and-the-end-of-all-things.html&quot;&gt;Cowardice is Virtue; How Dr. Who Saved the World through Cowardice -- Evangelical OutpostEvangelical Outpost&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Refactored Creating Dynamicconfigurable Parameterized Queries In Entity Framework</title><link>https://dillieo.me/posts/development/2013-05-30-refactored-creating-dynamicconfigurable-parameterized-queries-in-entity-framework/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-30-refactored-creating-dynamicconfigurable-parameterized-queries-in-entity-framework/</guid><description>Refactored Creating Dynamicconfigurable Parameterized Queries In Entity Framework</description><pubDate>Thu, 30 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little while back &lt;a href=&quot;/creating-dynamicconfigurable-parameterized-queries-in-entity-framework&quot;&gt;I posted about a technique I was using&lt;/a&gt; to setup parameterized queries using Entity Framework. I had posted to the .Net group on Google+ and received some amazing feed back from &lt;a href=&quot;https://plus.google.com/101363865895447068906/posts&quot;&gt;Dan Nemec&lt;/a&gt; and &lt;a href=&quot;https://plus.google.com/109392919130815889444/posts&quot;&gt;Chris McCall&lt;/a&gt; and refactored the code. It&apos;s cleaner, easier to work with, and hopefully a bit more optimized too. Here&apos;s what&apos;s different.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Fewer (and a few renamed) Variables&lt;/h3&gt;
&lt;p&gt;Originally I was coding with the &quot;human reading&quot; element in mind. That way if I had to modify some of the &quot;From/To&quot; type variables or change types, I could see it all right there. This really wasn&apos;t necessary. I&apos;m never going to find cases where I&apos;m doing a range query between an integer and a date (SQL won&apos;t like me 8^D) and it isn&apos;t that difficult to update the code to add the &quot;@&quot; character in front of my WHERE clause parameter names. I was already appending numbers to my parameter names when doing multiple search terms. Additionally, having the parameter type as a string opened too many doors to parsing problems. It was easy enough to declare the type in the object initializer anyway (more about generics in a bit). With all that in mind, here&apos;s what our new class looks like:&lt;/p&gt;
&lt;p&gt;[gist]5679216&lt;/p&gt;
&lt;h3&gt;No Constructors&lt;/h3&gt;
&lt;p&gt;My constructors weren&apos;t really doing anything. In addition, there were a LOT of them. .Net allows you to use object initializers, so that you can declare new objects and set their parameters at the same time. Now you have something looking like this:&lt;/p&gt;
&lt;p&gt;[gist]5679296&lt;/p&gt;
&lt;h3&gt;Updated Processing&lt;/h3&gt;
&lt;p&gt;With our new object in place, our processing becomes a little more &quot;complex&quot; but that&apos;s the way we want it. The &quot;user end&quot; simply sets up a few parameters and the &quot;processing end&quot; does all the hard work. We use the VariableName property and append the appropriate variables based on ranged, multiple, or single values. In addition, there is no &quot;GetType&quot; method to call since we already have the type there. Here&apos;s what our processing script looks like now:&lt;/p&gt;
&lt;p&gt;[gist]5679454&lt;/p&gt;
&lt;h3&gt;What about Generics?&lt;/h3&gt;
&lt;p&gt;Dan had made an excellent suggestion about using generics with my SearchParameter object in order to avoid the issues that arose by using a simple string for the parameter type. This would allow me to simply declare my SearchParameter&amp;lt;int&amp;gt; or SearchParameter&amp;lt;DateTime&amp;gt; and create a read only property in the project that returns typeof(T).&lt;/p&gt;
&lt;p&gt;This worked out great initially, but I ran into problems due to the fact that my dictionary collection, a generic collection in itself, was essentially holding generic objects itself, and being able to pass this kind of object around wasn&apos;t working in the compiler. At one point I was using a basic Dictionary&amp;lt;string, SearchParameter&amp;lt;object&amp;gt;&amp;gt; to hold my parameters, but in the code that built the parameters, it didn&apos;t like to have specific types getting pushe into the object. However, a lot of obstacles went away when using the Type type instead of a string, and I was still able to have &quot;compiler verifiable&quot; code to work with when building my search parameter collections.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;So there you have it. A much cleaner and functional system to work with and I&apos;m finalizing off my code to use this new system much faster that was with the previous iteration. It never hurts to refactor when you get the chance. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Why The Internet Is Cool</title><link>https://dillieo.me/posts/development/2013-05-26-why-the-internet-is-cool/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-26-why-the-internet-is-cool/</guid><description>Why The Internet Is Cool</description><pubDate>Sun, 26 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Me: Okay, so we now know the item that is not stolen is the didgeridoo.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Rylee: It looks like a long flute.&lt;/p&gt;
&lt;p&gt;Haylee: What does it sound like?&lt;/p&gt;
&lt;p&gt;Me: Well, it kind of sounds like a low, well... Hold on one sec...&lt;/p&gt;
&lt;p&gt;[:: Two seconds later after a voice search ::]&lt;/p&gt;
&lt;p&gt;http://www.youtube.com/watch?v=DC9w4KWEgJE&amp;amp;sns=em&lt;/p&gt;
&lt;p&gt;Girls: Cool!!!&lt;/p&gt;
</content:encoded></item><item><title>Windows Phone 8 One Week In With The Htc 8X</title><link>https://dillieo.me/posts/development/2013-05-23-windows-phone-8-one-week-in-with-the-htc-8x/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-23-windows-phone-8-one-week-in-with-the-htc-8x/</guid><description>It looks long, but its one quick flick of the thumb to access what I need.</description><pubDate>Thu, 23 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a random, and unexpectedly happy, Mothers Day present, my wife and I were able to get an early start on our &quot;phone upgrades&quot;. I had been wanting to check out the &lt;a href=&quot;http://www.windowsphone.com&quot;&gt;Windows Phone 8&lt;/a&gt; ecosystem for a while now, and my wife went ahead and made the plunge as well. Now we&apos;re one week in and I&apos;m happy as a clam. My wife says she&apos;s about 92% there. Here are a few thoughts about it all.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For those of you that like the TL;DR: approach, here&apos;s what I&apos;ve boiled a week of usage down to.&lt;/p&gt;
&lt;h3&gt;The Fabulous&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.windowsphone.com/en-US/How-to/wp8/people/use-rooms-and-groups&quot;&gt;&lt;strong&gt;Family Room&lt;/strong&gt;&lt;/a&gt; - My wife and I have our own chat room, photo gallery, notebook, and calendar all in one place! We can access it over the web if needs be, and we get notifications when things are updated. The days of e-mailing that fun picture of the kids that I only want her to see and then having to check e-mail or some other source are gone. My &quot;honnie do&quot; list and the &quot;grocery list&quot; are now in one spot. The need to share/link/coordinate calendars across accounts are gone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quick Camera Use&lt;/strong&gt; - Having a dedicated button to take pictures (and do a quick focus) has saved me time and made it a lot easier to snap a batch of photos at the perfect moment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live Tiles&lt;/strong&gt; - It lives up to the hype. Having your updates right on screen (and not a tiny icon at the top) saves time from launching apps you may (or may not) need at the time. The ability to change the size of your live tiles lets you customize your &quot;home screen&quot; a bit and provide the proper level of notification you need. For my e-mail tiles, I only need a count update. for my best friends group tile, I like to see what they are saying.&lt;/p&gt;
&lt;h3&gt;The Good&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Speech Support&lt;/strong&gt; - The voice commands work really well. I can even launch apps, which I couldn&apos;t do before. I like how while I have by bluetooth headset on that text messages can be read to me. I can also say commands like &quot;Reply&quot; and &quot;Send&quot; to compose messages using my voice. WP8 is smart enough to read back what it said before I confirm sending, so I don&apos;t have auto-correct nightmares.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contact Integration&lt;/strong&gt; - Take the time to clean up and merge your contacts so that one person has all of their profiles attached. When you do, the people hub makes it easy to get updates on everybody, and see what a particular person (or group) is up to.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kids&apos; Corner&lt;/strong&gt; - I know this one has been hyped on commercials and on the site. I&apos;ll admit I have set up my corner (adding a few games), but I&apos;m still too &quot;protective&quot; at this point with the phone to let my kids touch it. 8^D One thing I do like is the ability to add music and videos to the corner, so I can keep a couple handy for their listening/viewing in addition to the games.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apps&lt;/strong&gt; - For all the complaints about lack of apps, the core OS does 95% of what I need it to do. All of my major apps (Evernote, WordPress, Endomondo) are available. While I did install Facebook/Twitter/LinkedIn, I don&apos;t really use them, thanks to the People Hub. I have them there in case I need to do some &quot;deep digging&quot; and I don&apos;t have Emtrey (my Nexus 7) handy. I REALLY wish &lt;a href=&quot;http://www.sugarsync.com/&quot;&gt;SugarSync&lt;/a&gt; will get a Windows 8 app running though. My cloud has been displaced for the moment while I figure out what to do. I&apos;m not a heavy gamer/app user on my mobile phone these days, so I really don&apos;t think it&apos;s as big of an issue as folks like to complain about.&lt;/p&gt;
&lt;h3&gt;Needs Work&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;API Lockdown&lt;/strong&gt; - This might be a little more &quot;geeky&quot; than what most folks care about, but digging through the API a bit brings up the fact that some features you take for granted (like being able to write an app to silence your ringer during nighttime) is unavailable since that part of the OS isn&apos;t available to developers. I understand the security/usability risks involved, but I think there are precautions you could take to make these available. In the meantime I need to try to write an app that comes close to what I need. 8^D&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Speech Support&lt;/strong&gt; - Yes it&apos;s good, but my wife points out that she was able to dictate her blog posts through the WordPress app on her Android. It seems his and miss here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Navigation&lt;/strong&gt; - True true, Google had maps already with navigation, but something would be handy. It appears that Nokia has a &lt;a href=&quot;http://blogs.windows.com/windows_phone/b/windowsphone/archive/2013/02/25/nokia-s-free-map-and-navigation-apps-now-available-for-more-windows-phones.aspx&quot;&gt;free map/navigation&lt;/a&gt; suite out in beta, I&apos;ll give those a try.&lt;/p&gt;
&lt;p&gt;...and for those of you who want a little more details...&lt;/p&gt;
&lt;h3&gt;The Hardware&lt;/h3&gt;
&lt;p&gt;I really like the &lt;a href=&quot;http://www.htc.com/www/smartphones/htc-wp-8x/&quot;&gt;HTC 8X&lt;/a&gt;. I&apos;ll admit that it&apos;s not a fair comparison against our aging HTC Thunderbolts, which did not handle 4G in our area well, but so far things are amazingly fast. The phone is lighter and thinner than our old Thunderbolts, which makes me glad a case is coming in the mail. However, the additional vertical screen space is welcome and the 8X is far less bulky in my pocket.&lt;/p&gt;
&lt;p&gt;Some reviews have criticized the battery life of the phone, but so far I&apos;ve been able to go about a day and a half to two days before needing a recharge. I generally recharge at night anyway, but it&apos;s good to know that if I forget, or am doing some heavy travel, I won&apos;t have to worry about losing the battery. Plus not having 4G drain your battery is a big plus.&lt;/p&gt;
&lt;p&gt;The camera is very nice. It handles low light really well. Sometimes the auto flash gets a little confused in those situations, creating a washed out image. However, simply turning it off solves that problem. It can focus really quick so that you can get that perfect shot when your kids are running around. The HTC 8X (and I think all Windows Phone 8 devices for that matter) has a dedicated camera button. Click the button on the bottom right hand side of the phone and it instantly launches. You can start clicking away like crazy simply using the button. This is helpful when I&apos;m in &quot;paparazzi dad&quot; mode with my kids. After a few clicks in, a message popped up notifying me that if I hold the button down half way, the camera will focus for me. Bingo! My blurry paparazzi photos are now clear and beautiful!&lt;/p&gt;
&lt;h3&gt;Windows Phone 8 - Live Tiles, Hubs, and More&lt;/h3&gt;
&lt;p&gt;More importantly than the phone hardware is the operating system and ecosystem itself. Over the years I&apos;ve become &lt;a href=&quot;http://evangelicaloutpost.com/archives/2012/08/which-walls-do-you-prefer.html&quot;&gt;agnostic&lt;/a&gt; to what OS is the &quot;best.&quot; However, the concept of having your common updates available on screen and quickly visible (through live tiles) really intrigued me. Seeing it in action, I really like it. I have my basic weather forecast through Weatherbug alternating between the simple conditions and the forecast for the day. No need to open up the app unless I&apos;m looking for full week projects (and I can get those too). I have my personal e-mail accounts in a &quot;linked inbox&quot; and my work e-mail in a separate account, so when the notification ding occurs, I can quickly identify where it is coming from. I also have my &quot;best friends&quot; setup in a people hub group (more about this in a moment) and pinned in a wide live tile, so whenever they post and update to Facebook or Twitter, I see it right there without having to launch anything.&lt;/p&gt;
&lt;p&gt;I also think that Windows Phone 8 is taking a different approach to the mobile experience through their concept of hubs. Instead of launching several apps to track your friends photos, updates, etc., you simply launch the people hub. From here you can get their photos, their status updates, even contact information at a glance. When you link up your social network profiles, you get a nice aggregated list of everything going on quick and easy. Your messaging is aggregated as well, so your text messages, Facebook chat messages, and others are all in one place. I&apos;ve really enjoyed this when I&apos;m texting my wife and doing a Facebook chat with a friend at the same time. In your people hub you can also create &quot;groups&quot; which allows you to see what is going on (and contact) a subset of people, even across multiple mediums (e-mail, twitter, facebook). I&apos;ve setup a &quot;best friends&quot; group which comes in handy since a few of them don&apos;t use facebook, but I can still keep in touch with them quick and easy. I&apos;m also working on setting up a group for immediate family and extended family. The &quot;Family Room&quot; is a private group and one of my absolute favorite things (more about this in a moment).&lt;/p&gt;
&lt;p&gt;The hub concept is pushed to your games and photos as well. My photo hub has my &quot;camera roll&quot; as well as any albums I have saved on my SkyDrive. It also will aggregate photos from my social networking accounts to provide a &quot;What&apos;s New&quot; feed of those. Even my contacts have special tiles if I want to view any photos they have recently updated. While I&apos;m not a heavy gamer, my &quot;Xbox Live&quot; games and &quot;Standard&quot; games are all in one place, and I can launch them when ready, instead of having a whole tab or folder for them.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;I&apos;m very very happy with my switch to Windows Phone 8 and my wife is getting there. I knew there would be a bit of &quot;who moved my cheese&quot;, but it hasn&apos;t been that bad. While originally my wife and I were to have different phones, some of the best features came when we grabbed the same phone system (using a &quot;tap to send&quot; a photo is so handy!).&lt;/p&gt;
&lt;p&gt;Hopefully this gives you some insights from a &quot;hands on&quot; approach to Windows Phone 8. I think you&apos;ll be happy if you switch!&lt;/p&gt;
</content:encoded></item><item><title>Dj Josiah Or Tastyfreshcom Homegrown Episode 11</title><link>https://dillieo.me/posts/development/2013-05-15-dj-josiah-or-tastyfreshcom-homegrown-episode-11/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-15-dj-josiah-or-tastyfreshcom-homegrown-episode-11/</guid><description>Dj Josiah Or Tastyfreshcom Homegrown Episode 11</description><pubDate>Wed, 15 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is the first mix I heard that got me hooked on DJ Josiah. It&apos;s 3 years old but still fresh and amazing! Give it a listen!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tastyfresh.com/podcasts/homegrown/2010/02/16/hg-episode-11-dj-josiah/&quot;&gt;Tastyfresh.com | HG Episode 11: DJ Josiah - Tastyfresh.com&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Creating Dynamicconfigurable Parameterized Queries In Entity Framework</title><link>https://dillieo.me/posts/development/2013-05-09-creating-dynamicconfigurable-parameterized-queries-in-entity-framework/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-09-creating-dynamicconfigurable-parameterized-queries-in-entity-framework/</guid><description>Creating Dynamicconfigurable Parameterized Queries In Entity Framework</description><pubDate>Thu, 09 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;EDIT: A better, refactored version of this can be found &lt;a href=&quot;/refactored-creating-dynamicconfigurable-parameterized-queries-in-entity-framework&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Entity Framework is an amazing tool. It allows you to quickly and easily get your basic queries and updates running with little hassle. In addition, you have business objects to interact with, which makes your middle tier (or your controller) that much easier to work with. However, when you need to start setting up more dynamic queries from user input, things start to get tricky. Here&apos;s a solution I created to help with that.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Within Entity Framework, you have two main forms of queries, LINQ and EntityQueries. While LINQ offers an easier &quot;visual&quot; approach to a query, we run into a bit of difficulty when we want to optionally append a lot of parameters to our WHERE clause in the query. I have done this in the past by using a syntax similar to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WHERE (@Cus_Name IS NULL OR Cus_Name LIKE &apos;%&apos; + @Cus_Name + &apos;%&apos;) AND (@Cus_City IS NULL OR Cus_City LIKE &apos;%&apos; + @Cus_City + &apos;%&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;but in this case we&apos;re working with a large number of options and would like our executing SQL query to just look for the variables we need. In that regard, we can use our EntityQuery and setup something similar to...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var sites = context.sites; 
var query = sites.Where(&quot;Cus_Id = @CusId&quot;); 
var queryParameter = new ObjectParameter(&quot;CusId&quot;, Type.GetType(&quot;System.Int32&quot;)) { Value = 5 };

query.Parameters.Add(queryParameter); var count = query.Count();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;...and work from there. To add to our simple queries, we need to remember that we&apos;re setting up a way for users to be able to query our EF context, so we also need to account for wildcard searches (Name LIKE &apos;%Jo%&apos;), multiple item searches (Id = 5 OR Id = 6), range searches (StartDate &amp;gt;= &apos;1/1/2010&apos; AND StartDate &amp;lt;= &apos;2/1/2010&apos;), and also for NULL values in our searches (TypeId = NULL).&lt;/p&gt;
&lt;p&gt;Ultimately our task is not complex (iterating through a list of parameters and setting up our query to handle them), but being able to do so in a relatively dynamic manner (minimal configuration) would allow us to reuse our code against any table/entity in our context/database. For that we need to setup a little bit of structure.&lt;/p&gt;
&lt;h3&gt;Search Parameter Object and Dictionary&lt;/h3&gt;
&lt;p&gt;To accomplish this, the first step is to create a simple object that holds all of our parameter/criteria building information.&lt;/p&gt;
&lt;p&gt;[gist]5549386&lt;/p&gt;
&lt;p&gt;You&apos;ll notice we have quite a few constructors in here. That&apos;s to make it easier to create our criteria based on our common scenarios. With this object, we then create a Dictionary collection of all the fields we want to be able to search on in our database. While it would be nice to auto-infer our search criteria, we have a few tricky situations (especially with date ranges) that require us to configure things accordingly:&lt;/p&gt;
&lt;p&gt;[gist]5549533&lt;/p&gt;
&lt;h3&gt;Building the Parameterized Query&lt;/h3&gt;
&lt;p&gt;Armed with this structure, we can now build our parameterized query with the following method:&lt;/p&gt;
&lt;p&gt;[gist]5550329&lt;/p&gt;
&lt;p&gt;Notice a few of the perks/nuances here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If there are no parameters in our collection, we simply return the existing query. This allows us to take an existing query from anywhere and not worry about what it already has in it.&lt;/li&gt;
&lt;li&gt;Since our &quot;range&quot; type queries involve two variables, we automatically look for paired parameters with a From/To name in them, parse them and generate a Range parameter for them.&lt;/li&gt;
&lt;li&gt;We also check for the empty or &quot;null&quot; value and use DBNull instead. Otherwise the parameterized query would throw an exception when it manually tried to convert the string &quot;null&quot; to NULL and it would treat empty strings differently.&lt;/li&gt;
&lt;li&gt;Parameters that are identified as allowing multiples are assumed to be pipe delimited and will be split accordingly.&lt;/li&gt;
&lt;li&gt;The method is using .Net generics for it&apos;s resulting ObjectQuery output as well as input object. This allows us to easily pass any entity from our EF Context into the method, since the parameters and search criteria are in a fixed type no matter what.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Pull Your Parameters and Go!&lt;/h3&gt;
&lt;p&gt;Now that we have all the pieces together, how do we actually build and get our query results? The first step is to get your parameters. Notice the method is expecting a NameValueCollection object for parameters. The nice thing is that by default, web postbacks will automatically take any form parameters and put them into this object. This makes it perfect for a web interface, but you can easily modify your code to generate your own NameValueCollection to work with. Once you have this, it is as simple as executing the following code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var ce = new YourEFContextObject(); 
var searchCriteria = GetSearchCriteria(); 
ObjectQuery&amp;lt;site&amp;gt; siteQuery = ce.sites; 
siteQuery = BuildObjectQuery(siteQuery, parameters, searchCriteria);

var siteCount = siteQuery.Count();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s all there is to it! If you need to work with a different entity object, you simply generate a new ObjectQuery with its entity type, make sure you have the appropriate search criteria defined (it doesn&apos;t have to be a method, I find it easier for me to structure it as such), grab your parameters, and go!&lt;/p&gt;
&lt;h3&gt;Room For Improvement&lt;/h3&gt;
&lt;p&gt;As it is with most things, there is always room for improvement here. For example, we&apos;re creating exclusive (AND) queries by default, and it would be helpful to modify the method to produce inclusive (OR) queries as well. In addition, we make the assumption of a pipe delimiter for multiple items, and we could also make that configurable.&lt;/p&gt;
&lt;p&gt;Ideally it would be nice to take a simple string name of the entity we wanted to work with and have the method generate the ObjectQuery&amp;lt;T&amp;gt; object to work with. I did a lot of digging and couldn&apos;t quite make that happen. There&apos;s some tricky work with reflection and metadata that the entity context contains, but I couldn&apos;t quite find it. Any advice is greatly appreciated on how to make this happen.&lt;/p&gt;
&lt;p&gt;All in all I&apos;m quite happy to have this structure in place. Currently I&apos;m finishing off implementing the dictionary search criteria for one entity item with about 50+ parameters that can be optionally searched on. I then have to repeat the process with another 7 or 8 tables. A couple of those tables will have more columns than the current one. With this solution, I no longer have to worry about special cases or duplicate processing. I simply generate my criteria dictionary, grab my parameters, and go!&lt;/p&gt;
&lt;p&gt;I hope this is helpful to you as well!&lt;/p&gt;
</content:encoded></item><item><title>Died Dallas Willard Divine Conspiracy Author And Philosopher</title><link>https://dillieo.me/posts/growth/2013-05-08-died-dallas-willard-divine-conspiracy-author-and-philosopher/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-05-08-died-dallas-willard-divine-conspiracy-author-and-philosopher/</guid><description>Died Dallas Willard Divine Conspiracy Author And Philosopher</description><pubDate>Wed, 08 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://blog.christianitytoday.com/ctliveblog/archives/2013/05/died-dallas-willard-divine-conspiracy-author.html&quot;&gt;Died: Dallas Willard, &apos;Divine Conspiracy&apos; Author and Philosopher&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;According to Gary Moon, executive director of the Dallas Willard Center at Westmont College, Willard &lt;a href=&quot;http://dallaswillardcenter.com/&quot;&gt;died&lt;/a&gt; early Wednesday morning, but &quot;awakened to a full experience of the reality of the Kingdom of the Heavens he described so beautifully. Fittingly, his last two words were, &quot;&apos;Thank you.&apos;&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dallas&apos; books inspired me greatly and it is sad to see him go. But given where he is now I think the quote above expresses it best.&lt;/p&gt;
</content:encoded></item><item><title>The Return Of Pete Le Freqs Dial Llama For Funk Show</title><link>https://dillieo.me/posts/development/2013-05-07-the-return-of-pete-le-freqs-dial-llama-for-funk-show/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-07-the-return-of-pete-le-freqs-dial-llama-for-funk-show/</guid><description>The Return Of Pete Le Freqs Dial Llama For Funk Show</description><pubDate>Tue, 07 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Crazy name, great house/dance mix! Go check it out!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://llamafarmrecordings.com/2013/05/07/the-return-of-pete-le-freqs-dial-llama-for-funk-show/&quot;&gt;The Return of Pete Le Freq’s Dial Llama for Funk Show&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Introducing Quoteadillieo Alpha</title><link>https://dillieo.me/posts/development/2013-05-04-introducing-quoteadillieo-alpha/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-04-introducing-quoteadillieo-alpha/</guid><description>Quote Shot</description><pubDate>Sat, 04 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What do you do when the family goes to bed early and you have a hankering to code? Write an app that will dynamically render your old tagline code as an image for use in your GMail signatures! Then you share it for the world to use!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR;&lt;/strong&gt; Need a random quote for whatever reason? Go to &lt;a href=&quot;http://quoteadillieo.aws.af.cm/generate&quot;&gt;http://quoteadillieo.aws.af.cm/generate&lt;/a&gt; and you&apos;re all set! Need it directly as an image? Use an image tag and link to &lt;a href=&quot;http://quoteadillieo.aws.af.cm/generate.png&quot;&gt;http://quoteadillieo.aws.af.cm/generate.png&lt;/a&gt; and you&apos;re golden! Please note that I&apos;m pulling from an old tagline file, and the quotes haven&apos;t been filtered out yet for any potential non work friendly tags.&lt;/p&gt;
&lt;p&gt;Such is the case with Quote-a-Dillie-O! I&apos;ve been a long fan of the taglines from my old BBS days (QWKMail users unite!) and have been using their taglines off and on. However, I wanted a simple way to render them in my GMail signatures without calling a local script to randomly search a file.&lt;/p&gt;
&lt;p&gt;So thanks to a little &lt;a href=&quot;http://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt;, a little &lt;a href=&quot;http://www.imagemagick.org/&quot;&gt;ImageMagick&lt;/a&gt;, and a little &lt;a href=&quot;https://github.com/citrus/magick_title&quot;&gt;Magick Title gem&lt;/a&gt;, everything is up and running. Oh, and a little &lt;a href=&quot;http://foundation.zurb.com&quot;&gt;Zurb&lt;/a&gt; for layout and &lt;a href=&quot;http://appfog.com&quot;&gt;App Fog&lt;/a&gt; to put the magic online.&lt;/p&gt;
&lt;p&gt;Are you interested?! Go for it! Simply go to the following URL:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://quoteadillieo.aws.af.cm/generate&quot;&gt;http://quoteadillieo.aws.af.cm/generate&lt;/a&gt;...and you can grab what you need. Simply refresh to get a new quote.&lt;/p&gt;
&lt;p&gt;The best part with the Ruby formatting (and most importantly) is that you can get a direct image to embed in your GMail signature (or anywhere that accepts image URLs). To do that, call our PNG link:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://quoteadillieo.aws.af.cm/generate.png&quot;&gt;http://quoteadillieo.aws.af.cm/generate.png&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And you can see things like this!&lt;/p&gt;
&lt;p&gt;Finally, if you&apos;re feeling experimental, you can get the quote text in raw JSON format:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://quoteadillieo.aws.af.cm/generate.json&quot;&gt;http://quoteadillieo.aws.af.cm/generate.json&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let me know if you do something fun with that.&lt;/p&gt;
&lt;p&gt;Please note that the quotes themselves are from some old QWK Mail tagline files, and some may not be work appropriate, so simply refresh if you need another. 8^D&lt;/p&gt;
&lt;p&gt;I&apos;ll add stuff as I can, but wanted to share love.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Peel Frozen Bananas</title><link>https://dillieo.me/posts/growth/2013-05-03-quick-tip-how-to-peel-frozen-bananas/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-05-03-quick-tip-how-to-peel-frozen-bananas/</guid><description>Banana Start</description><pubDate>Fri, 03 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bananas that are a little too ripe to eat are GREAT for smoothies or banana bread. You can freeze them and use them when you need to. However, when it comes time to peel these frozen bananas, you either freeze your fingers off or make a mess (or both). Here&apos;s a trick I use to make this quick and painless.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step is to simply pull your bananas out of the freezer and let them sit on the counter for about 3 to 5 minutes. This allows the banana enough time to soften up to cut, but still be frozen enough that things can come off as a whole. I often cut my banana in half at this point in time. I optionally cut off the tips. I&apos;m not sure why, it just seems to help.&lt;/p&gt;
&lt;p&gt;Next, you&apos;ll want to score the banana on both sides. You don&apos;t need to cut all the way through, but enough to get past the peel and into the banana.&lt;img src=&quot;@assets/images/posts/2013-05-imag0164.jpg&quot; alt=&quot;Banana Scoring&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, take your knife and wedge it in between the peel and banana at the entry point of the scoring. Gently pull the banana away from the peel, and things should come right off. Sometimes I make a cutting motion with the knife as I work it around. By scoring both sides of the banana, you typically have half the peel fall off and the second comes off just as simple.&lt;img src=&quot;@assets/images/posts/2013-05-imag0165.jpg&quot; alt=&quot;IMAG0165&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it! Quick and easy frozen banana peeling. No mess or frozen fingers!&lt;/p&gt;
&lt;p&gt;Go make some smoothies!&lt;/p&gt;
</content:encoded></item><item><title>Mac Vs Windows Your Best Arguments</title><link>https://dillieo.me/posts/growth/2013-05-01-mac-vs-windows-your-best-arguments/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-05-01-mac-vs-windows-your-best-arguments/</guid><description>Mac Vs Windows Your Best Arguments</description><pubDate>Wed, 01 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is the first &quot;civil flame war&quot; in a long time and it is well outlined. I&apos;m stuck in the middle these days 8^D&lt;/p&gt;
&lt;p&gt;Lifehacker: &lt;a href=&quot;http://lifehacker.com/mac-vs-windows-your-best-arguments-486125257&quot;&gt;Mac vs. Windows: Your Best Arguments&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The New Digitally Imported</title><link>https://dillieo.me/posts/development/2013-05-01-the-new-digitally-imported/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-05-01-the-new-digitally-imported/</guid><description>The New Digitally Imported</description><pubDate>Wed, 01 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://new.di.fm/&quot;&gt;Digitally Imported - Addictive Electronic Music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new layout and easy access to their channels is stellar! Well done Digitally Imported!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Bulk Edit Post Formats In Wordpress</title><link>https://dillieo.me/posts/growth/2013-04-29-quick-tip-bulk-edit-post-formats-in-wordpress/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-04-29-quick-tip-bulk-edit-post-formats-in-wordpress/</guid><description>Wordpress XML</description><pubDate>Mon, 29 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you may have noticed, I recently merged my photo blog and quote blog here into my main blog. As part of that process, I wanted all of my photos to use the &quot;gallery&quot; post format to take advantage of its display options in the new twenty thirteen theme. When you&apos;re in the main post editor, there&apos;s not way to &quot;bulk edit&quot; post formats. Here&apos;s a &quot;back door&quot; trick on how to get it done.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;WARNING: I should express that this was a quick trick that I used for a small amount of posts (less than 500) and wasn&apos;t too worried if things went crazy. I don&apos;t know how this will work on larger scale blogs or XML files, so please use caution. I highly recommend the &lt;a href=&quot;http://wordpress.org/extend/plugins/backwpup/&quot;&gt;backwpup plugin&lt;/a&gt; to back up your blog before proceeding.&lt;/p&gt;
&lt;p&gt;The trick to do this is to use the import/export tools found in WordPress and change the post format there. The first step is to export your blog into XML/WXR format that WordPress provides. This will give you all posts, pages, and feedback. You can do this through the Tools-&amp;gt;Export option.&lt;/p&gt;
&lt;p&gt;From there you need to open up the XML file in a text editor (my favorites are &lt;a href=&quot;http://www.barebones.com/products/textwrangler/&quot;&gt;TextWranger&lt;/a&gt; for Mac and &lt;a href=&quot;http://notepad-plus-plus.org/&quot;&gt;Notepad++&lt;/a&gt; for PC). From there, you&apos;ll need to do a little digging. You&apos;re looking for the tag that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;category domain=&quot;post_format&quot; nicename=&quot;XXX&quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Typically it is found after the &lt;code&gt;&amp;lt;wp:is_sticky&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;
&lt;p&gt;From there, simply change the nicename property to whatever you&apos;d like. For me, I changed it to &quot;post-format-gallery&quot; and saved it under a different name (to preserve my original backup). If you do it right, you can use a global search and replace to update all of your tags. Similarly, if you need to add the tag for posts not previously defined with a post format, you can script up some macros as needed.&lt;/p&gt;
&lt;p&gt;After you&apos;ve saved your document, simply use the Tools-&amp;gt;Import feature to import your XML file. Depending on the size of your XML file, this may take a while. You can always refresh your posts section to verify the update, or wait for the e-mail that will be sent to you when the import is complete.&lt;/p&gt;
&lt;p&gt;Once complete, take a peek at your posts in the administrator panel and see the results:&lt;img src=&quot;@assets/images/posts/2013-04-wordpressupdate.png&quot; alt=&quot;Wordpress Update&quot; /&gt; That&apos;s all there is to it!&lt;/p&gt;
&lt;p&gt;One added bonus, it appears that this technique will match up title/timestamp/something and update existing posts that match, as opposed to duplicating them. When I first ran the import I accidentally imported my photos using the image format. Since it was easier to bulk delete posts, I figured I&apos;d do a second import and then clean up my mess. Much to my surprise, I didn&apos;t have duplicate imported posts, but updated existing posts.&lt;/p&gt;
&lt;p&gt;I hope this helps! Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Why God</title><link>https://dillieo.me/posts/development/2013-04-29-why-god/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-04-29-why-god/</guid><description>Why God</description><pubDate>Mon, 29 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://thegoodbookblog.com/2013/apr/29/why-god/&quot;&gt;Why, God?&lt;/a&gt;. - Great insights here.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://thegoodbookblog.com/2013/apr/29/why-god/&quot;&gt;Why, God?&lt;/a&gt;. - Great insights here.&lt;/p&gt;
</content:encoded></item><item><title>The Airplane Apprentice</title><link>https://dillieo.me/posts/growth/2013-04-28-the-airplane-apprentice/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-04-28-the-airplane-apprentice/</guid><description>The Airplane Apprentice</description><pubDate>Sun, 28 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Jen:&lt;/strong&gt; Wow Rylee, you did a great job of (teaching me how to make a paper airplane)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Yes, and I have taught her well, my young apprentice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rylee:&lt;/strong&gt; Oye!&lt;/p&gt;
</content:encoded></item><item><title>Dillieo Delights Quintessential Jazz</title><link>https://dillieo.me/posts/development/2013-04-23-dillieo-delights-quintessential-jazz/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-04-23-dillieo-delights-quintessential-jazz/</guid><description>Verve Jazz Masters 20</description><pubDate>Tue, 23 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While on the road to my &lt;a href=&quot;/kotei-report-tucson-az&quot;&gt;L5R Kotei&lt;/a&gt; this weekend, one of my friends commented that they were interested in jazz, but didn&apos;t have much to work off of except for soundtrack being used on one of his favorite shows. So I started thinking, &quot;How can I give my friend a good introduction to jazz without overwhelming him?&quot; As a result, I came up with the following collection that covers most of your bases, and I threw in a couple of favorites for kicks.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Give a listen while you read...&lt;/p&gt;
&lt;h2&gt;Verve Jazz Masters&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;![Verve Jazz Masters 20]](@assets/@assets/images/posts/2013-04-verve_jazz_masters_20.jpg)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;During the early years of jazz, the Verve record label was the predominant label for jazz legends. To that extent, they released an entire &quot;Jazz Masters&quot; series. Among the series (which spans a good 60 albums) are two &quot;compilation&quot; albums that give you a great exposure to the variety of artists over time. I&apos;ve had these for a while and they are fabulous. We&apos;ll toss those in.&lt;/p&gt;
&lt;h2&gt;Blue Note Records&lt;img src=&quot;@assets/images/posts/2013-04-best_blue_note_album.jpg&quot; alt=&quot;Best Blue Note Album&quot; /&gt;&lt;/h2&gt;
&lt;p&gt;Looking towards the modern era of Jazz, Blue Note records stands out as the dominant label. While they don&apos;t have a &quot;masters&quot; series, they have a great 2 disc album humbly called &quot;The Best Blue Note Album In the World...Ever!&quot; Indeed it is a fabulous album. You get some of the newer vocals by Bobby McFerrin and the fusion styling of Us3 with the well known &quot;Cantaloop (Flip Fantasia).&lt;/p&gt;
&lt;h2&gt;A Few Favorite Albums and Tracks&lt;/h2&gt;
&lt;p&gt;With the 4 discs worth of music above, I think anybody looking to get a solid foot in the door will get a wonderful exposure to jazz that spans it&apos;s entire lifetime up to this point. That said, I wouldn&apos;t be doing my friend justice if I didn&apos;t toss a couple of personal favorites into the mix.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;@assets/images/posts/2013-04-chick_corea_works.jpg&quot; alt=&quot;Chick Corea Works&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;@assets/images/posts/2013-04-ellington_armstrong_summit.jpg&quot; alt=&quot;Ellington Armstrong Summit&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Chick Corea makes some amazing fusion jazz that shows you that your typical ensemble is not necessary. He pioneered the use of the &quot;electric piano&quot; in jazz music in the 70s. I particularly love his album &quot;Works&quot; because he uses a variety of stringed instruments (cello, violin, etc.) to make some wonderful jazz on top of his classic electric piano sound. &quot;La Fiesta&quot; (the last track on the album) is particularly wonderful and I can&apos;t help but dance every time I hear it.&lt;/p&gt;
&lt;p&gt;Duke Ellington (my all time favorite) and Louis (Louie) Armstrong are two of the godfathers of jazz and their music and composition are still highly influential today. So what happens when the two of them get together to make an album? It is nothing short of pure beauty. You can see the distinctive styles of each artist separately and together that make magic.&lt;/p&gt;
&lt;p&gt;Finally, here are a few of my all time favorite tracks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Duke Ellington&apos;s &lt;em&gt;Caravan&lt;/em&gt; - This was quite honestly the very first jazz track I heard that made me fall in love with jazz. Juan Tizol&apos;s enchanting use of the trombone, followed in with Johnny Hodge&apos;s swinging saxophone, all done in a the classic Ellington arrangement is pure genius.&lt;/li&gt;
&lt;li&gt;Dizzy Gillespie&apos;s &lt;em&gt;Manteca&lt;/em&gt; - Aside from the amazingly huge cheeks, Gillespie opened my eyes out of the &quot;traditional&quot; jazz/swing genre into AfroCuban and Bebop styles that he helped pioneer. I can remember playing this track on an old cassette recorder until it nearly broke.&lt;/li&gt;
&lt;li&gt;Duke Ellington&apos;s 1956 Newport Performance - Part of this is due to the sheer folklore of the performance, part of it is just because it is THAT GOOD! The complete story behind Ellington&apos;s performance can be found &lt;a href=&quot;http://en.wikipedia.org/wiki/Ellington_at_Newport&quot;&gt;here&lt;/a&gt;, but the bottom line is that he got people up and dancing in the crowds thanks to Paul Gonsalves&apos; 27 bar open solo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Wrap It Up and Listen!&lt;/h2&gt;
&lt;p&gt;Thanks to the magic of the Internet, this entire collection I&apos;ve outlined is available in one nice &lt;a href=&quot;http://grooveshark.com/playlist/Dillie+O+Delights+Quintessential+Jazz/85670181&quot;&gt;playlist&lt;/a&gt; over on &lt;a href=&quot;http://grooveshark.com&quot;&gt;GrooveShark&lt;/a&gt;. Let me know if you think there should be anything to add.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Kotei Report Tucson Az</title><link>https://dillieo.me/posts/development/2013-04-22-kotei-report-tucson-az/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-04-22-kotei-report-tucson-az/</guid><description>Omigawa</description><pubDate>Mon, 22 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of my hobbies is playing a &lt;a href=&quot;http://en.wikipedia.org/wiki/Collectible_card_game&quot;&gt;CCG&lt;/a&gt; (collectible card game) called &quot;&lt;a href=&quot;http://l5r.com&quot;&gt;Legend of the Five Rings&lt;/a&gt;&quot;. There&apos;s a lot of strategy involved, plus cool samurai and ninjas. 8^D I prefer to play the Monk/Kensai out of the Spider clan. They&apos;re the nice evil monks that get two wield two weapons and do lots of fiendish mayhem (see avatar above 8^D). Fortunately I was able to go to a tournament this weekend with some of the friends I play with at the local card shop. As is somewhat customary in the forum I frequent, here is a tournament report, for those interested.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I left my homestead at 5:15 in the morning, armed with my deck, a trade binder, a sandwich, some snacks, and some fresh coffee for one of my friends since they were driving. I&apos;m a little tired from a long night since one of kids is a little sick, but I&apos;m excited for the day.&lt;/p&gt;
&lt;p&gt;I make it to my friends&apos; house and switch cars. She enjoys the coffee and get husband cracks up the tunes. It&apos;s amazing how much more you can get to know people by simply discussing books and music on a 3+ hour drive.&lt;/p&gt;
&lt;p&gt;We have to write out deck lists this time, so a lot of the opening chatter is silent as people are filling things out. I&apos;m a bit superstitious about my deck, so I take extra time to write out the deck by memory and search through the deck to find things instead of sorting things out. I met up with a guy playing spider who is getting back into the game. We discuss some tactics and wish each other luck.&lt;/p&gt;
&lt;p&gt;Round 1: Mantis (Kalani&apos;s Landing)&lt;/p&gt;
&lt;p&gt;I don&apos;t quite have the start I&apos;d like. Two border keeps and I only have a Jungle Stockade to show for it. With all the money my opponent has I need to try something. I make an early push with two guys and pop a province. I have a Sugihara come out and give him a Wyrmbone, so I feel good. On his turn he hits the event that allows him to blow up the province and kill a guy. Farewell Sugihara. He has that evil seductress who proceeds to take Omigawa with a weapon (I hate her in my friends deck 8^D). I&apos;m defeated shortly after. (0-1)&lt;/p&gt;
&lt;p&gt;Round 2: Scorpion dishonor&lt;/p&gt;
&lt;p&gt;I get platinum mine on turn 1 (always my best bet) and get Hotako out on turn two. Perfect setup against dishonor. While he&apos;s doing some good honor reduction, Hotako is mitigating a lot of potential damage and I even see Yamazaki XP in there too. Victory is mine. (1-1)&lt;/p&gt;
&lt;p&gt;Round 3: Lion&lt;/p&gt;
&lt;p&gt;I forget his stronghold, but essentially he gets two terrains in play. I have probably the most wonderful opening in my life. Turn 1 I have my Platinum mine, with a Yamazaki, Marsh, and Jungle Stockade waiting. I also have a lovely hand. He gets out a couple of avairy regions. Turn two I have Yamazaki with a free nightingale blade and good gold. He swings on turn 3 with a lion and two birds. I defend adjacent and use my never beyond my reach to kill his lion and stymie his attack. As he sits slightly baffled, I follow up with a retribution and with the +1 force Yamazaki grabs a province. He&apos;s looking a little crushed. Sadly my turn 3 I have nothing but holdings. Since I&apos;m running XP I can&apos;t refresh the dynasty cards and he gets a little wind back in his wings.&lt;/p&gt;
&lt;p&gt;After this there&apos;s a bit of back and forth. I&apos;m down to one province and him two (retribution was key again) , but he has about half of his personalities bowed from battle, so now is the time to strike. I move in and take one province easily but the second is most tricky. He moves my Tetsuo XP home and I hang on to my ring of water to move in at the last minute to win. Big mistake. After I kill another dude, he drops the terrain, that prevents a by move in or move out, and my Renyu&apos;s Wrath hasn&apos;t shown up at all. Omigawa can&apos;t beat people home and Tetsuo can&apos;t come to the rescue. Ultimately I win the battle, but not the province, but he had a large amount of folks next turn that I can&apos;t stop (and those double terrains!). (1-2)&lt;/p&gt;
&lt;p&gt;Lunch&lt;/p&gt;
&lt;p&gt;When you win a free loaf of french bread and your wife had just restocked the refrigerator, you make a huge hoagie sandwich, &apos;nuff said 8^D I was able to chat with another friend from our local crew who drove separately and catch up with a guy I&apos;ve seen at previous tournaments. I also had the opportunity to sample a &lt;a href=&quot;http://en.wikipedia.org/wiki/Century_egg&quot;&gt;Chinese preserved duck egg&lt;/a&gt; (thousand year egg). Not much taste to it, but I thank &lt;a href=&quot;http://en.wikipedia.org/wiki/Andrew_Zimmerman&quot;&gt;Andrew Zimmerman&lt;/a&gt; for inspiring me to try new bizarre things with an open mind 8^D&lt;/p&gt;
&lt;p&gt;Round 4: Unicorn Shugenja&lt;/p&gt;
&lt;p&gt;With a full stomach and a desire to even up my score, I jump into round 4. My opening turns are rather slow, but my opponent doesn&apos;t seem to be doing much. He is equipping spells, but not attacking. I decide to take a swing at a province with two guys and plenty in reserve, and don&apos;t see any resistance. This progresses for a few more turns and I win easily. My opponent looks a little frustrated afterward so I surmise his decl want running as he wanted and we don&apos;t have the typical chatter after a match. I do compliment him on his Steve Argyle play mat (I mean come on, he does amazing stuff!) and that lightens his mood a little. (2-2)&lt;/p&gt;
&lt;p&gt;Round 5: Unicorn Commanders&lt;/p&gt;
&lt;p&gt;Back on even standings, I have a solid chance at beating my 2010 kotei record of 4-3 in Irvine. Next up is a commander deck with lots of big followers. I met this guy earlier in the day since he&apos;s friends with the friends I drove down with, so if should be a fun match. My turn 1 I hit about all of my events that are of no importance (on, formal apology, alter history) but I do flip Glory of the Shogun, so this will be quite helpful. Then the crazy thing happens, he flips his own copy and now we&apos;re looking at a two card draw when we put on our big attachments, plus we can do it in battle now. Fun stuff.&lt;/p&gt;
&lt;p&gt;Soon after he gets Moto Taigo and he is a stubborn bloke. With cavalry, a follower, and a weapon he sleazes a province early and then gets to go home straightened to defend. Early on I send Sugihara and Dread Jar in with no avail. I have plenty of draw and kill actions, but not quite enough to handle the bow actions that negate the first straightening (need a cleansing breath and an again to handle it) and so Taigo lives another day.&lt;/p&gt;
&lt;p&gt;Eventually we hit &quot;epic card battle phase&quot;. I was down to one province with two personalities and he had 4. If I could make it through the battle (especially getting rid of Taigo) I could swing momentum in my direction at the very end and take the win. In a battle that surprised both of us, I fought tirelessly. Between two copies of Again, a copy of A Cleansing Breath, Hundred Fold Cut to draw cards, equipping in battle for get another two cards, I was relentless! My opponent couldn&apos;t believe all the times my bowed monks came back up to fight, and how many times I was able to kill off the plethora of followers thanks to multiple actions. We had gathered a small following since we were almost out of time and lots of cards were being dropped down into battle. To quote an old scoundrel, &quot;Sometimes I amaze even myself.&quot;&lt;/p&gt;
&lt;p&gt;Sadly though, it was Unexpected Support and the negation of the next straightening that did me in again. Having to play two straightening actions in order to play several of my cards that required straightened performing Monks exhausted my resources. It was with a firm handshake and respect on both sides of the table that I lost this match, and had a whole heap of fun doing it. (2-3)&lt;/p&gt;
&lt;p&gt;Round 6: Phoenix Monks&lt;/p&gt;
&lt;p&gt;Not to be discouraged by my last loss, I start up my next match against a Phoenix player. I had heard some wicked things about Phoenix honor running and the -4 force that can&apos;t be negated didn&apos;t frighten me, but did put remind me I&apos;d need to do a little more work to grab provinces. I kept my Hotako at the ready to come out instead of flushing her.&lt;/p&gt;
&lt;p&gt;However, I was mistaken at the deck type as the next action that occurs is he brings out a Asako Karachu with an insane trait to always straighten himself after bowing. With a Thoughts of Wind he sleazes a province, but then gets straightened and goes home. I think this will prove intriguing as I get a personality or two out with some weapons. However, following that he starts playing some really interesting control elements: popping my weapons down to the bottom of the deck or destroying them during the actions phase (where are you Near Miss?!) and brings out a couple of monks that allow them to swap force and chi, so my big beefy evil monks are now simply heavily enlightened instead of insanely strong. This progresses over several turns and there is not enough strength at my disposal to make a decent run on a province. With the -4F non-negatable, my Retributions aren&apos;t able to be run either.&lt;/p&gt;
&lt;p&gt;Our game progresses with not a lot happening. We do have a lot of battles, and with my remaining strategies/actions I&apos;m able to keep provinces from getting popped at the cost of my personalities. Weapons are getting destroyed (still no Near Miss!) so I have nothing to really fight back with. As we approach the time limit (double losses are no fun for anybody) I go ahead and concede this match because he has done a fantastic job with an able of control I had never seen and I think eventually he would amass enough force to start taking provinces. If time was of no consequence I&apos;d obviously keep going (I&apos;ve pulled off plenty of wins after an opponent has depleted their resources against my resilient monksai) but that&apos;s not the case here. (2-4)&lt;/p&gt;
&lt;p&gt;Round 7: Phoenix Shugenja&lt;/p&gt;
&lt;p&gt;Final round of the day. i&apos;m far from making a cut but that doesn&apos;t mean I pack up my stuff and go home. I&apos;m playing this match just as strong as any other. I&apos;m playing the friend of the Unicorn guy from round 5, so I&apos;ve already seen him around and we&apos;re on good terms. This is nice because often enough at the end of the day us &quot;bottom bracket&quot; folks can get rather grumpy.&lt;/p&gt;
&lt;p&gt;There&apos;s not a lot to say about this match. He gets Tsukimi out on turn 2, so I make sure to keep proper distance until my Monks are properly beefed up. He takes an early province, but I swing back with a Retribution and he&apos;s afraid to have his weaker shugenja defend with all my weapons and the fiendish mayhem they like to bring. 8^D The monksai start to do what they do best between solid card/weapon cycling and lots of actions, so I take the win after a few more turns (3-4).&lt;/p&gt;
&lt;p&gt;Interesting Thoughts:&lt;/p&gt;
&lt;p&gt;Spider Fever: With 50 at the Kotei, I believe 8 were Spider! Sadly I didn&apos;t get to see them all, but when I checked at round 6, there were at least 2 in the top 8 and 2 had been undefeated.&lt;/p&gt;
&lt;p&gt;Most Reliable: Open with Platinum Mine on turn 1 and Yamazaki/Jungle Stockade turn 2. This gave me plenty of gold for personalities and weapons.&lt;/p&gt;
&lt;p&gt;Most Overestimated Card: No Hiding Place. I honestly thought I would see a lot more honor/dishonor match ups and this card helped a lot in local testing, but I ran up against 1 match that way. The card wasn&apos;t completely useless, as it gave me something to discard for Bamboo Harvesters XP and I did a little sniping on at home personalities, but I could have potentially put something else in. Ahh, that&apos;s meta for you. 8^D&lt;/p&gt;
&lt;p&gt;Bench Warmers: Makito XP, Daigotsu Gyoken, Fukuzo, Daigotsu Kanpeki- I always saw them too early, or when I needed more gold stuff&lt;/p&gt;
&lt;p&gt;Most Interesting Card: Natural Aviary. There were a ton of decks that were using this region. I can see how attachments are big, but I went up against a lot of decks using this card and hadn&apos;t seen it before.&lt;/p&gt;
&lt;p&gt;Lesson Learned: I needed a bit more attachment meta as opposed to honor/dishonor meta. I did have Nightingale Blade, but most folks saw it coming and were working against it. With a lot of my kill actions requiring no attachments, I could have put a little more in there I think to combat that.&lt;/p&gt;
&lt;p&gt;Gamer Attitude: I&apos;ll admit I don&apos;t go to a lot of Koteis, but has the general attitude of gamers at the Kotei changed? I bring up two instances.&lt;/p&gt;
&lt;p&gt;1. There was a &quot;sportsmanship prize&quot; given out this Kotei by AEG. Since a couple of representatives were there, they indicated come talk to them after the match if your opponent showed particularly good sportsmanship. This could simply be something new/fun to add to the tournament, but who knows.&lt;/p&gt;
&lt;p&gt;2. A guy came up to me in between matches and asked me &quot;Are you mormon?&quot; I responded &quot;No, why do you ask?&quot; He said, &quot;Because you&apos;re here all clean cut and happy like here and I was curious.&quot; Sadly we didn&apos;t get to discuss the matter further after that because pairings were posted, but I found it interesting nonetheless. 8^D&lt;/p&gt;
&lt;p&gt;Final Thoughts:&lt;/p&gt;
&lt;p&gt;All in all I think this was my best overall Kotei to date. My record wasn&apos;t the best, but I knew my deck far better than last year and I think a couple of matches I lost were due to my opponent getting lucky with some good cards at the right time (hey, there is still luck to this game right?) I met some new friends, connected with some old friends, and made it back at a decent enough hour to enjoy the following morning with my kids without being a zombie. 8^D Plus as a &quot;team&quot; we picked up some good swag:&lt;/p&gt;
&lt;p&gt;One guy won the &quot;enlightenment&quot; bingo prize by winning a match via enlightenment. He got the Second City card promos that came in the SC RPG book. I hear they aren&apos;t half bad.&lt;/p&gt;
&lt;p&gt;Another guy went 4-3 and picked up a Gempuku set for his clan (and some Steve Argyle signed ring cards) for conceding a match to help his opponent make top cut. To add to his joy he beat the guy with his deck when they played.&lt;/p&gt;
&lt;p&gt;Our &quot;battle maiden&quot; of the group went up against an AEG employee in her second to last match. She chose wisely and received a sealed box of Forgotten Legacy as a prize.&lt;/p&gt;
&lt;p&gt;Me? I finally traded for my third Wyrmbone Katana I&apos;ve been trying to get my hands on for a while.&lt;/p&gt;
&lt;p&gt;If you made it this far, thanks for reading!&lt;/p&gt;
&lt;p&gt;Utz! Banzai!!!&lt;/p&gt;
</content:encoded></item><item><title>How To Run Php Applications In Visual Studio 2012</title><link>https://dillieo.me/posts/development/2013-04-17-how-to-run-php-applications-in-visual-studio-2012/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-04-17-how-to-run-php-applications-in-visual-studio-2012/</guid><description>A PHP app launched from Visual Studio 2012</description><pubDate>Wed, 17 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: This post comes as a HT to &lt;a href=&quot;http://stackoverflow.com/questions/6099143/enabling-php-on-iis-express-with-visual-studio-sans-webmatrix&quot;&gt;this StackOverflow question&lt;/a&gt;, I&apos;m just tweaking a few things to accomodate for VSMMXII...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m working on a project to convert a PHP application to a .Net MVC application. The initial prototype has some nice bootstrap/highcharts functionality, so I want to preview the site locally as I&apos;m migrating the code over. Instead of starting up or installing a new editor, I wanted to take advantage of &lt;a href=&quot;http://www.iis.net/&quot;&gt;IIS Express&lt;/a&gt; that comes with Visual Studio 2012 to run the app. It&apos;s really easy to setup and here&apos;s how to do it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;1. Download PHP&lt;/h2&gt;
&lt;p&gt;You can get a windows optimized version from &lt;a href=&quot;http://windows.php.net/&quot;&gt;http://windows.php.net&lt;/a&gt;. Following the documentation, make sure to get the Non-Thread Safe version since we&apos;re working with IIS. After downloading the file, extract it to your &quot;C:\Program Files (x86)&quot; folder or wherever you find convenient.&lt;/p&gt;
&lt;h2&gt;2. Map FastCGI to your PHP location&lt;/h2&gt;
&lt;p&gt;With previous versions of Visual Studio / IIS Express, you needed to update your configuration files, but with Visual Studio 2012, all of this has been taken care of for you! The only thing you need to do is let FastCGI know where your PHP executables are by running the following commands from the command prompt (not PowerShell):&lt;/p&gt;
&lt;p&gt;[gist]5405986&lt;/p&gt;
&lt;p&gt;Note that the quotes are specific to the command prompt. You may need to update your path to PHP depending on where you extracted it to.&lt;/p&gt;
&lt;h2&gt;3. Create an Empty Visual Studio Web Application&lt;/h2&gt;
&lt;p&gt;Yes, this step sounds confusing, even if you already have your PHP site code. Visual Studio won&apos;t let you create a basic web application solution in an existing folder, so I create an empty Web Application project file.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-04-visualstudio_php_project.png&quot; alt=&quot;Visual Studio Empty Web Application Project&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;4. Add your PHP Files.&lt;/h2&gt;
&lt;p&gt;Once the project is created, copy all of your files into the project folder. Then, make sure your project is set to view all files, and click the refresh icon. You&apos;ll see all of your PHP files and you can right click on them and specify &quot;Include in Project&quot;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-04-visual_studio_addfiles.png&quot; alt=&quot;Visual Studio Add PHP Files&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;5. Configure Web Application Startup Parameters&lt;/h2&gt;
&lt;p&gt;The final step is to configure the startup parameters for your site. Right click on your project name in the Solutions Explorer, select &quot;Properties&quot;, and then select the &quot;Web&quot; tab on the left hand side in the properties window. Change the &quot;Start Action&quot; option to be &quot;Specific Page&quot; and enter &quot;index.php&quot; or whatever your starting page needs to be. In addition, make sure that the &quot;Servers&quot; option is set to use the &quot;Local IIS Web Server&quot; and that IIS Express is selected. Make sure to save your options before closing the window.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-04-visualstudio_project_settings.png&quot; alt=&quot;Visual Studio Project Settings&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;6. Build and Run!&lt;/h2&gt;
&lt;p&gt;Technically there&apos;s nothing to build, but hit CTRL+F5 to start the project without debugging. This will launch IIS Express and start up your index file! You&apos;re all set. If you want you can use Visual Studio to edit your PHP code as needed, but without additional plugins, you won&apos;t have all the extra intellisense helpfulness.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Naturals Electrolyte Drink</title><link>https://dillieo.me/posts/tips/2013-04-03-naturals-electrolyte-drink/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2013-04-03-naturals-electrolyte-drink/</guid><description>Naturals Electrolyte Drink</description><pubDate>Wed, 03 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m getting ready to run a Ragnar in July, and my wife found this amazing drink I&apos;ve been having after my training runs. It really seems to help, and isn&apos;t overloaded with anything you don&apos;t need. Try it out!&lt;/p&gt;
&lt;p&gt;I&apos;m getting ready to run a Ragnar in July, and my wife found this amazing drink I&apos;ve been having after my training runs. It really seems to help, and isn&apos;t overloaded with anything you don&apos;t need. Try it out!&lt;/p&gt;
</content:encoded></item><item><title>How To Get Netgear Readyshare To Work With Time Machine And Mountain Lion Mavericks Too Oh And El Capitan</title><link>https://dillieo.me/posts/development/2013-03-27-how-to-get-netgear-readyshare-to-work-with-time-machine-and-mountain-lion-mavericks-too-oh-and-el-capitan/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-03-27-how-to-get-netgear-readyshare-to-work-with-time-machine-and-mountain-lion-mavericks-too-oh-and-el-capitan/</guid><description>ReadyShare Final Result</description><pubDate>Wed, 27 Mar 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Note: I just upgraded to OSX Mavericks (10.9) and the ReadyShare drive is still readable and functional in Time Machine. You shouldn&apos;t run into any trouble if you decide to upgrade. If you do run into problems (I did later on), I have some notes below to help.&lt;/p&gt;
&lt;p&gt;Over the weekend I purchased a Netgear DGND3700v2 DSL Modem / Router (N600) and discovered that there was a great feature called ReadyShare. This allowed you to plug a USB drive into it and have it shared across all your computers in the network (music, photos, backup, etc.) However, their documentation to get it to work with OSX&apos;s Time Machine backup tool wasn&apos;t working. After some digging and tweaking, I managed to make it work.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;TL;DR (For those of you that want the quick fix);&lt;/h2&gt;
&lt;p&gt;Use Fat32 (might be listed as simply FAT in newer versions of Disk Utility) partitions for all your partitions since the router will be able to read them. From there, create a sparse bundled disc image on the partition for your Time Machine backup. Mount it, and then set that to be your Time Machine backup source.&lt;/p&gt;
&lt;h2&gt;The Setup&lt;/h2&gt;
&lt;p&gt;I&apos;m running a MacBookPro with Mountain Lion (OSX 10.8.3). I have a &lt;a href=&quot;http://www.netgear.com/home/products/wirelessrouters/high-performance/wndr3700.aspx&quot;&gt;Netgear DGND3700v2&lt;/a&gt; DSL Modem / Router (N600) with firmware version 1.1.00.12_1.00.12NA and a Western Digital Elements 1.5 TB Drive. Getting things to work for you may vary slightly based on drive/hardware, but I this approach should work.&lt;/p&gt;
&lt;h2&gt;Formatting the Drive&lt;/h2&gt;
&lt;p&gt;The first step is to format the drive. According to the &lt;a href=&quot;http://kb.netgear.com/app/answers/detail/a_id/21360/~/how-to-setup-time-machine-with-your-netgear-router&quot;&gt;documentation&lt;/a&gt;, the router is supposed to be able to support OSX Extented (Journaled) partitions, but I could never get them to show up. According to some various discussion threads, the AFP protocol changed somewhere in Lion and there&apos;s still no support since Netgear does some custom interaction with the shares. However, ReadyShare DOES support Fat32 and we can make this work on OSX.&lt;/p&gt;
&lt;p&gt;The first step is to plug in your USB drive and backup any data you may want to keep on your USB drive. We have to repartition the drive, and you&apos;ll lose everything. Next launch the Disk Utility tool, select the USB drive, and click the &quot;Partition&quot; tab.&lt;/p&gt;
&lt;p&gt;Change the drop down from &quot;Current&quot; to whatever partition scheme you want (I&apos;m using two). Change the drive formats to be &quot;MS-DOS (Fat32)&quot; and verify that they are being created using the &quot;Master Boot Record&quot; scheme (under options). Note, that with El Capitan the option now simply reads MS-DOS (Fat). Major HT to James B and Jon for helping debug this one in the comments.&lt;/p&gt;
&lt;p&gt;One other important note, and this comes from Fernando who commented below:&lt;/p&gt;
&lt;p&gt;One very important thing I did not see in the instructions is to make sure the backup image has the option to “Ignore ownership on this volume” set to OFF or unchecked. Apple warns that using Time Machine on a disk with the option turned on can result in the backups missing some user settings. My guess is that the average person is likely to go on without noticing this until it is too late. (!!)&lt;img src=&quot;@assets/images/posts/2013-03-readyshare_drivepartition.png&quot; alt=&quot;ReadyShare Drive Partition Setup&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2013-03-readyshare_drivepartition_options.png&quot; alt=&quot;ReadyShare Drive Partition Options&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once your options are set. Click the &quot;Apply&quot; button to repartition the drive. This make take a little time based on the size of the drive.&lt;/p&gt;
&lt;h3&gt;Creating the Time Machine Image&lt;/h3&gt;
&lt;p&gt;Time Machine requires an OSX Extended (Journaled) partition in order to function properly. While we don&apos;t have a drive in this format, I discovered (immense HT to &lt;a href=&quot;http://forum1.netgear.com/showthread.php?p=424550&quot;&gt;Frank&lt;/a&gt; over in the Netgear forums) that we can create a disk image in this format and have Time Machine backup on to that.&lt;/p&gt;
&lt;p&gt;Close the Disk Utility program and open it back up again. Click the &quot;New Image&quot; icon. In the window that opens up to specify where to save the image to, make sure you specify the proper partition again. You can name the image whatever you want. In addition, we want our disk image to have the following settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: &lt;em&gt;Whatever you prefer. I call mine &quot;TimeMachine&quot; for consistency.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Size: &lt;em&gt;Whatever fits best on your system. I use the &quot;Custom&quot; option and make it close to my full drive space.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Format: Mac OSX Extended (Journaled)&lt;/li&gt;
&lt;li&gt;Encryption: &lt;em&gt;Whatever you prefer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Partitions: Single Partition - Apple Partition Map&lt;/li&gt;
&lt;li&gt;Image Format: sparse bundle disk image&lt;img src=&quot;@assets/images/posts/2013-03-readysharediskimagesettings.png&quot; alt=&quot;Ready Share Disk Image Settings&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once all the settings are in place, click the &quot;Create&quot; button and wait for the process to finish.&lt;/p&gt;
&lt;p&gt;Now you can eject your drive and plug it into the router to finish off the process.&lt;/p&gt;
&lt;h3&gt;Verify ReadyShare Drives&lt;/h3&gt;
&lt;p&gt;After plugging in the drive to your router. Launch the router admin tool (http://routerlogin.net), select the &quot;Advanced&quot; tab, expand the &quot;USB Storage&quot; section, and click the &quot;Advanced Settings&quot; link.&lt;img src=&quot;@assets/images/posts/2013-03-readyshareusbsettings.png&quot; alt=&quot;Ready Share USB Settings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From here we want to verify that we can see both of our drives listed. If not, you can use the &quot;Create Network Folder&quot; option and add the necessary folders.&lt;img src=&quot;@assets/images/posts/2013-03-readysharesettings.png&quot; alt=&quot;Ready Share Settings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Our final step is to map up Time Machine.&lt;/p&gt;
&lt;h3&gt;Mapping Time Machine Backup Location&lt;/h3&gt;
&lt;p&gt;Now that we have our drives available in ReadyShare, we need to connect them to the server and setup our mappings. From Finder, select Go -&amp;gt; Connect to Server and enter the address smb://readyshare and click &quot;Connect&quot;. After connecting, select the drive your Time Machine image is on (or both in my case since I&apos;m sharing music on my WinBackup drive) and click connect.&lt;img src=&quot;@assets/images/posts/2013-03-readyshareconnect.png&quot; alt=&quot;Ready Share Connect&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By default, your Time Machine image will not have been mounted. We need to do this. Open up the drive that your Time Machine partition is on and double click on the.sparsebundle file that is there. After a minute you will see that your image has been mounted&lt;img src=&quot;@assets/images/posts/2013-03-readysharemountimage.png&quot; alt=&quot;Ready Share Mount Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, we need to select this image for our Time Machine backups. We do this through the Terminal window. Open up a new terminal, and enter the following commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cd /Volumes ls&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If all is still working smoothly, you&apos;ll see your Time Machine image listed&lt;img src=&quot;@assets/images/posts/2013-03-readyshare_terminallist.png&quot; alt=&quot;Ready Share Terminal List&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now enter the command (we need to do this as room) to do our mapping&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo tmutil setdestination /Volumes/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note: If you&apos;re using OSX 10.7 (Lion) the command appears to be:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo tmutil setdestination -p /Volumes/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note: If you&apos;re using OSX 10.6 (Snow Leopard) and below the process seems to be a lot trickier. The best documentation I&apos;ve been able to find to date is &lt;a href=&quot;http://hints.macworld.com/article.php?story=20090213071015789&quot;&gt;this one&lt;/a&gt;. Please let me know if you find better.&lt;/p&gt;
&lt;p&gt;If there&apos;s no errors, you have success! You can even verify things in Time Machine itself.&lt;img src=&quot;@assets/images/posts/2013-03-readyshare_terminalmaping.png&quot; alt=&quot;ReadyShare Terminal Mapping&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2013-03-readyshare_timemachinesettings.png&quot; alt=&quot;ReadyShare Time Machine Settings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And you&apos;re all set! Now you can run your Time Machine backups and leave your drive on the network. I find this particularly helpful since sometimes I&apos;m working upstairs or down in my office, and don&apos;t want to drag the USB drive with me. Plus I can share the MP3 collection across my virtual machines and other Windows machines in the house.&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;Mavericks: Dancing the Samba&lt;/h2&gt;
&lt;p&gt;A while after I updated to Mavericks (10.9) I had to do a complete reformat of my machine. After doing so, I wasn&apos;t able to connect to my readyshare drives, though I could still connect to them through my Windows virtual machines. I would usually get a timeout message, or I would be prompted for a username and password, and then after a delay there was an error connecting. Doing some research, this issue is due to the fact that with Mavericks, the new default protocol for Samba connections is SMB2, while most systems (including ReadyShare) is using SMB1. To fix this issue, there are several options which might work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instead of using smb:// when connecting, use afp:// (HT to Tim Nordyke for this)&lt;/li&gt;
&lt;li&gt;Instead of using smb:// when connecting, use cifs:// (HT to &lt;a href=&quot;http://osxdaily.com/2013/10/30/connect-smb-nas-network-shares-os-x-mavericks/&quot;&gt;this article&lt;/a&gt; for this)&lt;/li&gt;
&lt;li&gt;Override the defaults so that SMB connects using SMB1 protocol (HT to &lt;a href=&quot;http://cammodude.blogspot.com/2013/10/os-x-109-mavericks-workaround-for-smb.html&quot;&gt;this article&lt;/a&gt; for this)&lt;/li&gt;
&lt;li&gt;Create a new Network Folder in the ReadyShare administration panel that points to the same drive. For some reason the old network folder just wasn&apos;t connecting, but a new one did just fine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For me, a combination of the last two did the trick, but I&apos;ve seen lots of success with the first two as well.&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;You&apos;ll want to do make sure that your drives/images are remounted upon login to make sure Time Machine continues to function. To do this, &lt;a href=&quot;/quick-tip-how-to-mount-a-timemachine-network-drive-at-login&quot;&gt;read this followup post&lt;/a&gt;, since it was a little more involved than I initially thought.&lt;/p&gt;
&lt;p&gt;I&apos;ve been told that you can use EXT 2 formatted drives and they play really nice with the router, but you&apos;re going to need something like MacFUSE installed to properly handle the drive.&lt;/p&gt;
&lt;p&gt;You could potentially use your Windows partitions in NTFS by reformatting them again on a Windows machine, but I&apos;m not going to risk it for the time being. 8^D&lt;/p&gt;
&lt;p&gt;A HUGE thanks to all the people that have commented below and have helped diagnose issues as each new version of OSX comes out. It&apos;s great to have a &quot;living document&quot; in this manner.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Google Reader Users Have No Fear Feedly Has Your Back</title><link>https://dillieo.me/posts/development/2013-03-14-google-reader-users-have-no-fear-feedly-has-your-back/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-03-14-google-reader-users-have-no-fear-feedly-has-your-back/</guid><description>Feedly Shirt</description><pubDate>Thu, 14 Mar 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was rather distraught (just like a lot of other folks) when Google announced yesterday that it was &lt;a href=&quot;http://googleblog.blogspot.com/2013/03/a-second-spring-of-cleaning.html&quot;&gt;shutting down Google Reader&lt;/a&gt;. &lt;a href=&quot;/lifestyle-management-reloaded-feedl&quot;&gt;I&apos;ve been a long&lt;/a&gt; time &lt;a href=&quot;http://feedly.com&quot;&gt;Feedly&lt;/a&gt; user, and my blogs synchronizes directly through Google Reader. I wasn&apos;t sure which direction I would go. Until Feedly swooped in and saved the day!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I checked the Feedly blog this morning and they have &lt;a href=&quot;http://blog.feedly.com/2013/03/14/google-reader/&quot;&gt;announced&lt;/a&gt; that they have been working on their own google reader type API for their users. Any existing accounts will be automatically synchronized and transitioned to the &quot;Normandy&quot; server by July 1.&lt;/p&gt;
&lt;p&gt;What does this mean for you? Three simple steps!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href=&quot;http://feedly.com&quot;&gt;Feedly&lt;/a&gt;. You can get it for your browser, iPhone, Android, tablet, they have it everywhere!&lt;/li&gt;
&lt;li&gt;Get used to using Feedly. They&apos;ve setup &lt;a href=&quot;http://blog.feedly.com/2013/03/14/tips-for-google-reader-users-migrating-to-feedly/&quot;&gt;a new post&lt;/a&gt; to show you all its great features.&lt;/li&gt;
&lt;li&gt;Enjoy your reading experience without interruptions!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This makes me very excited. Feedly was very proactive in it&apos;s planning and I think they&apos;ll continue to provide a wonderful experience.&lt;/p&gt;
&lt;p&gt;Go give them a try! I think you&apos;ll be pleasantly surprised!&lt;/p&gt;
</content:encoded></item><item><title>Success Vs Value</title><link>https://dillieo.me/posts/growth/2013-03-05-success-vs-value/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-03-05-success-vs-value/</guid><description>Success Vs Value</description><pubDate>Tue, 05 Mar 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Try not to become a man of success, but rather try to become a man of value.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;~ Albert Einstein&lt;/p&gt;
</content:encoded></item><item><title>Finding Things</title><link>https://dillieo.me/posts/growth/2013-02-22-finding-things/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2013-02-22-finding-things/</guid><description>Finding Things</description><pubDate>Fri, 22 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You can always easily find anything you don&apos;t want.&lt;/p&gt;
&lt;p&gt;You can always easily find anything you don&apos;t want.&lt;/p&gt;
</content:encoded></item><item><title>Amazing Fun With Ruby On Rails And Zurb Foundation</title><link>https://dillieo.me/posts/development/2013-02-22-amazing-fun-with-ruby-on-rails-and-zurb-foundation/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-02-22-amazing-fun-with-ruby-on-rails-and-zurb-foundation/</guid><description>Timer Trio</description><pubDate>Fri, 22 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few weeks back a friend of mine asked me to create a game timer that he could use at the local &lt;a href=&quot;http://www.gameonarizona.com/&quot;&gt;game / comic shop&lt;/a&gt;. Since the options were open, I used this opportunity to try out new web technology for me (&lt;a href=&quot;http://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt;) as well as dig deeper with a presentation framework I really like (&lt;a href=&quot;http://foundation.zurb.com/&quot;&gt;Zurb Foundation&lt;/a&gt;). It was nothing short of amazing fun!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Functionally, the app was pretty simple. My friend wanted a basic countdown timer, with the ability to add background images for various games, have alerts at various times, and have it displayed full screen so they could put it up on their big screen TV in the shop for all to see. In addition, it should be easy to reset and restart the clock without having to fire up the configuration screen again. As an added perk, all of the images within a given game would also rotate at a fixed interval, just to keep things interesting.&lt;/p&gt;
&lt;p&gt;The first step was the presentation/display. I immediately thought of Zurb Foundation. I started using Zurb a while back on a pet project of mine (still in the works) because I&apos;m no designer, but I wanted things to look good AND give me the ability to have the timer run on your phone or tablet too! Zurb provides buttons, form elements, even some Javascript modules to get you up and running quickly. Here&apos;s what our fill out form looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-02-timersetup.png&quot; alt=&quot;Timer Setup Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Again to emphasize how much I love Zurb, this page automatically resizes itself to fit nicely on both my tablet and my phone. All I have to do is specify a few classes for column size and grid size and Zurb does the rest. But the real beauty comes when you click the &quot;Launch Timer&quot; button:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-02-timerchrome.png&quot; alt=&quot;Timer in Browser&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It took a couple of small tweaks to get the &quot;Reveal&quot; module to go &lt;a href=&quot;/creating-full-screen-modal-windows-in-zurb-foundation-reveal&quot;&gt;full screen&lt;/a&gt;, but even then it was pretty minimal. It was easy to specify a button bar to put my start, pause, and restart buttons. In order to accomodate for the smaller resolutions on the tablet and phone, I included a smaller text bar for the timer and a smaller version of the logo. By simply giving them the class of &quot;hide-for-large-up&quot; it goes away on the big screen. I use a similar class to hide the larger elements on the small screen.&lt;/p&gt;
&lt;p&gt;Zurb makes things so simple to quick layouts, and when I needed to customize things, the framework is flexible enough to allow you to do it with minimal hassle! I can&apos;t wait to dig into it even more.&lt;/p&gt;
&lt;p&gt;When it came to setting up the application architecture itself, I went to Ruby on Rails (RoR). I&apos;ve heard great things about Ruby, and even &lt;a href=&quot;/review-the-book-of-ruby&quot;&gt;read a book a&lt;/a&gt; while back and wanted to see what all the hype was about. Needless to say RoR didn&apos;t disappoint at all!&lt;/p&gt;
&lt;p&gt;I think the thing that most impressed me was the ActiveRecord and Scaffolding architecture that RoR provides. It&apos;s not to say the the &quot;simplified&quot; nature of the language wasn&apos;t appealing (having a quick way to generate HTML and JSON responses as well as quick and easy code to loop collections is very handy), but the biggest challenge on the back end was the constant tweaks to the database structure holding the data. For a while I was using a simple &lt;a href=&quot;http://sqlite.org&quot;&gt;SQLite&lt;/a&gt; database to store our information, but changes in the architecture pushed me towards a &lt;a href=&quot;http://www.mysql.com&quot;&gt;MySQL&lt;/a&gt; layout. Thanks to the way scaffolding, migrations, seeds, and ActiveRecord all work, I simply needed to change a configuration file to use MySQL as my storage engine, call a db:reset command, and RoR did the rest! Data validation and everything else was present too!&lt;/p&gt;
&lt;p&gt;While I didn&apos;t get a chance to fully implement it, the use of &lt;a href=&quot;http://coffeescript.org/&quot;&gt;CoffeeScript&lt;/a&gt; within RoR was very nice too. It allowed me to setup a few functions and jQuery calls a lot simpler than I&apos;ve had to do in the past, and it&apos;s a lot more readable.&lt;/p&gt;
&lt;p&gt;While my description of RoR is quite brief here, it doesn&apos;t really do it justice to how nice it was. All of the architecture is well laid out and provides for a very &quot;clean&quot; code environment for me to work. All the database structure is separate from the configuration of the database engine itself. The controller provides simple coding to set variables for the view, and all of the &quot;code helpers&quot; at the view level make it easy to put form elements or iterate collections for the client. While it won&apos;t be replacing my primary language anytime soon (I still love .Net MVC with EF POCO), I can solidly say Ruby on Rails is my #2 language now and can&apos;t wait to work with it more.&lt;/p&gt;
&lt;p&gt;I should put in one last note of thanks/amazement to &lt;a href=&quot;http://appfog.com&quot;&gt;AppFog&lt;/a&gt;. They provide a &quot;&lt;a href=&quot;http://www.wikinvest.com/concept/Cloud_Computing&quot;&gt;Platform as a Service&lt;/a&gt;&quot; architecture that makes updating this application as simple as a few commands from a terminal window. They offer a wide variety of additional platforms (Python, PHP, etc.) and it all runs in the cloud, so you can leverage it&apos;s availability. They provide a basic free hosting plan that is perfect for me needs, but I know where I&apos;ll be looking when I have a larger scale project.&lt;/p&gt;
&lt;p&gt;So there you have it! A really practical and fun project that I was able to put together in about a week (though stretched out over a lot of nights and weekend or two 8^D) with a couple of technologies I was no expert at. My friend loves it, and I even got to see it in action the other night at the shop!&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Bacon Onion Butter</title><link>https://dillieo.me/posts/tips/2013-02-21-worth-sharing-bacon-onion-butter/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2013-02-21-worth-sharing-bacon-onion-butter/</guid><description>Bacon Butter Plate</description><pubDate>Thu, 21 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I discovered this little gem in my amazing &lt;a href=&quot;http://www.amazon.com/Barbecue-Bible-Sauces-Marinades-Butters/dp/0761119795/ref=sr_1_1?ie=UTF8&amp;amp;qid=1361199031&amp;amp;sr=8-1&amp;amp;keywords=barbeque+sauces%2C+rubs%2C+and+marinades&quot;&gt;BBQ Sauces, Rubs, and Marinades&lt;/a&gt; book yesterday and it was PHENOMINAL on our hamburgers. I just had to share, because it was simple too!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ingredients:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;8 Tablespoons (1 stick) of butter (let it sit out so it is room temperature)&lt;/li&gt;
&lt;li&gt;3 Strips of lean bacon, cut into 1/4 inch slivers&lt;/li&gt;
&lt;li&gt;1 Small onion diced&lt;/li&gt;
&lt;li&gt;3 Tsp mustard (deli/brown mustard is preferred)&lt;/li&gt;
&lt;li&gt;1 Pinch of Pepper&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Directions:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Melt 1 tablespoon of butter in a hot skillet/pan.&lt;/li&gt;
&lt;li&gt;Add bacon and cook until the fat just begins to render&lt;/li&gt;
&lt;li&gt;Add onion and continue to cook until bacon is fully cooked and onion is golden brown&lt;/li&gt;
&lt;li&gt;Once completed, take bacon and onion off heat and let it cool to room temperature.&lt;/li&gt;
&lt;li&gt;In a bowl, whip together bacon, onion, mustard, pepper, and remaining butter until it is well mixed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&apos;s all there is to it! However, there are a few extra tricks:&lt;/p&gt;
&lt;p&gt;If you&apos;re in a hurry (like I was last night) after cooking the bacon and onion, put it into a bowl and submerge the bowl into an ice bath (just don&apos;t get the bacon or onion wet). This will help it cool down quicker.&lt;/p&gt;
&lt;p&gt;Once you&apos;ve whipped everything together, place it onto a large piece of saran wrap. You can then roll and shape the butter into a log, which makes it easy to slice for later on. You can refrigerate it for 5 days or keep it for a couple of months in the freezer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-02-baconbutterroll.jpg&quot; alt=&quot;Bacon Butter Roll&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the best places to use this butter is on top of hamburgers. About 3 to 5 minutes before the burger is done, take good quarter inch slice off your roll and place it on top to melt.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-02-baconbuttermelting.jpg&quot; alt=&quot;Bacon Butter Melting&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Enjoy! Let me know if you find other uses for this wonderful stuff!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Getting The Centroid Of An Individual Svg Path Selection In D3</title><link>https://dillieo.me/posts/development/2013-02-13-quick-tip-getting-the-centroid-of-an-individual-svg-path-selection-in-d3/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-02-13-quick-tip-getting-the-centroid-of-an-individual-svg-path-selection-in-d3/</guid><description>Quick Tip</description><pubDate>Wed, 13 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;re using &lt;a href=&quot;d3.org&quot;&gt;D3&lt;/a&gt; to render SVG paths, you&apos;ll find that you can iterate through a collection of paths and get the centroids of each one through a simple loop:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;d3.selectAll(&quot;#states path&quot;) .each(function (d, i) 
{ 
    var centroid = path.centroid(d); 
    alert(&apos;Centroid at: &apos; + centroid\[0] + &apos;, &apos; + centroid\[1]); 
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, if you try a similar approach on a single selection:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var state = d3.select(&quot;#state_01000&quot;); 
var centroid = path.centroid(state); 
alert(&apos;Centroid at: &apos; + centroid\[0] + &apos;, &apos; + centroid\[1]);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your centroid value comes back as undefined.&lt;/p&gt;
&lt;p&gt;The trick is that the .each method that iterates through the collection is actually using an underlying property of the selection for its processing.&lt;/p&gt;
&lt;p&gt;The solution is to use the .datum() method on the selection.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var state = d3.select(&quot;#state_01000&quot;); 
var centroid = path.centroid(state.datum()); alert(&apos;Centroid at: &apos; + centroid\[0] + &apos;, &apos; + centroid\[1]);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;
</content:encoded></item><item><title>Creating Full Screen Modal Windows In Zurb Foundation Reveal</title><link>https://dillieo.me/posts/development/2013-02-05-creating-full-screen-modal-windows-in-zurb-foundation-reveal/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-02-05-creating-full-screen-modal-windows-in-zurb-foundation-reveal/</guid><description>Zurb Yeti</description><pubDate>Tue, 05 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I really love &lt;a href=&quot;http://foundation.zurb.com/&quot;&gt;Zurb Foundation&lt;/a&gt;. It&apos;s allowed me to quickly get a simple little &quot;timer&quot; app off the ground for a friend of mine. The &quot;reveal&quot; library makes for simple modal windows of varying sizes. However, I really wanted to get a full screen reveal window to work with. After a few tweaks I made it happen!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Taking the default reveal code, and using the &quot;expand&quot; size option, you can generate a modal like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-02-timernormal.png&quot; alt=&quot;Timer Normal&quot; /&gt;&lt;/p&gt;
&lt;p&gt;To make this full size. We take three simple steps:&lt;/p&gt;
&lt;h3&gt;1. Update your CSS body/html tags have 100% height.&lt;/h3&gt;
&lt;p&gt;The browser doesn&apos;t do this by default, so add the following CSS somewhere:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;body, html { height: 100%; }&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;2. Create an overriding classes for our full size reveal.&lt;/h3&gt;
&lt;p&gt;We don&apos;t want to break the functionality of our other reveal classes, so we can create our own &quot;overriding&quot; class with the details we need:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.full-modal 
{ 
    background-size: 100% 100% !important; 
    background-repeat: no-repeat !important; 
    height: 100% !important; 
    top: 0px !important; 
    left: 0px !important; 
    margin: 0px 0px 0px 0px !important; 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you were to look at the base reveal class, it does some margin modifications to place the reveal window in the middle. We force all of this back to the 0,0 coordinates to coincide with our 100% height. You&apos;ll notice I have some background modifications as well. This is to accomodate for the background images I&apos;m adding to my reveal window. You don&apos;t have to worry about those if you aren&apos;t working with image backgrounds.&lt;/p&gt;
&lt;p&gt;In addition to this, we need to override the positioning of the closing X button that you can add to a reveal window:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.close-full-modal 
{ 
    position: fixed !important; 
    top: 5px !important; 
    right: 5px !important; 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. Calculate our full width upon opening.&lt;/h3&gt;
&lt;p&gt;Since the full width of the page body isn&apos;t available to a hidden item, we wire up the reveal:opened event in JavaScript to get the width of the body and set the width of our reveal window accordingly.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(&apos;#clock-modal&apos;).bind(&apos;reveal:opened&apos;, function()
{ 
    var timerBox = $(&apos;#clock-modal&apos;);
    timerBox.css(&apos;width&apos;, \$(&apos;body&apos;).width()); StartTimer(); 
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I bet there is a way to do this with SASS, but I&apos;m not that saavy yet. I&apos;d love some comments or alternatives.&lt;/p&gt;
&lt;h3&gt;4. Apply our classes and see the results.&lt;/h3&gt;
&lt;p&gt;Here&apos;s our updated reveal window (notice the full-modal and close-full-modal additions:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;clock-modal&quot; class=&quot;reveal-modal full-modal&quot;&amp;gt; 
    &amp;lt;div class=&quot;row&quot;&amp;gt; 
        &amp;lt;div class=&quot;twelve columns&quot; style=&quot;text-align: center;&quot;&amp;gt; 
            &amp;lt;div id=&quot;clock-display&quot;&amp;gt;Go!&amp;lt;/div&amp;gt; 
        &amp;lt;/div&amp;gt; 
    &amp;lt;/div&amp;gt;

    &amp;lt;div class=&quot;row&quot;&amp;gt; 
        &amp;lt;div class=&quot;twelve columns&quot; style=&quot;text-align: center;&quot;&amp;gt; 
            &amp;lt;a id=&quot;button-pause&quot; class=&quot;radius button&quot; href=&quot;#&quot;&amp;gt;Pause&amp;lt;/a&amp;gt; 
            &amp;amp;nbsp;&amp;amp;nbsp; 
            &amp;lt;a id=&quot;button-resume&quot; class=&quot;radius button&quot; href=&quot;#&quot;&amp;gt;Resume&amp;lt;/a&amp;gt; 
            &amp;lt;a class=&quot;close-reveal-modal close-full-modal&quot;&amp;gt;×&amp;lt;/a&amp;gt; 
            &amp;lt;img id=&quot;img-logo&quot; src=&quot;assets/logo.png&quot; alt=&quot;Game On Logo&quot; /&amp;gt; 
        &amp;lt;/div&amp;gt; 
    &amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and here&apos;s the result&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-02-timerfullscreen.png&quot; alt=&quot;Timer Full Screen&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Final Thoughts&lt;/h3&gt;
&lt;p&gt;So far this setup has worked on my desktop, tablet (Nexus 7) and even an older mobile browser (HTC Thunderbolt) with full screen. There may be some ramifications that I haven&apos;t seen yet with Zurb and this setup, but hopefully I have things setup to not conflict.&lt;/p&gt;
&lt;p&gt;I hope this helps. Drop me a line if you see a way to make it better!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Fixing Duplicatehidden Dialog Anomalies With Jquery Ui</title><link>https://dillieo.me/posts/development/2013-01-25-quick-tip-fixing-duplicatehidden-dialog-anomalies-with-jquery-ui/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-01-25-quick-tip-fixing-duplicatehidden-dialog-anomalies-with-jquery-ui/</guid><description>Quick Tip</description><pubDate>Fri, 25 Jan 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The modal dialog served to dynamically render a highcharts chart upon opening. For some reason, the second (and ONLY the second) time I triggered the event the chart wouldn&apos;t display. After doing some investigating, I found that I had TWO copies of my modal dialog wrapper in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Document_Object_Model&quot;&gt;DOM&lt;/a&gt;. This was causing confusion with &lt;a href=&quot;http://www.highcharts.com&quot;&gt;highcharts&lt;/a&gt;, which would render the chart in the div that wasn&apos;t being displayed.&lt;/p&gt;
&lt;p&gt;I looked into some of the .dialog(&apos;destroy&apos;) and .remove() calls, but nothing worked.&lt;/p&gt;
&lt;p&gt;Fortunately, &lt;a href=&quot;http://stackoverflow.com/questions/7099938/jquery-ui-dialog-behaves-unpredictably&quot;&gt;StackOverflow&lt;/a&gt; came to the rescue again! (Big HT to &lt;a href=&quot;http://stackoverflow.com/users/180664/milimetric&quot;&gt;Milimetric&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;For brevity (and personal reference) here&apos;s the code involved.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var original = $(&apos;#dialogId&apos;)[0];
var clone = $(original).clone().attr(&apos;id&apos;, &apos;dialogIdClone&apos;);
var saveHtml = $(original).html();
$(original).html(&apos;&apos;);

$(clone).dialog({
    ... // other options
    open: function (){
        // add any dynamic behavior you need to the dialog here
    },
    close: function(){
        $(clone).remove();
        $(original).html(saveHtml);
    }
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Technology Is Crazy Cool</title><link>https://dillieo.me/posts/development/2013-01-17-technology-is-crazy-cool/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-01-17-technology-is-crazy-cool/</guid><description>Matrix Code Tunnel</description><pubDate>Thu, 17 Jan 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a job as a programmer, but I&apos;m not in the office. I live in a small town in &lt;a href=&quot;http://maps.google.com/maps?ll=34.0,-112.0&amp;amp;spn=3.0,3.0&amp;amp;q=34.0,-112.0%20(Arizona)&amp;amp;t=h&quot;&gt;Arizona&lt;/a&gt;, but my boss (and the main office) is in Washington, next to one of the major tech hubs of &lt;a href=&quot;http://maps.google.com/maps?ll=47.6097222222,-122.333055556&amp;amp;spn=0.1,0.1&amp;amp;q=47.6097222222,-122.333055556%20(Seattle)&amp;amp;t=h&quot;&gt;Seattle&lt;/a&gt;. Thanks to technology, I can e-mail updates to my boss, use instant messenger to ask questions of my coworkers and clients, and even get in on video chat from time to time.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I work from home. This has some immense blessings, especially since my wife has been really sick the last couple of weeks and I&apos;ve been able to take care of her and the kids without using up my vacation time. While I work a typical 8 to 5, we&apos;re not bound to it since code can go on a web server at any time. We prefer to do our major changes after hours so that if something happens it doesn&apos;t affect business.&lt;/p&gt;
&lt;p&gt;I&apos;m working, but not from home at the moment. I&apos;m at the library, since there&apos;s a weekly reading program my kids love to go to, so I can work from my laptop. Thanks to technology, I can keep a copy of the web site and database on my laptop, synchronize the code with any coworkers, and push the code to the servers when needed.&lt;/p&gt;
&lt;p&gt;I don&apos;t actually have a copy of my current website and database that I&apos;m working on. My current client has a pretty big infrastructure, so I use my computer and access their network from a &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_private_network&quot;&gt;virtual private network&lt;/a&gt;. I use this in combination with a &lt;a href=&quot;http://www.microsoft.com/windowsserver2008/en/us/rds-product-home.aspx&quot;&gt;remote desktop connection&lt;/a&gt; to function as if I was sitting on a computer in their offices.&lt;/p&gt;
&lt;p&gt;Except that there&apos;s not computer for me to access there. I&apos;m actually connecting to a &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_machine&quot;&gt;virtual machine&lt;/a&gt;, which is a &quot;computer on a computer&quot; that sits in the office of the programming lead. When I&apos;m done with the project they&apos;ll probably blow away the machine (ultimately it&apos;s just a file) and make way for the next project at hand, recycling the same computer resources.&lt;/p&gt;
&lt;p&gt;Sure there&apos;s a lot of responsibility and a whole heap of self-discipline to make this happen, but man... technology is crazy cool!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Draw A Star With Svg And Javascript</title><link>https://dillieo.me/posts/development/2013-01-16-quick-tip-how-to-draw-a-star-with-svg-and-javascript/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-01-16-quick-tip-how-to-draw-a-star-with-svg-and-javascript/</guid><description>Quick Tip</description><pubDate>Wed, 16 Jan 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.w3.org/Graphics/SVG/&quot;&gt;SVG&lt;/a&gt; provides a powerful way to create graphics that will scale to any size in your application. It&apos;s easy enough to draw a star, but you need to work with the polygon shape to work with. Ideally you&apos;d want a way to calculate your star shapes, similar to how you can specify a radius or width/height with circles and rectangles. Fortunately there is a way to calculate the points on a star, and here is how.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To calculate the points on our star, we bring trigonometry to the rescue! Thank to a &lt;a href=&quot;http://stackoverflow.com/questions/2710065/drawing-star-shapes-with-variable-parameters&quot;&gt;StackOverflow answer&lt;/a&gt; (written in Java), we know that a basic star is simply a fixed set of points on a circle, equidistant from each other. To make a &quot;fancy&quot; looking star, we work with two circles, and outer and an inner, and use the same angle, applied to the larger and shorter radius. The nice thing about this formula is that we can calculate the proper angle no matter how many &quot;arms&quot; we want on the star: 5, 6, 11, etc.).&lt;/p&gt;
&lt;p&gt;With SVG, we simply need to define the points in our polygon (star) and it will do all the hard work of connecting the lines and filling in the space. All our algorithm needs to do is &quot;walk&quot; along the star, and make note of the coordinates at each tip of the arm. That said, here&apos;s what our function looks like:&lt;/p&gt;
&lt;p&gt;[gist]4548290&lt;/p&gt;
&lt;p&gt;When using the D3 library, we can easily append our star with the following syntax:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;d3.select(&quot;#star_svg&quot;) .append(&quot;svg:polygon&quot;) .attr(&quot;id&quot;, &quot;star_1&quot;) .attr(&quot;visibility&quot;, &quot;visible&quot;) .attr(&quot;points&quot;, CalculateStarPoints(pointX, pointY, 5, 10, 5))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After you apply a little CSS formatting you get the final result (as applied onto a map)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-01-arizonasvgstar.png&quot; alt=&quot;Arizona SVG Star&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There you have it! You can easily modify this function to work with other libraries, including those that draw the lines between points.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Preserve Svg Text Size After Scale Transform</title><link>https://dillieo.me/posts/development/2013-01-09-quick-tip-preserve-svg-text-size-after-scale-transform/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2013-01-09-quick-tip-preserve-svg-text-size-after-scale-transform/</guid><description>Quick Tip</description><pubDate>Wed, 09 Jan 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For example. Let&apos;s say you have a map of the United States, drawn in SVG. You also have a set of hidden labels for major states, that you want to display when the user clicks on a state already prepped. I have something like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-01-mapstart.png&quot; alt=&quot;Map Start&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now when a state is clicked on, we load a file that has the counties for the state, and calculate the transform needed to get the county shapes to fill our viewport. In addition, we apply the transform to the labels, so that they will show up in the proper location:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-01-mapscalearizona.png&quot; alt=&quot;Map Scale Arizona&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now this doesn&apos;t look too bad, but some states are smaller than others, which makes the transform REALLY big.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-01-mapscaleconnecticuit.png&quot; alt=&quot;Map Scale Connecticuit&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So what are we to do? There is a &quot;font-size&quot; attribute we can apply, we can even use CSS, but once the transform is applied, it&apos;s values trump whatever is in CSS/HTML since we&apos;re resizing dynamically. If we were somehow able to calculate where the transform would be, or what the resulting coordinates are of our label, then we could simply &quot;redraw&quot; the label after the transform has occurred. I tried using this with the getBBox() method, but it was still referencing the original properties of our label/elements.&lt;/p&gt;
&lt;p&gt;Finally, I came across the solution using the getBoundingClientRect() function, which provides the details of our label/element AFTER the transform has completed! With this information, we can create a new label at the new location. I&apos;m using the &lt;a href=&quot;http://d3.org&quot;&gt;d3&lt;/a&gt; library with GeoJson to provide my initial data, so your code may be a little different, but here&apos;s what my code looks like after the transform occurs:&lt;/p&gt;
&lt;p&gt;[gist]4494557&lt;/p&gt;
&lt;p&gt;I&apos;ve done a little extra formatting on our new labels, so that they have a &quot;pill box&quot; background. We also have a CSS class in place that sets our font to the properties we need (12 point font, black text).&lt;/p&gt;
&lt;p&gt;Here&apos;s what our results look like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-01-mapfixedarizona.png&quot; alt=&quot;Map Fixed Arizona&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Our super zoom states don&apos;t look that bad either...&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2013-01-mapfixedconnecticuit.png&quot; alt=&quot;Map Fixed Connecticuit&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So there you have it. Take advantage of the getBoundingClientRect() function after you transform your SVG objects in order to redraw your text at the proper location.&lt;/p&gt;
&lt;p&gt;Hope this helps! Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>2012 In Review</title><link>https://dillieo.me/posts/development/2012-12-31-2012-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-12-31-2012-in-review/</guid><description>2012 Year in Review</description><pubDate>Mon, 31 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So here we are, the end of another year and while I don&apos;t blog for a living, I try to be serious enough about it that stats matter. Plus it&apos;s fascinating to see how the year pans out in my blog. Here&apos;s some interesting info for a year in review.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The busiest day I had this year was 706 visitors, mainly to visit my post about &lt;a href=&quot;/the-thankful-tree&quot;&gt;The Thankful Tree&lt;/a&gt;. It&apos;s an older post, but having a quick idea on how to make one I think helps get people interested in it. That and I believe there is a band or something called the Thankful Tree as well. 8^D&lt;/p&gt;
&lt;p&gt;That said, here are the top five posts based on views I had this year. Interestingly enough most of them were the same as before, with one new entry to the mix:&lt;/p&gt;
&lt;h3&gt;5 &lt;a href=&quot;/soup-to-nuts-creating-a-timeout-notifier-in-asp-net-using-ajax-toolkit-or-jquery&quot;&gt;Soup to Nuts: Creating a Timeout Notifier in ASP.Net using AJAX Toolkit or jQuery&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;With more and more jQuery development going on, this one is on the rise.&lt;/p&gt;
&lt;h3&gt;4 &lt;a href=&quot;/how-to-sortfind-custom-objects-in-a-list-with-vb-net&quot;&gt;How to Sort/Find Custom Objects in a List with VB.Net&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Creating your own objects is quite helpful, especially if you can add them to a list collection and be able to sort it. I&apos;ve &quot;dog fooded&quot; this one myself a couple of times this year.&lt;/p&gt;
&lt;h3&gt;3 &lt;a href=&quot;/windows-server-2003-64bit-iis-6-32bit-asp-net-4-framework-and-targeting&quot;&gt;Windows Server 2003 64bit, IIS 6 32bit, ASP.Net 4 Framework, and Targeting&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This one is still a hat tip to my buddy &lt;a href=&quot;http://redtrails.com/&quot;&gt;Ben&lt;/a&gt;. It turns out people are still having issues with this one.&lt;/p&gt;
&lt;h3&gt;2 &lt;a href=&quot;/quick-tip-how-to-use-onclick-and-onclientclick-events-to-prevent-double-clicking-on-your-asp-net-buttons&quot;&gt;Quick Tip: How to use OnClick and OnClientClick events to Prevent Double Clicking on your ASP.Net Buttons&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I wrote this one back in July after discovering a bug we were having with users double clicking submission buttons and causing duplicate entries in the database. I&apos;ve had to use this one a couple of times and it seems to be a common problem for folks&lt;/p&gt;
&lt;p&gt;...and still the #1 post for a couple of years running now is&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;/how-to-swap-faces-using-windows-live-photo-gallery&quot;&gt;How to swap faces using Windows Live Photo Gallery&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I was always baffled at how cool this trick was but hard to find. I guess other folks were having the same issues too. I still get comments and questions about it.&lt;/p&gt;
&lt;p&gt;So thank you, loyal readers, for another year of blogging. I hope to be more frequent in MMXIII with blogging and plan to keep it diverse. I might even look into merging my photo and quote blog in, to create a kind of &quot;full pictures&quot; of my interests.&lt;/p&gt;
&lt;p&gt;Is there anything you&apos;ve been curious for me to blog about? I&apos;d love to hear it! Take care and keep reading!&lt;/p&gt;
&lt;p&gt;[:: Sean ::]&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas O Holy Night Three Versions</title><link>https://dillieo.me/posts/development/2012-12-24-12-songs-of-christmas-o-holy-night-three-versions/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-12-24-12-songs-of-christmas-o-holy-night-three-versions/</guid><description>Christmas Ornament - Ornamento de Natal - 2010</description><pubDate>Mon, 24 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here it is! Christmas Eve! And for our final day before Christmas, I wanted to share my all time favorite Christmas carol, &lt;a href=&quot;http://en.wikipedia.org/wiki/O_Holy_Night&quot;&gt;O Holy Night&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Over the years I&apos;ve found this song so moving and it really captures the essence of Christmas for me. See the lyrics below. Today I present O Holy Night in three versions. The first being a rock take on the song by a group I really like, &lt;a href=&quot;http://www.barlowgirl.com/&quot;&gt;Barlow Girl&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;http://youtu.be/dEVew7cW2ls&amp;amp;h=150&lt;/p&gt;
&lt;p&gt;The next is a gem I picked up a long while back from the long forgotten show Studio 60: On the Sunset Strip. In an episode they did to raise support for New Orleans, real life instrumentalist &lt;a href=&quot;http://www.tromboneshorty.com/&quot;&gt;Troy &quot;Trombone Shorty&quot; Andrews&lt;/a&gt; assembles a small brass combo and plays a lovely New Orleans Style version:&lt;/p&gt;
&lt;p&gt;https://soundcloud.com/dillie-o/o-holy-night-studio-60-nola&lt;/p&gt;
&lt;p&gt;Finally, and my all time favorite, comes from the vocals of &lt;a href=&quot;http://www.pointofgrace.net/&quot;&gt;Point of Grace&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/7jR73bhMvmp7eOY2GvyzOz&lt;/p&gt;
&lt;p&gt;Merry Christmas and a Happy New Year all!!!!&lt;/p&gt;
&lt;p&gt;[:: Sean ::]&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;O Holy Night! The stars are brightly shining, It is the night of the dear Saviour&apos;s birth. Long lay the world in sin and error pining. Till He appeared and the Spirit felt its worth. A thrill of hope the weary world rejoices, For yonder breaks a new and glorious morn. Fall on your knees! Oh, hear the angel voices! O night divine, the night when Christ was born; O night, O Holy Night , O night divine! O night, O Holy Night , O night divine!&lt;/p&gt;
&lt;p&gt;Led by the light of faith serenely beaming, With glowing hearts by His cradle we stand. O&apos;er the world a star is sweetly gleaming, Now come the wisemen from out of the Orient land. The King of kings lay thus lowly manger; In all our trials born to be our friends. He knows our need, our weakness is no stranger, Behold your King! Before him lowly bend! Behold your King! Before him lowly bend!&lt;/p&gt;
&lt;p&gt;Truly He taught us to love one another, His law is love and His gospel is peace. Chains he shall break, for the slave is our brother. And in his name all oppression shall cease. Sweet hymns of joy in grateful chorus raise we, With all our hearts we praise His holy name. Christ is the Lord! Then ever, ever praise we, His power and glory ever more proclaim! His power and glory ever more proclaim!&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Jingle Bells By Mannheim Steamroller</title><link>https://dillieo.me/posts/growth/2012-12-21-12-songs-of-christmas-jingle-bells-by-mannheim-steamroller/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-21-12-songs-of-christmas-jingle-bells-by-mannheim-steamroller/</guid><description>English A rendition of the musical notation f</description><pubDate>Fri, 21 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A double post today, and we&apos;ll start getting nestling into the winter night with Jingle Bells by &lt;a href=&quot;http://mannheimsteamroller.com/&quot;&gt;Mannheim Steamroller&lt;/a&gt;. This is a lovely group that has been around forever and does a lot of nice synthesizer work, amongst other things.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/52Yl6qWMthRJfiW50aY45K&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Santa Claus Is Coming To Town By Manhattan Transfer</title><link>https://dillieo.me/posts/development/2012-12-21-12-songs-of-christmas-santa-claus-is-coming-to-town-by-manhattan-transfer/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-12-21-12-songs-of-christmas-santa-claus-is-coming-to-town-by-manhattan-transfer/</guid><description>The Christmas Album The Manhattan Transfer album</description><pubDate>Fri, 21 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The first time I ever heard &lt;a href=&quot;http://www.manhattantransfer.net/&quot;&gt;Manhattan Transfer&lt;/a&gt; was singing this song on the TV show &lt;a href=&quot;http://www.imdb.com/title/tt0101120/&quot;&gt;Home Improvement&lt;/a&gt;. I loved their jazz a cappella and picked up this album shortly after!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/4NLp6wvr7qy3BnqlSsWr4h&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Eternal Gifts By Leigh Nash</title><link>https://dillieo.me/posts/growth/2012-12-20-12-songs-of-christmas-eternal-gifts-by-leigh-nash/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-20-12-songs-of-christmas-eternal-gifts-by-leigh-nash/</guid><description>12 Songs Of Christmas Eternal Gifts By Leigh Nash</description><pubDate>Thu, 20 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&quot;Santa knows what I want. Jesus knows what I need.&quot; Some profound lyrics I found in a song by &lt;a href=&quot;http://sixpence-ntr.com&quot;&gt;Sixpence None the Richer&lt;/a&gt;&apos;s &lt;a href=&quot;http://en.wikipedia.org/wiki/Leading_lady&quot;&gt;leading lady&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/0jMMHl5lspNtoyv78viKkS&lt;/p&gt;
</content:encoded></item><item><title>A Bit Of Christmas Magic</title><link>https://dillieo.me/posts/growth/2012-12-20-a-bit-of-christmas-magic/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-20-a-bit-of-christmas-magic/</guid><description>Girls on Polar Express</description><pubDate>Thu, 20 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night my girls had the pleasure of riding the &lt;a href=&quot;http://www.thetrain.com/polar-express-5679.html&quot;&gt;Polar Express&lt;/a&gt;. This was a wonderful trip on a cold night with snow on the ground from the night before. We made it all the way to Santa&apos;s village at the North Pole thanks to a magic tunnel. The most magical part of the night came when Santa himself boarded the train to give gifts to the children aboard.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Now for a brief moment of back story...&lt;/p&gt;
&lt;p&gt;Opa is one of the girls&apos; grandfathers. He&apos;s also the &quot;direct link&quot; to Santa. See, Santa and Opa are best buddies. The girls call Opa around Christmastime so that they can talk to Santa. Opa figures out a time when Santa is passing through and they make it work out. This works out in all sorts of situations.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-12-imag0468.jpg&quot; alt=&quot;Santa on the Polar Express&quot; /&gt; So now back to our story. Santa boards the train and is handing out special Polar Express jingle bells to everybody on board. He even takes a moment or two with each child. He truly is magical and wonderful this way, especially with such a large amount of children on the train that he is to visit.&lt;/p&gt;
&lt;p&gt;As Santa approaches our seats, the girls light up, and Rylee says &quot;Santa! Do you know my Opa, he...&quot;&lt;/p&gt;
&lt;p&gt;This is where my heart stops for a moment. I think the girls have been challenging our assertions that Santa and Opa are best buds. I also know that Santa here is busy, and he is probably unaware of this arrangement with Opa. How will he respond to such a question?!&lt;/p&gt;
&lt;p&gt;Before Rylee can even finish her sentence, and without dropping a beat, Santa exclaims, &quot;Why of COURSE I know your Opa! I&apos;ve known him since he was this tall!&quot; Santa proceeds to stoop down a little and indicate his height was even shorter than the girls.&lt;/p&gt;
&lt;p&gt;At that point I had to make sure nobody saw the tears starting to well. Sure it was a little detail, but this LITTLE detail had been a HUGE one to the girls&apos; for a while now and Santa didn&apos;t simply shrug it off or mildly affirm. He WAS best buds with Opa, for quite a while, and he made sure the girls knew that, all in the power of a few words.&lt;/p&gt;
&lt;p&gt;I&apos;m a firm believer in Santa, and I wager that this was the real deal on the train last night. If not, it was probably his #1 helper.&lt;/p&gt;
&lt;p&gt;Merry Christmas all!&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas O Tannenbaum By Vince Guaraldi Trio</title><link>https://dillieo.me/posts/growth/2012-12-19-12-songs-of-christmas-o-tannenbaum-by-vince-guaraldi-trio/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-19-12-songs-of-christmas-o-tannenbaum-by-vince-guaraldi-trio/</guid><description>12 Songs Of Christmas O Tannenbaum By Vince Guaraldi Trio</description><pubDate>Wed, 19 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Oh my! We&apos;re less than a week from Christmas and I haven&apos;t posted THIS classic yet?! It practically defines modern Christmas tunes. Smooth, festive, perfect to listen to and enjoy you family with a warm drink. Enjoy!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/34rzJNfTd5e9s3TICFMPD0&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Wizards In Winter By Transsiberian Orchestra</title><link>https://dillieo.me/posts/growth/2012-12-18-12-songs-of-christmas-wizards-in-winter-by-transsiberian-orchestra/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-18-12-songs-of-christmas-wizards-in-winter-by-transsiberian-orchestra/</guid><description>Trans-Siberian Orchestra Cover</description><pubDate>Tue, 18 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You&apos;ve probably seen the videos of houses with Christmas lights completely decked out and sequenced using this song. It does a great blend of a traditional festive feel done on guitars/synthesizers/and all that good stuff.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/3dvhNq0P4rNaFqmj21jKF5&lt;/p&gt;
&lt;p&gt;...here&apos;s a lights video for good measure. They&apos;re like Jell-O, there&apos;s always room for more!&lt;/p&gt;
&lt;p&gt;http://www.youtube.com/watch?v=95ehUqpwrnU&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Perry Saves Christmas By Phineas And Ferb</title><link>https://dillieo.me/posts/growth/2012-12-14-12-songs-of-christmas-perry-saves-christmas-by-phineas-and-ferb/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-14-12-songs-of-christmas-perry-saves-christmas-by-phineas-and-ferb/</guid><description>Phineas and Ferb Christmas</description><pubDate>Fri, 14 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;http://open.spotify.com/track/35RR0sUJtfdTVWi98cGMCg&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Sleigh Ride By Harry Connick Jr</title><link>https://dillieo.me/posts/growth/2012-12-13-12-songs-of-christmas-sleigh-ride-by-harry-connick-jr/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-13-12-songs-of-christmas-sleigh-ride-by-harry-connick-jr/</guid><description>When My Heart Finds Christmas</description><pubDate>Thu, 13 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s another classic, but Harry puts such a swing to it you can&apos;t help but grab somebody and celebrate!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/3DnYHzeul8cWJDEuTFd79H&lt;/p&gt;
&lt;h6&gt;Related articles&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://mattdantodd.com/2012/12/07/favorite-christmas-songs-o-holy-night-guest-post-from-michaeljthom/&quot;&gt;Favorite Christmas songs: O Holy Night [Guest Post from @michaeljthom]&lt;/a&gt; (mattdantodd.com)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://glennpackiam.typepad.com/my_weblog/2012/11/how-advent-can-be-much-more-than-the-christmas-season.html&quot;&gt;How Advent Can Be Much More Than &quot;The Christmas Season&quot;&lt;/a&gt; (glennpackiam.typepad.com)&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Merry Christmas Baby By Bb King</title><link>https://dillieo.me/posts/growth/2012-12-12-12-songs-of-christmas-merry-christmas-baby-by-bb-king/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-12-12-songs-of-christmas-merry-christmas-baby-by-bb-king/</guid><description>B.B. King Christmas</description><pubDate>Wed, 12 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s okay to be a little blue on Christmas, especially if B.B. King is there to help you through it. Enjoy!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/3d5NwGbqjMxerwduiHJzys&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas Carol Of The Bells By David Benoit</title><link>https://dillieo.me/posts/growth/2012-12-10-12-songs-of-christmas-carol-of-the-bells-by-david-benoit/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-10-12-songs-of-christmas-carol-of-the-bells-by-david-benoit/</guid><description>GRP Christmas Volume 1</description><pubDate>Mon, 10 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This lovely jazz piece opens up with soft and light piano and gradually builds in intensity with the full jazz quartet, only to calm down again at the end. Perfect of a snowy Christmas night!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/4wBkH6xTZVydeKe952H70b&lt;/p&gt;
</content:encoded></item><item><title>Review The Unofficial Lego Builders Guide</title><link>https://dillieo.me/posts/projects/2012-12-07-review-the-unofficial-lego-builders-guide/</link><guid isPermaLink="true">https://dillieo.me/posts/projects/2012-12-07-review-the-unofficial-lego-builders-guide/</guid><description>lego_builders_guide_cover</description><pubDate>Fri, 07 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I love legos! I still have my functioning train set from when I was 10 years old that we pull out at Christmas. I have the 1st edition lego death star that took a week to put together, and a handful of other items around. My girls are getting into legos now too, which adds to the fun. We spend hours putting together the designs on the pages, or making our own, like a fire station, movie theatre, or even &quot;Captain Frank&apos;s Emporium&quot;. So when I stumbled upon &lt;em&gt;The Unofficial LEGO Builder&apos;s Guide&lt;/em&gt; by Allan Bedford, I had to look to see what new inspirations I could find with them.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This book provides an amazing &quot;engineering guide&quot; on how to build models with legos. It provides the fundamental details about most the pieces in the system (bricks, plates, etc.). From there it moves into building techniques, such as overlapping bricks on each later for maximum stability. It also demonstrates how to get desired effects, such as angles or curves, using pieces you might not expect. Once you get the hang of these concepts, you&apos;re introduced to building models to scale, just as you see it in Legoland or other places. You&apos;re even introduced to the concept of &quot;mega bricks&quot; which look like your normal small bricks. You are also introduced to mosaic patterns and sculpting with your bricks. All of this culminates by the end of the book in the process of building a simple scale model of a space shuttle.&lt;/p&gt;
&lt;p&gt;In addition to this overview, the book provides a &quot;Brickopedia&quot; which catalogues all of the prominent pieces in the LEGO universe. It gives you the catalog number (in case you need to order some), it&apos;s release date, and helpful insights on how to work with them. There is also a section showing how to use design grids, which are amazingly helpful at visualizing and laying out your project, from any angle.&lt;/p&gt;
&lt;p&gt;This book wasn&apos;t what I was expecting. I was expecting to read a general guide on how to make simple trees, or people, or houses. Instead, I read a great &quot;foundational&quot; book on how to get more out of my lego building experience. I immediately saw how I could take some model ideas and put them into action after reading this book. I was hoping that I could pass this book on to my 6 year old girls and let them run wild with it, but I don&apos;t think it will quite suit them. However, when they turn 9 or 10, this will be the perfect book to enable them to expand their building horizons.&lt;/p&gt;
&lt;p&gt;_&lt;em&gt;The Unofficial LEGO Builder&apos;s Guide&lt;/em&gt; by Allan Bedford_ is the perfect book for your beginning or intermediate LEGO builder looking to get to the next level with their building skills. With plenty of pictures and examples, it is a fun and insightful read all at the same time. While I wouldn&apos;t recommend it to the youngest of builders, it would make the perfect gift for anybody 9 to 99.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://shop.oreilly.com/product/9781593274412.do&quot;&gt;http://shop.oreilly.com/product/9781593274412.do&lt;/a&gt;&lt;a href=&quot;http://shop.oreilly.com/product/0636920023630.do&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas The Twelve Days Of Christmas By Phineas And Ferb</title><link>https://dillieo.me/posts/growth/2012-12-06-12-songs-of-christmas-the-twelve-days-of-christmas-by-phineas-and-ferb/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-06-12-songs-of-christmas-the-twelve-days-of-christmas-by-phineas-and-ferb/</guid><description>Phineas and Ferb Christmas</description><pubDate>Thu, 06 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m a huge fan of Phineas and Ferb and their Christmas special didn&apos;t disappoint one bit! Even more fun was that they released all of their music from the special on a CD! Here&apos;s the gang singing their altered rendition of The 12 Days of Christmas. I think Dr. Doofenshmirtz really stole the show on this one!&lt;/p&gt;
&lt;p&gt;https://open.spotify.com/track/18NtQ8IhxiQof1Kv7r9uPr&lt;/p&gt;
</content:encoded></item><item><title>12 Songs Of Christmas The Little Drummer Boy By Audio Adrenaline</title><link>https://dillieo.me/posts/growth/2012-12-04-12-songs-of-christmas-the-little-drummer-boy-by-audio-adrenaline/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-12-04-12-songs-of-christmas-the-little-drummer-boy-by-audio-adrenaline/</guid><description>Audio Adrenaline Santa</description><pubDate>Tue, 04 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If we&apos;re going to kick off some songs with a bang, no better than Audio Adrenaline to do it! Here&apos;s a Christmas classic, with a good straight rock feel!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/0kAQCqfFSGvX5kQBlkvGI3&lt;/p&gt;
</content:encoded></item><item><title>Logging Client Errors Using Log4Net Mvc And Ajax</title><link>https://dillieo.me/posts/development/2012-12-03-logging-client-errors-using-log4net-mvc-and-ajax/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-12-03-logging-client-errors-using-log4net-mvc-and-ajax/</guid><description>Logging Client Errors Using Log4Net Mvc And Ajax</description><pubDate>Mon, 03 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you know, I&apos;m a big fan of log4net. I love the flexibility it has and the power you can leverage with it. One thing I&apos;ve been wanting to do for a while now is to be able to log client side messages in my logs. That way if there is an error due to a data call misfiring, some poorly formatted JSON, or I simply want to track some user clicks, I can have access to it. Thanks to AJAX and MVC controllers, I can now do this quickly and easily.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step is to have log4net up and running in your web application. If you don&apos;t yet, I have a &lt;a href=&quot;/log4net-a-quick-start-tutorial-and-guide-with-mvc-and-sqlite&quot;&gt;tutorial&lt;/a&gt; that can get you up and running quickly.&lt;/p&gt;
&lt;p&gt;Once log4net is up and running, the first step is to create a controller to handle the logging process. I called mine &quot;ClientLogController&quot; and defined the methods as follows:&lt;/p&gt;
&lt;p&gt;[gist]4172572&lt;/p&gt;
&lt;p&gt;You&apos;ll notice that I have each logging level setup as it&apos;s own method. I do this so that if I need to do some custom processing in the future (such as pull some server diagnostic information on a fatal error) I can do so just for that level and keep everything separate. You&apos;ll also notice that my method are void methods. I&apos;m not planning on returning anything to the client. If a logging call fails, it fails, and there&apos;s nothing I can do about it, except fire up the debugger in Visual Studio or use the debug mode in log4net. I&apos;m fine with this. If you do need to track the results, it is simple enough to update the methods to use ActionResults and return the PartialView of your choice.&lt;/p&gt;
&lt;p&gt;The next step is to create the JavaScript method that will make our AJAX request to the controller. I create a file called logging.js and add the following:&lt;/p&gt;
&lt;p&gt;[gist]4172612&lt;/p&gt;
&lt;p&gt;You&apos;ll notice here that I have split up the logging events again based on type, to allow me to do additional processing if needs be (such as pop up a modal box on FATAL errors). I also use the .ajax() method instead of the .post() method, since I have additional configuration options if I need them for processing success/fail messages in the future.&lt;/p&gt;
&lt;p&gt;That&apos;s all you need. Simply add logging.js to your layout page and you can quickly wire up a button to test your logging as follows:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;input type=&quot;button&quot; value=&quot;Log Me!&quot; onClick=&quot;LogDebug(&apos;test debugging&apos;); alert(&apos;Test complete.&apos;);&quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s all you need! With the increasing amount of client side processing and AJAX requests that are in modern web applications, being able to easily track errors (or details) without having to dump information to the screen or having your end users try to explain what happens is more valuable than ever. Using log4net and AJAX will allow you track these items without a lot of overhead.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Its Christmas Advent Again Kick Up The Music</title><link>https://dillieo.me/posts/development/2012-11-30-its-christmas-advent-again-kick-up-the-music/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-11-30-its-christmas-advent-again-kick-up-the-music/</guid><description>Its Christmas Advent Again Kick Up The Music</description><pubDate>Fri, 30 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s that time again! Time to kick off the season of advent and celebrate the birth of Christ! Being the music junkie that I am, I have several places you can go (free too!) to get into that holiday spirit!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-12-phatchunkochristmas.png&quot; alt=&quot;Christmas Mix Cover&quot; /&gt; The first off (and my own shameless music plug) is what I like to call the &quot;Phat Chunk &apos;O Christmas&quot; this is a collection of my own holiday music I&apos;ve collected over the years. There&apos;s a nice mix of instrumental, vocal, jazz, classical, and even a smidge of techno. There&apos;s about 16 hours worth of music in here, so putting it on shuffle will keep you busy. Give it a listen!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/6iapIFkfx2L1RVJ4eXUQRL&lt;/p&gt;
&lt;p&gt;If you need a more condensed version, here&apos;s what I call my &quot;Essential Christmas Mix&quot;, perfect for a 1 hour party or listening session.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/2bJa1XC3Oy2EVLLiHPyOoT&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-12-christmaslounge.png&quot; alt=&quot;Christmas Lounge&quot; /&gt; Finally, I&apos;ve been a huge fan of &lt;a href=&quot;http://somafm.com/christmas&quot;&gt;Soma.FM&apos;s Christmas Lounge&lt;/a&gt; (though I thought it was better when it was named &quot;Santa Lounge&quot;) that offeres a family friendly and very eclectic mix of Christmas music. You&apos;ll get some Bossa Nova, Big Bad Voodoo Daddy, Herb Albert, and even a little classic Charlie Brown music with some turntables mixed into the mix. You can&apos;t go wrong with the &lt;a href=&quot;http://somafm.com/christmas&quot;&gt;Christmas Lounge&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I know I&apos;m excited to celebrate, and I need to put up my lights this weekend. I&apos;ll be posting a few of my favorite Christmas songs during the next few weeks to share. I hope you enjoy!&lt;/p&gt;
&lt;p&gt;Oh, is there any Christmas music/stations you can pass along? Christmas music is like Christmas lights and Jell-O, there&apos;s always room for more!&lt;/p&gt;
</content:encoded></item><item><title>Log4Net A Quick Start Tutorial And Guide With Mvc And Sqlite</title><link>https://dillieo.me/posts/development/2012-11-29-log4net-a-quick-start-tutorial-and-guide-with-mvc-and-sqlite/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-11-29-log4net-a-quick-start-tutorial-and-guide-with-mvc-and-sqlite/</guid><description>Log4Net A Quick Start Tutorial And Guide With Mvc And Sqlite</description><pubDate>Thu, 29 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Note: A lot of this is duplicated from my &lt;a href=&quot;/log4net-a-quick-start-guide&quot;&gt;original post&lt;/a&gt;, but I felt it helpful to add a new post with new technology!&lt;/p&gt;
&lt;h2&gt;Synopsis&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://logging.apache.org/log4j&quot;&gt;Log4Net&lt;/a&gt;, a port of the well known Log4J being used in Java environments, provides a feature rich, highly configurable, and simple to configure logging mechanism that you can have up and running in no time. This article will give you a basic overview of the library and how you can integrate it into your projects quickly and easily.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Application logging is a great way to debug and maintain your application for its entire lifecycle. Unfortunately, setting up an efficient logging mechanism can be time consuming and often not feasible with short deadline projects. Those days are no more. Log4Net, a port of the well known Log4J being used in Java environments, provides a feature rich, highly configurable, and simple to configure logging mechanism that you can have up and running in no time. This article will give you a basic overview of the library and how you can integrate it into your projects quickly and easily.&lt;/p&gt;
&lt;h2&gt;The Fundamentals&lt;/h2&gt;
&lt;p&gt;Log4Net contains 5 levels of debugging and two &quot;Catch All / Revoke All&quot; levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ALL&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Debugging&quot;&gt;DEBUG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;INFO&lt;/li&gt;
&lt;li&gt;WARN&lt;/li&gt;
&lt;li&gt;ERROR&lt;/li&gt;
&lt;li&gt;FATAL&lt;/li&gt;
&lt;li&gt;OFF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These levels function heirarchically, so that a debug level set to &quot;WARN&quot; will log any WARN, ERROR, or FATAL log events. The debug level is configured through a &lt;a href=&quot;http://en.wikipedia.org/wiki/XML&quot;&gt;XML&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Configuration_file&quot;&gt;configuration file&lt;/a&gt;. That way you can change the debug level on the fly as needed without having to recompile the application.&lt;/p&gt;
&lt;p&gt;Log4Net has three types of objects that make the application work:&lt;/p&gt;
&lt;p&gt;**Loggers: **These serve as the &quot;receivers&quot; of events from the class itself and do any processing necessary, such as determining the log level, retrieving the necessary code/exception data, and passing it on to the appender. **Appenders: **These serve to save the logging information to the medium specified. There are a wide variety of appenders available including File, &lt;a href=&quot;http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol&quot;&gt;SMTP&lt;/a&gt;, Database, &lt;a href=&quot;http://en.wikipedia.org/wiki/Event_Viewer&quot;&gt;Windows Event Log&lt;/a&gt;, and more. **Layouts: **Layouts are the format in which the appenders write their data. Some layouts, such as XML Layouts, have a fixed format. Others, such as Pattern Layouts, allow you to customize which log information to write to the appender. Once you have defined a logger, appender, and layout in your configuration file, you&apos;re all set to log within your application!&lt;/p&gt;
&lt;h2&gt;Setting Up and Configuring Your &lt;a href=&quot;http://en.wikipedia.org/wiki/Logging&quot;&gt;Logging&lt;/a&gt; Environment&lt;/h2&gt;
&lt;p&gt;The beauty of Log4Net is that you can mix and match loggers, appenders, and layouts however you like. For example, you could have one logger tracking all FATAL events using a SMTP appender to send an e-mail while also having a second logger tracking all WARN and higher events to a file appender for general purposes. You could also have a single logger with multiple file appenders, each using a different pattern layout. One layout would be optimized for human consumption and the other for another computer to read and process.&lt;/p&gt;
&lt;p&gt;Also remember that loggers are attached to a given class. With that in mind you can have one logger attached to the root class of your application doing general logging and a second logger attached to your critical business operations class logging at the intensive debug level. Since all of these loggers can be turned on or off through the configuration file, you can turn on the high level debugging only when necessary and have it zero in only on the mission critical information.&lt;/p&gt;
&lt;p&gt;For this article, we&apos;re going to use the &lt;a href=&quot;http://sqlite.org&quot;&gt;SQLite database&lt;/a&gt; to store our logs. The advantage to this is that we can sort and search our log entries quickly and easily with any SQLite management tool. The database is also stored locally, so we don&apos;t run into any problems if the network connection between our web server and database server goes down. We can actually log this! We&apos;ll go ahead and log everything from the WARN level and above.&lt;/p&gt;
&lt;p&gt;The first step is to install Log4Net. Fortunately, the &lt;a href=&quot;http://nuget.org&quot;&gt;Nuget Package Manager&lt;/a&gt; makes this really simple. Open up the package manager console and enter the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;install-package log4net&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;We also need to install the SQLite database framework. Nuget makes things easy again. Enter the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;install-package System.Data.SQLite&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Once this is complete, we need to create a configuration file for Log4Net. I prefer to use a seperate file so that multiple appenders/layouts don&apos;t cause the main configuration file to get too complex to read. It also allows us to &lt;a href=&quot;/changing-log4net-configurations-dynamically&quot;&gt;modify our configuration on the fly&lt;/a&gt; without triggering a full application pool reset. We&apos;ll start with a basic FileAppender setup which will write log events to a local &lt;a href=&quot;http://en.wikipedia.org/wiki/Text_file&quot;&gt;text file&lt;/a&gt;. In addition, the logger will only write events that are at the WARN level or above.&lt;/p&gt;
&lt;p&gt;[gist]4170237&lt;/p&gt;
&lt;p&gt;I have added two important flags to this configuration. The &quot;appendToFile&quot; flag will make the log continue to append to the file instead of overwriting it. The &quot;lockingModel&quot; flag will put a minimal lock on the file, that way I can have multiple processes log to the same file if necessary. I can also view this file in other application, such as &lt;a href=&quot;http://notepad-plus-plus.org/&quot;&gt;Notepad++&lt;/a&gt; without disrupting the logging process.&lt;/p&gt;
&lt;p&gt;In addition, we need to specify that we want to have Log4Net look for our configuration file for initialization/setup purposes. With MVC, I&apos;ve had troubles getting log4net to initialize when starting things up in the AssemblyInfo.cs file, so I add the following code the Application_Start method in your Global.asax file:&lt;/p&gt;
&lt;p&gt;[gist]4170313&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. Now you are ready to start logging your application.&lt;/p&gt;
&lt;h2&gt;Logging Your Application&lt;/h2&gt;
&lt;p&gt;The first step to log an event is to make sure a logger has been defined for the class. In my case, I&apos;ve created a new controller called &quot;SampleController&quot; and at the top of the class declaration, I&apos;ve added a new logger instance:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class SampleController : Controller 
{ 
    private static readonly ILog log = LogManager.GetLogger(typeof(SampleController).FullName);

// // GET: /Sample/ public ActionResult Index() { } 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point, you can log events according to your own desires. I typically like to use the ERROR log level to log any exceptions that are caught by the application. I will use the INFO log level as a &quot;first level&quot; debugging scheme to show whenever I enter or exit a method. From there I use the DEBUG log level to trace detailed information. The FATAL log level is used for any exceptions that I have failed to catch in my web based applications. All of this logging then makes a class look something like this...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public ActionResult GenerateDebugLog() 
{ 
    log.Info(&quot;Starting GenerateDebugLog method...&quot;); 
    log.Debug(&quot;No input parameters for method.&quot;);

    log.Info(&quot;Starting loop.&quot;); 
    for (var i = 0; i &amp;amp;lt;= 10; i++ ) 
    { 
        log.Debug(&quot;Current value: &quot; + i); 
    } 
    
    log.Info(&quot;Loop complete.&quot;);

    log.Info(&quot;GenerateDebugLog method complete.&quot;);

    try 
    { 
        throw new Exception(&quot;Evil exception test!&quot;); 
    } 
    catch(Exception ex) 
    { 
        log.Error(&quot;Bad Juice!&quot;, ex); 
    }

    ViewBag.Message = &quot;Sample complete.&quot;; return View(); 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice that the log.Error method has a second parameter specified, which appens to be the exception thrown. All of the logging methods have an overloaded signature that will accept an exception as an argument. The details of the exception is parsed and added to the log accordingly.&lt;/p&gt;
&lt;p&gt;One thing I want to point out in this example is that the logging may seem excessive for such a trivial method. The thing to realize is that since logging level is &lt;a href=&quot;/changing-log4net-configurations-dynamically&quot;&gt;dynamically configurable&lt;/a&gt;, we can slide the logging level depending on our needs. By default, the logging mode is set to WARN, which means that only the exception message will be logged. This works perfect for the day to day operations of the application, and if an exception occurs, most likely we will have all the information we need to solve the issue. But if we needed to go deeper into the application to debug an issue, all you have to do is update the logging level to INFO or DEBUG to get the appropriate data you need. When debugging is complete, change the logging level back to WARN and all the details are no longer logged. This scenario works out great for web environments where you don&apos;t have direct access to debug the source code. In addition, having the log4net configuration in a seperate file allows you to change the logging level without triggering a refresh of IIS, which would occur if the configuration was stored in the Web.config file.&lt;/p&gt;
&lt;h2&gt;Logging to SQLite&lt;/h2&gt;
&lt;p&gt;The final step is to setup an appender for SQLite. Unfortunately there is no &quot;SQLite&quot; appender out of the box. However, since the System.Data.SQLite library does leverage ADO.Net, we can use the AdoNetAppender and configure it accordingly.&lt;/p&gt;
&lt;p&gt;The first step is to create our log database. Start up your SQLite Manager of choice (I really like &lt;a href=&quot;http://www.sqliteexpert.com/&quot;&gt;SQLite Expert&lt;/a&gt;) and run the following command to create the table you need:&lt;/p&gt;
&lt;p&gt;[gist]4170581&lt;/p&gt;
&lt;p&gt;After that, we update our log4net.config file to add our SQLite appender:&lt;/p&gt;
&lt;p&gt;[gist]4170626&lt;/p&gt;
&lt;p&gt;Without going into too many details here, you&apos;ll notice that we define what our INSERT statement is, as well as the layout for each column to be expected in the database. The most important item to note is the connection string value itself. Since our connection string needs to abide by ADO.Net rules, we can&apos;t specify a relative path to our log file, we either have to hard code the path, or use some of the .Net defaults. For the sake of portability, I&apos;ve gone ahead and specified that our log file will reside in the |DataDirectory| folder, which maps to the App_Data folder within the root of the application folder.&lt;/p&gt;
&lt;p&gt;If you want to circumvent this, you can modify where the DataDirectory parameter maps to through in the Application_Start method.&lt;/p&gt;
&lt;p&gt;Make sure to add this BEFORE you do your log4net initialization or SQLite will continue to look for your database in the App_Data folder (and drive you insane like it did me one day. 8^D)&lt;/p&gt;
&lt;h2&gt;ASP.NET: One Tricky Detail&lt;/h2&gt;
&lt;p&gt;One thing to take note of when logging in your ASP.NET applications is that the log4net will attempt to log using whatever user account is assigned to the ASP.NET worker process itself. Depending on your server and network configuration, this can cause problems with the log being able to write entires. Since log4net does not throw exceptions when it cannot perform its duties (you need to turn on debug mode for that), you will have an empty log and no means of tracking things.&lt;/p&gt;
&lt;p&gt;There are a couple of workarounds to this. The first is to give your log file or folder containing your log file write priviliges by everybody. The second is to elevate the privileges of the user account running the ASP.NET process. Both of these solutions can open up extra security holes that may not be desirable.&lt;/p&gt;
&lt;p&gt;The solution that has worked best in my Intranet environment is to turn on identity impersonation in the web.config file. Granted we have this solution in place anyway to facilitate Active Directory logins, but doing this allows the log4net to write entries as the user currently logged in to the application. In addition, the log file itself has granted write priviliges to Authenticated Users, so this prevents unknown users from potentially tampering with things.&lt;/p&gt;
&lt;h2&gt;Viewing the Log&lt;/h2&gt;
&lt;p&gt;Once you have your log entries generated, you need a means of viewing the log. This will depend on what type of appender and layout pattern you are using. Notepad can be used to view most of the FileAppender logs. You could even setup the Pattern layout to meet a standard you could easily parse into another application, such as a CSV format for Excel. The example above used the SQLite layout because it works great with the &lt;a href=&quot;http://www.sqliteexpert.com/&quot;&gt;SQLite Expert&lt;/a&gt; program I mentioned earlier. I&apos;m also working on updating &lt;a href=&quot;http://hacksaw.codeplex.com&quot;&gt;Hacksaw&lt;/a&gt; to support SQLite based logs (a personal creation).&lt;/p&gt;
&lt;p&gt;In addition, you could use the XmlLayoutSchemaLog4j layout pattern. This pattern is also viewable within the Hacksaw tool, but Apache has also provided a great tool for viewing log entries that are in this format. The tool is called &lt;a href=&quot;http://logging.apache.org/chainsaw/&quot;&gt;Chainsaw&lt;/a&gt; and it can be downloaded or run as a Java Web Start application. The application is easy to use and can also be used as an UDP Receiver to recieve log events that the UDP appender sends out in real time.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;I hope this article has you excited about Log4Net. It provides a free and robust method of logging anything you desire within you applications. It is easy to configure the log in any way you desire and extend it to meet your custom logging needs. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Aborting Builds In Visual Studio Based On File Contents</title><link>https://dillieo.me/posts/development/2012-11-27-quick-tip-aborting-builds-in-visual-studio-based-on-file-contents/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-11-27-quick-tip-aborting-builds-in-visual-studio-based-on-file-contents/</guid><description>Quick Tip</description><pubDate>Tue, 27 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Remember a little while back when I had that problem with &lt;a href=&quot;/quick-tip-fixing-the-datetime2-problem-with-entity-framework&quot;&gt;Entity Framework and SQL Server 2005/2008 databases&lt;/a&gt;? Well, it raised it&apos;s ugly head again, and I was looking for a way to detect our error. Fortunately, we can setup a pre-build event to detect the bug and stop the process from going further.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Visual Studio has a wonderful little feature in the project settings for pre-build and post-build events. Mainly they are for running batch scripts to copy/move files or other small things. However, since we have the full featured batch command script at our disposal, we can do a quick file content check and abort if we don&apos;t find what we&apos;re expecting.&lt;/p&gt;
&lt;p&gt;Open your solution in Visual Studio, right click on the project and select &quot;Properties&quot;. From there, click the tab that says &quot;Build Events.&quot; You&apos;ll see something like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-buildeventsscreen.png&quot; alt=&quot;Build Events Screen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From here, either click the &quot;Edit Pre-build&quot; button or you can type directly into the window. Here&apos;s the basic format of what you need your script to say&lt;/p&gt;
&lt;p&gt;[gist]4162791&lt;/p&gt;
&lt;p&gt;In my case, I&apos;m checking my cptt.edmx file in my DAL folder to make sure that the ProviderManifestToken value is set to 2005. My particular pre-build command looks like this:&lt;/p&gt;
&lt;p&gt;[gist]4162784&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it! If I modify my cptt.edmx file in Notepad and change the value to 2008 (what we don&apos;t want), the next time I do a build I see the following:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-buildeventserror.png&quot; alt=&quot;Build Events Error&quot; title=&quot;Build Events Error&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My build won&apos;t continue after that, and I know that I need to fix things before I can continue.&lt;/p&gt;
&lt;p&gt;There you have it! Simple pre-build error checking based on file contents. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Personal Vs Individualistic Faith</title><link>https://dillieo.me/posts/growth/2012-11-19-personal-vs-individualistic-faith/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-11-19-personal-vs-individualistic-faith/</guid><description>Personal Vs Individualistic Faith</description><pubDate>Mon, 19 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;...American Christianity is mired in this individualistic mindset right along with the rest of the culture. Most American Christians confuse Christianity being a personal faith with its being an individualistic faith.&lt;/p&gt;
&lt;p&gt;While each one of us must respond personally to God’s grace, the result of that response is incorporation into Christ’s body, the Church. There, as Chuck Colson constantly reminded us, we are called to live for others and not for ourselves.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.breakpoint.org/bpcommentaries/entry/13/20819&quot;&gt;http://www.breakpoint.org/bpcommentaries/entry/13/20819&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;~ Eric Metaxas&lt;/p&gt;
</content:encoded></item><item><title>Thankful Tree 2012</title><link>https://dillieo.me/posts/life/2012-11-19-thankful-tree-2012/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2012-11-19-thankful-tree-2012/</guid><description>Thankful Tree 2012</description><pubDate>Mon, 19 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s Thanksgiving this week, and while there are always a plethora of things to be thankful for, here are a few I shared around the dinner table with the family this past week...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;3 Amazing Women in my Life&lt;/h3&gt;
&lt;p&gt;That would be my wife and my two daughters. While some men may cringe at being outnumbered 3 to 1, I learn so much from them and they help tailor my &quot;computer geeky cards and games&quot; side with princesses and nail painting. My wife knows me like nobody else does and the comfort and freedom in that is profound. It really can&apos;t be expressed in a simple couple of lines.&lt;/p&gt;
&lt;h3&gt;My Job&lt;/h3&gt;
&lt;p&gt;At one level, I&apos;m thankful for a job that puts meat on the table, a roof over our heads, and clothes to keep us warm. But even more than that, I have a career to improve myself with, and &lt;a href=&quot;http://freshconsulting.com&quot;&gt;an employer&lt;/a&gt; that gives me the flexibility to work non-standard hours when needed and new challenges and opportunities to expand my software craftsmanship. In the past year and a half I&apos;ve learned more and worked on more new technologies than in the previous 8 years combined.&lt;/p&gt;
&lt;h3&gt;Cactus Cooler&lt;/h3&gt;
&lt;p&gt;Hey, sometimes it&apos;s the simple things. A cold refreshing cactus cooler does the trick more often than not. 8^D&lt;/p&gt;
&lt;h3&gt;God&apos;s Daily Provisions&lt;/h3&gt;
&lt;p&gt;More and more I&apos;m realizing that all I need is my mana, or my daily bread. I learn more and more not to worry about what happened yesterday. More importantly, I learn not to worry about what will happen tomorrow, for therein lies a can of worms I don&apos;t need spilling into today&apos;s adventures. God provides my daily bread, just enough to make it through the day. While it seems frustrating that that little bit of extra money we had just went to fix the car, I&apos;m learning that the money was there TO fix the car, instead of being stuck with one car or having to borrow more money. Day by day God provides, that&apos;s all I can really ask for.&lt;/p&gt;
&lt;p&gt;How about you? What are you thankful for this year?&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Fix Old Wordpress Links With The Redirection Plugin And The Wayback Machine</title><link>https://dillieo.me/posts/development/2012-11-12-quick-tip-fix-old-wordpress-links-with-the-redirection-plugin-and-the-wayback-machine/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-11-12-quick-tip-fix-old-wordpress-links-with-the-redirection-plugin-and-the-wayback-machine/</guid><description>Quick Tip</description><pubDate>Mon, 12 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been honored to be the webmaster over at &lt;a href=&quot;http://evangelicaloutpost.com&quot;&gt;Evangelical Outpost&lt;/a&gt; for a few years now. The site itself dates back to 2003, but I haven&apos;t been around quite that long. Being that the site has changed owners, webmaster, and formats a couple of times, our permalink structure has changed a couple of times as well. As a result, we&apos;re starting to find some 404 errors coming in from outside links. The old permalink format wasn&apos;t in any form we could recognize (post ID, date code, title, etc.), and I was worried that they might be lost forever. However, thanks to two little features, Redirection and the WayBack Machine, we can now successfully get our links working again! Here&apos;s how.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Our old links were using an odd format of &quot;archives/001234.html&quot; but the number itself didn&apos;t match up to the post Id. While the initial bad links were found through human intervention, the rest I found after installing a great Wordpress plugin called &lt;a href=&quot;http://wordpress.org/extend/plugins/redirection/&quot;&gt;Redirection&lt;/a&gt;. This plugin helps you manage your bad links and redirects without even having to worry about modifying your .htaccess file, though that option is available. After installing the plugin, I went to the Tools -&amp;gt; Redirection section, clicked on the &quot;Log&quot; link at the top, and noticed we had quite a few things to fix:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-redirectionlog.png&quot; alt=&quot;Redirection Log&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As I mentioned earlier, it was hard to track down where these posts actually went. When we were manually tracking these down, sometimes the titles matched, or the description was good enough to piece things together, but other times they weren&apos;t. The best bet was to somehow find a copy of the post when it was using the old URL format. This is where the &lt;a href=&quot;http://archive.org/web/web.php&quot;&gt;WayBack machine&lt;/a&gt; saves the day!&lt;/p&gt;
&lt;p&gt;Just in case you didn&apos;t know, the WayBack machine has been taking &quot;snapshots&quot; of the Internet as far back as 1996. It&apos;s a great way to see how some sites have evolved over time, or find that lost Geocities page you once had. The good news is that the WayBack machine makes its snapshots based on the URL format it was at the time of the snapshot, not the latest version. Using this tactic, it allows us to plug in a URL and get the details we need. I took the full URL of the first item in the screenshot above and plugged it into the machine:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-waybackresults.png&quot; alt=&quot;WayBack Results&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Look at that! The WayBack Machine had crawled that URL several times, once as recent as 2006. Notice that we have a hilighted date of when one of the snapshots was made. Let&apos;s click that:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-waybacksite.png&quot; alt=&quot;WayBack Site&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s the site we&apos;re looking for! Having the title, I can now find it in my post archive. Once I do that, I have the URL I need to redirect any request to.&lt;/p&gt;
&lt;p&gt;The final step is to setup the redirection itself. If you notice in the Redirection log. There&apos;s a nice little + icon to the far right of the entry. Simply click on this and it will take us to the section to add a new redirection:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-redirectionnewentry.png&quot; alt=&quot;Redirection New Entry&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll notice that I&apos;ve already pasted the proper redirect into the &quot;Target URL&quot; section. Notice that we only need the URL portion after our domain, so if we ever move the site to a new domain, we can take our redirections with us. For now we are using the default &quot;Redirections&quot; group, though you could create more if you need to. Once you&apos;re done, click the &quot;Add Redirection&quot; button and the redirection has been created!&lt;/p&gt;
&lt;p&gt;Click the &quot;Redirects&quot; link near the top of the page and you&apos;ll see the item added to the list (I have a few others here now too):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-11-redirectionsummary.png&quot; alt=&quot;Redirection Summary&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it! You&apos;ll even have a log of the redirects, which can come in handy if you need to track statistics or other details.&lt;/p&gt;
&lt;p&gt;I&apos;ll admit there is a bit of manual work to be done through this process, but it sure beats having a lot of dead links that draw traffic away to your site. I hope this comes in handy for you. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Tame That Tonguetweettext</title><link>https://dillieo.me/posts/development/2012-11-09-tame-that-tonguetweettext/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-11-09-tame-that-tonguetweettext/</guid><description>Tame That Tonguetweettext</description><pubDate>Fri, 09 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;ve reach the end of the week of another election year. It&apos;s been rather intense, especially with social media providing additional venues in which to research and discuss the issues. Sadly I&apos;ve seen some discussions get down to the point of name calling and caustic speech of the most derogatory nature. Coincidentally enough, the bible study I&apos;ve been going through this week has been focusing on the book of Proverbs, and more poignantly, how powerful the tongue is. It is amazing how our words can so easily devastate or elevate a person in a matter of seconds. The book of Proverbs encourages us to tame our tongues, and here are a couple of pointers/thoughts on the matter.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;1. Wait 10 seconds before speaking, tweeting, posting, texting, pinning, whatever.&lt;/h3&gt;
&lt;p&gt;It&apos;s amazing how 10 short seconds can mean a world of difference. You see that post, or hear that sound bite, and immediately you&apos;re furious or cynical, or a plethora of other emotions. You jot down that quick rebuttal/comment and send it off before even realize what you&apos;ve said, or even how you&apos;ve said it. Often enough you wind up looking foolish or make the other person equally furious, which only makes things worse. I realize that 10 seconds is an eternity these days in the realm of instant gratification and data, but you&apos;ll be happy you had a second to breathe and compose your thoughts. You might not even have to even respond after that.&lt;/p&gt;
&lt;h3&gt;2. Remember that other person is a unique and precious soul too.&lt;/h3&gt;
&lt;p&gt;Too often when we are in our discussion, especially our online ones, we tend to treat the other person as if they&apos;re just a bunch of bits, or a photo on a random page, or something even more distant. But we&apos;re not. We&apos;re all precious and unique souls, more than just machines made out of meat. It doesn&apos;t help things when people talk down to you, so likewise remember who you&apos;re talking to on the other end. Even if their ideas are wrong, it&apos;s necessary to communicate the truth to them in love. If you have kids, they countlessly have wrong ideas and do we simply say &quot;you&apos;re an idiot and evil person for thinking that&quot; and move on? I hope not! Instead we communicate with them their errors out of the desire to help them see the truth. They are our own flesh and blood after all! We should treat others (even over the digital divide) the same.&lt;/p&gt;
&lt;h3&gt;3. You can take back what you say, but it never truly goes away.&lt;/h3&gt;
&lt;p&gt;Maybe this is the &quot;internet archive&quot; rule of what we say. You&apos;ve probably heard by now how people can dig up old photos and documents that have been archived off the internet, no matter how far back they are. The same goes with what you&apos;ve said, especially the demeaning comments. I&apos;m still haunted by a few choice words I said to somebody a good decade ago in college. I immediately apologized and straightened things out, but there&apos;s still that emotional scar and memory. No matter how many years go by, it still flares up every now and then to remind me just how potent words are and how they are not to be used flippantly.&lt;/p&gt;
&lt;p&gt;Hopefully this will give you pause and remind you that you hold a mighty &quot;sword&quot; in your words and speech. It is a great responsibility to never take them lightly and remember to show respect to everybody else.&lt;/p&gt;
</content:encoded></item><item><title>Elmah A Quick Start Tutorial And Guide With Mvc And Nuget</title><link>https://dillieo.me/posts/development/2012-11-08-elmah-a-quick-start-tutorial-and-guide-with-mvc-and-nuget/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-11-08-elmah-a-quick-start-tutorial-and-guide-with-mvc-and-nuget/</guid><description>ElmahMain</description><pubDate>Thu, 08 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: A lot of this is a duplicate of my &lt;a href=&quot;/elmah-a-quick-start-tutorial-and-guide&quot;&gt;original post&lt;/a&gt; outlining ELMAH. However, with the advances of MVC and Nuget package management, I felt a new tutorial was in order. Enjoy!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Synopsis&lt;/h2&gt;
&lt;p&gt;Elmah (Error Logging Modules and Handlers) provides an excellent way for you to get a basic logging mechanism into your web application in minutes. One of the beautiful things about Elmah is that it exists as it’s own module, so you can integrate it into an existing web application without having to do anything invasive to your existing code. Elmah gives you detailed information about each exception it logs, including a “snapshot” of the “yellow page of death” that was generated for further examination.&lt;/p&gt;
&lt;p&gt;Application logging is a great way to debug and maintain your application for its entire lifecycle. While there are numerous logging frameworks out there these days, Elmah. This article will give you a basic overview of the library and how you can integrate it into your projects quickly and easily.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The Fundamentals&lt;/h2&gt;
&lt;p&gt;You can download Elmah from &lt;a href=&quot;http://code.google.com/p/elmah/&quot;&gt;their site&lt;/a&gt; in two forms, the binaries or the full source code. If you’re looking to simply use Elmah, simply download the binaries directly into your project using &lt;a href=&quot;http://nuget.org&quot;&gt;Nuget&lt;/a&gt;. Elmah allows you to log the exceptions into the following formats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;Oracle (OracleErrorLog)&lt;/li&gt;
&lt;li&gt;SQLite (version 3) database file&lt;/li&gt;
&lt;li&gt;Microsoft Access (AccessErrorLog)&lt;/li&gt;
&lt;li&gt;VistaDB&lt;/li&gt;
&lt;li&gt;Loose XML files&lt;/li&gt;
&lt;li&gt;RAM (in-memory)&lt;/li&gt;
&lt;li&gt;SQL Server Compact Edition (arrives with version 1.2)&lt;/li&gt;
&lt;li&gt;MySQL (arrives with version 1.2)&lt;/li&gt;
&lt;li&gt;PostreSQL (arrives with version 1.2)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elmah can be used with any version of the.Net Framework from 1.1 and above and will run under medium trust using version 2.0 and above, which enables you to use Elmah on most hosted sites. This is a big help since a some logging frameworks require full trust in order to function properly.&lt;/p&gt;
&lt;h2&gt;Configuring Your Logging Environment&lt;/h2&gt;
&lt;p&gt;For purposes of this article, we’re going to configure logging to use SQLite to log our exceptions. Using SQLite provides a nice database of our logs that we can access through third party tools if necessary, and helps keep the file size down, as opposed to using an XML file. In addition, not logging to SQL Server allows us to log database errors that otherwise might not get logged.&lt;/p&gt;
&lt;p&gt;Fortunately, the &lt;a href=&quot;http://nuget.org/&quot;&gt;Nuget&lt;/a&gt; package manager (now built into Visual Studio 2012 and &lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c&quot;&gt;easily added to Visual Studio 2010&lt;/a&gt;) handles most of the installation woes for us. It also allows us to easily update or uninstall the package if we decide to not use it.&lt;/p&gt;
&lt;p&gt;The first step is to install the Elmah and SQLite packages. Simply enter the following commands at at the package manager command prompt (available through View -&amp;gt; Other Windows in Visual Studio if you can&apos;t see it already.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;install-package elmah

install-package System.Data.SQLite
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After the packages have been installed, you&apos;ll notice that you already have the references to the proper binaries in your project AND your web.config has been setup for you. All we have left is to make a couple of modifications to the web.config file.&lt;/p&gt;
&lt;p&gt;The first step is to add a connection string pointing to the physical file where the log database will be saved. I&apos;ve become partial to having a &quot;Logs&quot; folder in my projects, so you can see the connection string as follows:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: In all of the web.config snippets below, if there already exists the proper tag for a given element (configSections, httpModules, etc.) don’t add them a second time, simply add your tag into the existing section.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then in our elmah configuration section, we go ahead and update the configuration to allow remote access to the file (so we don&apos;t have to VPN into the machine) and define the log type:&lt;/p&gt;
&lt;p&gt;For consistency, we update our location settings right below the elmah configuration section to match the path (only snippets are shown below):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;add verb=&quot;POST,GET,HEAD&quot; path=&quot;Logs/elmah.axd&quot; type=&quot;Elmah.ErrorLogPageFactory, Elmah&quot; /&amp;gt;

&amp;lt;add name=&quot;Elmah&quot; path=&quot;Logs/elmah.axd&quot; verb=&quot;POST,GET,HEAD&quot; type=&quot;Elmah.ErrorLogPageFactory, Elmah&quot; preCondition=&quot;integratedMode&quot;&amp;gt;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Note: In the configuration above, I’ve set the remote access property to true, allowing me to view the error log without having to log onto the server itself. This is quite handy in a hosted situation. If you do not need to enable remote access, set the value to false. You&apos;ll also want to add proper security to the log file so that random users cannot view the logs. You can get more details about securing you log file &lt;a href=&quot;http://code.google.com/p/elmah/wiki/SecuringErrorLogPages&quot;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Since we modified the path to our ELMAH handler and we&apos;re working with a MVC project, we need to also tell the MVC framework to ignore the specific route from being processed. Either in your App_Start handler within your Global.asax file or in the RouteConfig.cs file (depending on your project setup) add the following line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;routes.IgnoreRoute(&quot;Logs/elmah.axd/{\*pathInfo}&quot;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That’s it! Compile your app again, deploy the files, and you’re ready to go!&lt;/p&gt;
&lt;h2&gt;Logging Your Application&lt;/h2&gt;
&lt;p&gt;Since Elmah is setup to grab any unhandled exception and log it, we simply need to generate one for testing. In my project, I created a simple Controller called &quot;SampleController.cs&quot; and added the following ActionResult method:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;public ActionResult GenerateError() { // Nope, we&apos;re ending this party early. throw new Exception(&quot;Generate Error testing.&quot;); return View(); }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You shouldn&apos;t actually reach the view for this controller, but for good practice, make sure you create the appropriate View for this action as well. You can generate an error at this point by accessing the url: http://[YOUR_LOCAL_URL]/Sample/GenerateError&lt;/p&gt;
&lt;h2&gt;Viewing The Log&lt;/h2&gt;
&lt;p&gt;In order to view the log, you simply need to access the url http://[YOUR_LOCAL_URL]/Logs/elmah.axd. You’ll be greeted by a page similar to this:&lt;/p&gt;
&lt;p&gt;You can see how the basic details of the exceptions are displayed. Selecting the “Details” link displays a full dump of the exception in question:&lt;img src=&quot;@assets/images/posts/2011-03-elmahdetail1.png&quot; alt=&quot;ElmahDetail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From here you should have nearly everything you need to debug an issue with your site. Elmah also provides an RSS feed of recent exceptions and a way of downloading the entire log into a CSV file, if you need to work with it in other ways.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;I’m really impressed with how easy Elmah is to get running and how detailed the error logs it produces. I’m doubly impressed with how easy it is to get things up and running thanks to Nuget. While Elmah doesn’t allow you to configure levels of logging (such as log4net) it does provide great ways to filter your exception logs and even e-mail the exceptions to you. I highly recommend it.&lt;/p&gt;
</content:encoded></item><item><title>Review Regular Expressions Cookbook 2Nd Edition</title><link>https://dillieo.me/posts/development/2012-10-19-review-regular-expressions-cookbook-2nd-edition/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-10-19-review-regular-expressions-cookbook-2nd-edition/</guid><description>Regular Expressions Cover</description><pubDate>Fri, 19 Oct 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ll never forget the day I came across regular expressions. I was a year out of college and at my first &quot;big&quot; job at a major University and I ran into a challenge where I needed to detect the status of destination of packages arriving on campus based on a special reference code that was attached to the packages. While there were a large amount of options that made hard coding the processing undesirable, the format of the reference code was easy to discern. From here I discovered that regular expressions allowed me to get my location, floor, and sometimes room in two or three simple lines of code. Since then I&apos;ve always tried to keep somewhat up to par on my regular expression proficiency. That is why I was really excited to come across &lt;em&gt;Regular Expressions Cookbook, 2nd Edition&lt;/em&gt; by Jan Goyvaerts and Steven Levithan that provides everything I need to work with Regular Expressions.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The book opens up with a general overview of what regular expressions are and the various &quot;flavors&quot; of regex parsers that exist. Flavors and primarily geared toward what programming language you are using (.Net, Ruby, Javascript, etc.). Interestingly enough, each flavor has a unique features built into them, so knowing which flavor you are working with does matter at times.&lt;/p&gt;
&lt;p&gt;After this the book progresses from simple regular expression &quot;recipes&quot; (select just numbers, selecting words) to intermediate recipes (selecting phone number or date formats) to advanced recipes involving URLs, HTML, and XML. Each recipe provides special instructions based on the flavor you are using. A paragraph of discussion follows the recipe outlining justification for a certain formula, or interesting fringe cases you may encounter. Finally, if any similar recipes exist, a reference to them is provided.&lt;/p&gt;
&lt;p&gt;This is the structure for the over 100 recipes in the book. Each recipe is extremely insightful, and just like any cook, after reading the introduction to the format and notation of regular expressions, you&apos;ll be able to &quot;cook up&quot; anything you need by simply following the directions. This book is perfect for every grade of programmer. Novices will benefit from the well written overview and be able to comprehend the fundamentals of regular expressions and their processing. Intermediate developers will be able to look at existing recipes as a base in order to modify the recipe for their custom needs. Expert developers will be happy to have a handy reference guide for any regular expression they need.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Regular Expressions Cookbook, 2nd Edition&lt;/em&gt; is an essential book to any programmer. It&apos;s concise, yet insightful overview of regular expression parsing will help novices learn the key concepts quickly. The well documented recipes provide the perfect reference for intermediate and expert programmers.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://shop.oreilly.com/product/0636920023630.do&quot;&gt;http://shop.oreilly.com/product/0636920023630.do&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Wisdom</title><link>https://dillieo.me/posts/growth/2012-10-17-wisdom/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-10-17-wisdom/</guid><description>Wisdom</description><pubDate>Wed, 17 Oct 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;True wisdom maintains itself because it has the humility to continue learning in the way. ~ R.C. Sproul&lt;/p&gt;
&lt;p&gt;True wisdom maintains itself because it has the humility to continue learning in the way. ~ R.C. Sproul&lt;/p&gt;
</content:encoded></item><item><title>Review Getting Started With D3</title><link>https://dillieo.me/posts/development/2012-10-01-review-getting-started-with-d3/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-10-01-review-getting-started-with-d3/</guid><description>D3 Cover</description><pubDate>Mon, 01 Oct 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A project I am currently working on required me to find an efficient way to displaying a &quot;heat map&quot; of data throughout the United States. While one approach would be to simply create static images, the map also needed to be updated based on different data parameters. We also wanted to be able to generate tooltips and zoom in and out of the map. These requirements led me to the D3 library and a nice book entitled, &lt;em&gt;Getting Started with D3&lt;/em&gt; by Mike Dewar that helped get me up and running.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This is a short book, designed to get you up and running quickly, using a real world scenario of the New York Metropolitan Transit Authority in order to provide working examples of code. There is a short introduction about the D3 library itself and then you are brought straight in to a basic example of data binding to an unordered list. From there the book increases complexity, going to scatter maps, dynamic interaction with the data, and even timed updates.&lt;/p&gt;
&lt;p&gt;This is a &quot;learn by doing&quot; book that doesn&apos;t go into much theory or structure. For some people this may be an issue (I wound up using some online sources to cover the mapping specific needs I had in conjunction to this book), but if you need something to get up and running immediately, then this is an invaluable resource. I will be going back to this book often in the future, as it outlined how many powerful features are available through the library and I will have many projects in the future where this will come in handy.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Getting Started with D3&lt;/em&gt; gets you up and running with this powerful Javascript library quickly and easily. It does not provide detailed documentation on it&apos;s library and background, but it will help you get data visualizations on your site immediately, from which you can dig deeper to enhance your site later on. I recommend it if you need to get up and running quickly, or if you want a brief and fully functional overview of the library.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://shop.oreilly.com/product/0636920025429.do&quot;&gt;http://shop.oreilly.com/product/0636920025429.do&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Count Five Or Six By Cornelius</title><link>https://dillieo.me/posts/development/2012-09-21-song-of-the-week-count-five-or-six-by-cornelius/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-09-21-song-of-the-week-count-five-or-six-by-cornelius/</guid><description>Cornelius Cover</description><pubDate>Fri, 21 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I first stumbled across this song on an episode of Yo Gabba Gabba that my kids were watching a year or so back. While the video was a little odd, the music itself was oddly intriguing...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m not sure if it was the old band geek in me, or the constant drive of the song, or the unexpected tempo changes that occurred, but Cornelius stuck in my head, and when Spotify came out, I was able to get a full sample of his abstract and amazing tracks. After this track, check out some of his other tracks as well. My favorites (in addition to this) are Toner, Gum, Sleep Warm, and Music.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/track/2Hl4G9kdwGZ2VpCBF5bptG&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Pythagorean Chili</title><link>https://dillieo.me/posts/life/2012-09-17-worth-sharing-pythagorean-chili/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2012-09-17-worth-sharing-pythagorean-chili/</guid><description>Chili starting to cook</description><pubDate>Mon, 17 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;Ingredients:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2 cans &quot;ranch style&quot; beans&lt;/li&gt;
&lt;li&gt;2 cans black beans&lt;/li&gt;
&lt;li&gt;2 cans pinto beans&lt;/li&gt;
&lt;li&gt;2 cans kidney beans&lt;/li&gt;
&lt;li&gt;2 cans chili beans&lt;/li&gt;
&lt;li&gt;2 cans diced tomatoes with green chilis&lt;/li&gt;
&lt;li&gt;6 cloves of garlic, finely chopped&lt;/li&gt;
&lt;li&gt;1 medium onion, diced&lt;/li&gt;
&lt;li&gt;2 tbsp grape seed oil (you can use extra virgin olive oil as well)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Directions:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Open all of your cans first. Once things start cooking you need to start dumping quickly and don&apos;t want to wait on the can opener.&lt;/li&gt;
&lt;li&gt;Put the oil into a large pot and heat it on medium high heat. Make sure it is good and hot.&lt;/li&gt;
&lt;li&gt;Add the garlic. You should hear a nice sizzle and get a bit of that garlic smell going. Saute for a minute or so until they start to turn golden brown.&lt;/li&gt;
&lt;li&gt;Add the onion. Now the smell is really getting good! Saute the onions and garlic for another minute or so until the onions start to soften up and look translucent.&lt;/li&gt;
&lt;li&gt;Now start adding all the cans. You need to keep an eye on the amount of liquid going into the pot so that the chili isn&apos;t too watery at the end. Typically I add one can of each item, stir well, and then evaluate how things are looking. I&apos;ll then take the most &quot;runny&quot; cans (like the kidney beans and pinto beans) and drain the liquid out of them before dumping them in. The only exception to this is the diced tomatoes, which I keep the liquid for both cans, because you want the seasoning from those. Adjust as you see fit.&lt;/li&gt;
&lt;li&gt;Turn the heat down to low and simmer for an hour. Stir every 10 minutes or so to make sure the beans at the bottom don&apos;t stick and all the flavors continue to merge together.&lt;/li&gt;
&lt;li&gt;Serve hot and tasty!&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Alterations:&lt;/h3&gt;
&lt;p&gt;Like most of our recipes, we like to tweak them out to various degrees depending on our mood. This chili recipe is very friendly to tweaking. Here are a few options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Garnish&lt;/strong&gt; Typically we save a few of the diced onions from going into the pot and garnish the top of each bowl with it and some shredded sharp cheddar cheese. I also like to mix in a bit of hot sauce (Cholula or Chipotle Tobasco) in my bowl for some extra kick.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sides&lt;/strong&gt; We typically like to make up some cornbread with our chili. While hot, we melt a little butter and honey on each slide of bread and then chow down!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Texas Straw Hats&lt;/strong&gt; This is what they always called it at my elementary school and it always stuck with me. At the bottom of your chili bowl, put a healthy later of Fritos corn chips. Then put the chili on top of this. Garnish with cheese, onion, or whatever you like. Sometimes I like to mix it all together, sometimes I like the &quot;layered&quot; approach to eating. Regardless it is great!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meat&lt;/strong&gt; While this is a meatless chili, you could easily brown up a couple pounds of ground beef/turkey/chicken and toss that in towards the end of the simmering time as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Five Alarm&lt;/strong&gt; Since most of the family isn&apos;t into the hot chili, we leave all the spice out of it. However, if I were to make a five alarm chili, I&apos;d grab me a bottle of &quot;Dave&apos;s Insanity Sauce&quot; and slowly add a drop or two of it about half way through cooking. WARNING: I kid you not when I say that this sauce is INSANELY hot. Make sure to only add a drop or two, stir really well, and then taste it before adding more. There you have it! Our 5-12 chili. The other great thing about this recipe is that it is gluten free, for those of you that are concerned with that. If you do use a different brand than what we have listed above, make sure to check the ingredients to verify they are gluten free.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-09-chili_finish.jpg&quot; alt=&quot;Chili with cornbread&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Enjoy! Let me know if you have any other garnishes to add to it 8^D.&lt;/p&gt;
</content:encoded></item><item><title>Review The Book Of Ruby</title><link>https://dillieo.me/posts/development/2012-09-12-review-the-book-of-ruby/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-09-12-review-the-book-of-ruby/</guid><description>Book of Ruby Cover</description><pubDate>Wed, 12 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ruby is one of the most popular of the &quot;newer&quot; languages out on the market. In particular, it is the &quot;Rails&quot; framework for building web sites and applications that has made it so. As a perpetual learner, especially of coding languages and techniques, I was eager to give Ruby a try and decided to take a look at &lt;em&gt;The Book of Ruby: A Hands-On Guide for the Adventurous&lt;/em&gt; by Huw Collingbourne.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This book is great for those that are just getting into programming, or seasoned developers like me that are picking up a new language from scratch. Most of the book deals with a lot of the fundamentals of programming: object creation and inheritance, exception handling, string manipulation, loops, conditionals, and more. For the seasoned programmer, you will be able to quickly pickup the syntax of the Ruby language. For the beginner, there is plenty of semantics to explain what each feature is and what it does. After learning the fundamentals, the book gives a chapter on regular expressions and threading, which will help the beginner move into the more complex world of programming.&lt;/p&gt;
&lt;p&gt;After this, Ruby on Rails is outlined. I found this chapter particularly insightful, as it covers all the basics of the MVC programming model, for which Rails is based off of. It shows you how to get a simple blog site up and running quick and easily. This also demonstrates the power that the basic Ruby tools provides for you to use. The chapter briefly mentions the scaffolding and migration features that can help with your database design and deployment. I wish there was a little more description on these topics, but doing a little more research online and talking to my friend helped me understand that more.&lt;/p&gt;
&lt;p&gt;There are plenty of code samples in each chapter of the book. The complete versions of these samples are also available for download. As a &quot;hands on&quot; type learner, I often had my laptop open so I could create the code samples provided, run them, and then modify them to make sure I knew what I was doing. This was one of the best features of the book.&lt;/p&gt;
&lt;p&gt;The final chapters provide reference material as well as covering the topic of dynamic programming, which allows a Ruby program to effectively modify itself. This is an advanced topic to some degree, and the chapter helps provide you with the basics, but more reading is needed to really master this subject.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Book of Ruby&lt;/em&gt; is an easy to read book that is perfect for programming beginners or seasoned programmers looking to learn a new language. It covers all the fundamentals of the language, as well as gives a great start into the Rails framework and dynamic programming. The code samples provided make it easy to see the concepts fleshed out in code, and you can easily get your own Ruby environment up and running to learn as you code.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://shop.oreilly.com/product/9781593272944.do&quot;&gt;http://shop.oreilly.com/product/9781593272944.do&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Advanced Removal Of Duplicate Rows In Sql Server</title><link>https://dillieo.me/posts/development/2012-09-11-advanced-removal-of-duplicate-rows-in-sql-server/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-09-11-advanced-removal-of-duplicate-rows-in-sql-server/</guid><description>Duplicate Rows Sample</description><pubDate>Tue, 11 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: A better version of this script is now available &lt;a href=&quot;/refactored-advanced-removal-of-duplicate-rows-in-sql-server&quot;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So you may have seen in a &lt;a href=&quot;/removing-rows-with-duplicate-ids-in-sql-server&quot;&gt;previous article&lt;/a&gt; how I had to remove some duplicate rows in SQL Server that had the same Id. I ran into another issue recently that was a little more complex. Removing duplicate rows based on more than just an Id. Here&apos;s how I made it happen.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s the situation. In one app I maintain, we have keep a &quot;version&quot; record each time an update is made. We also use a &quot;lock_version&quot; column as a way of preventing concurrency issues when it comes to updating/removing records. Every time a record is updated, the lock version is incremented and a copy of the record is made into our versions table. A quick glance looks something like this:&lt;/p&gt;
&lt;p&gt;The problem occurred where we were doing multiple updates simultaneously. There are a couple of other tables (an analysis and package table) that were updated in batch with the applications table. This was due to a request of the client. However, the code in place was creating a versions record regardless if the application record was updated itself (since the version or analysis record was updated). As a result, our history (created based off of our versions) was getting corrupted. Running the following query helped us discover these issues:&lt;/p&gt;
&lt;p&gt;[gist]3699824&lt;/p&gt;
&lt;p&gt;This gives us the following results:&lt;img src=&quot;@assets/images/posts/2012-09-duplicaterowscount.png&quot; alt=&quot;Duplicate Rows Count&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Wow! That&apos;s some interesting duplicates in there. You may wonder why I&apos;m grouping based off of all of the fields instead of just the application_id and lock_version. While doing some diagnosis into the table, I discovered a second bug (sheesh I know!) that had duplicate lock_version records, but different data. For example, the lock_version may be the same, but the fee_amount is different. This is a secondary issue I need to resolve, but I don&apos;t want to lose the record (which would happen if I group simply off application_id and lock_version. As a result, I group on all the fields so it verifies completely identical records.&lt;/p&gt;
&lt;p&gt;How do I go about removing these duplicate records? Obviously doing a simple DELETE WHERE would remove all of my records. One option could possible be to get the unique record Ids (I am fortunate in that regard) and remove all but one of them, but building that kind of list might take a while.&lt;/p&gt;
&lt;p&gt;After digging into the SET ROWCOUNT 1 command, I discovered that it will no longer affect DELETE commands (and a few other ones) in SQL Server 2008 and beyond (see the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms188774.aspx&quot;&gt;MSDN documentation page&lt;/a&gt;) so I figured I should go with a more long term solution. Fortunately, the TOP(x) command DOES work with DELETE statements from here on out, and I suppose it probably is a little more &quot;good from&quot; than the other route. As such, we can now setup an algorithm for our process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Run query to get all duplicate count values.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Iterate through table.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use DELETE TOP(x - 1) remove all duplicates.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Done.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&apos;s all there is to it. However, as all good tricky situations are, there are a couple of glitches to this process.&lt;/p&gt;
&lt;p&gt;The first is that we can&apos;t use a column name in our (x-1) parameter for using TOP. If so, we could have setup one statement with the JOINS and be done with it. This forces us to go through each row individually. While not particularly complex, this can cause a bit of extra time to run, depending on the columns involved and the rows with duplicate records.&lt;/p&gt;
&lt;p&gt;The second (and even more devious) is that some of our rows have NULL values in them. NULL values are notoriously wonky when it comes to creating scripts or function in SQL. JOIN clauses don&apos;t always play nice and evaluating WHERE clauses with a variable against a NULL value doesn&apos;t work well as well. Fortunately, SQL Server has a ISNULL function (in 2005+) that allows us to assign a value to our NULL values. By setting them to a value we know not to exist in our records, we can handle our NULL values a lot easier. With all that said, here&apos;s the final script. Note that we use a table variable to store all our duplicate record data, and I&apos;ve added a couple &quot;RAISEERROR&quot; statements so that we can track the progress of the script, either in your GUI tool or in a log file that you output to.&lt;/p&gt;
&lt;p&gt;[gist]3700029&lt;/p&gt;
&lt;p&gt;One final note to this script is that it is not optimized at all. Part of this is due to the nature of the situation we&apos;re dealing with. Ideally we&apos;d have all our processing and primary/unique keys in place, but this wasn&apos;t the case and a &quot;ugly&quot; approach is needed. In addition, the ISNULL method will also cause a performance hit. So your script may take some time to run, based on the number of duplicate rows to process and the number of columns necessary to join together.&lt;/p&gt;
&lt;p&gt;Hopefully this script will get you out of a bind, like it did for me. If you do know any good SQL tuning tricks that could optimize this process, please send them my way. Who knows when I&apos;ll have to setup another script like this in the future.&lt;/p&gt;
</content:encoded></item><item><title>Why I Run</title><link>https://dillieo.me/posts/growth/2012-09-07-why-i-run/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-09-07-why-i-run/</guid><description>Running the trail</description><pubDate>Fri, 07 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I stepped out of my front door the other morning and the rain from the previous night was still fresh on the bushes. It immediately reminded me of the smell of the dew that was on so many golf course and park greens where most of the cross country events began in high school and college. It sends a tinge of energy and excitement through me and I start running down the road.&lt;/p&gt;
&lt;p&gt;Equally familiar come the nerves. One of my biggest problems when I ran was going out too fast and not having enough energy for the hills and final sprint that came at the end of a race. However, the excitement of running and the desire to really push a hard run pulls at me as well. I give myself a quick &quot;diagnostic check&quot; and find that I need to taper of just a smidge since I haven&apos;t been running in several months and I know the hill that is coming at the end.&lt;/p&gt;
&lt;p&gt;After I get about three quarters of a mile in, I&apos;m into my groove. There&apos;s a point where your breathing goes from the anaerobic &quot;sprint&quot; type breathing to a deeper and more paced &quot;aerobic&quot; breathing, and that&apos;s when the run really starts to get good. My bones and muscles are complaining a little. They complain a bit that they&apos;re getting sore a little too fast, and also that they need to get out and do this more often because they miss this. I do another &quot;diagnostic check&quot; since I&apos;m reaching a downhill portion and don&apos;t want to stretch out too far since the uphill will be much steeper in another half mile. I&apos;ve run this course enough times to get a feel when each of the major markers should show up, regardless of the GPS program on my phone that is keeping time, pace, and letting me know when I reach certain points.&lt;/p&gt;
&lt;p&gt;This is usually the point when I have some good open talks with God. My body is starting to fatigue a bit (since I&apos;m out of shape) and any inhibitions that I may have (good or bad) don&apos;t really mean much anymore. These are the times that I ask those tough questions. Why is there so much suffering in the world? How do I balance the head and the heart? Am I doing enough to instill virtue into my children? Am I doing all that I can to nurture, cherish, and support my wife? What do I ultimately want to do with the computer skills I&apos;ve been given anyway? I don&apos;t get any definitive answers to these questions, but I find that as I talk and struggle and ponder these issues, I discover one more small nugget of wisdom as a reward. It gives me something to continue to ponder as the day goes by.&lt;/p&gt;
&lt;p&gt;I&apos;m about a mile and a quarter in now. The hill is starting. I&apos;m not at the steepest part yet and my body is already starting to shut down. This is always one of the pivotal points in the run. Do you continue to push through, or do you let your body ease up? Especially with hills, easing up now will compound on itself and by the time you hit a flat or downhill again, your pace will be shot. This doesn&apos;t mean you have to sprint into the hill, but you gotta put a mental stake in the ground and commit to conquering the hill. I&apos;ll admit that there are a lot of days where I haven&apos;t committed, but today is different. I shake out my arms and legs a little, lean forward a bit more, shorten my stride a bit, and push on.&lt;/p&gt;
&lt;p&gt;I&apos;m given a small reprieve by moving from the road to the trail now. The hill has gotten steeper, but I&apos;m on dirt now. A trail that is jagged due to the recent rains that have carved out their own paths. But it is dirt and rocks and bushes and grass and trees! I start to feel at home with everything. There is this simultaneous balance between the aching of my lungs and muscles and the joy of being out on the trail and continuing to move forward, step by step, when my body wants to say otherwise. My old cross country coached always joked &quot;Pain is good. Extreme pain is extremely good.&quot; It&apos;s not the pain that I enjoy, it&apos;s the mastery of self that is exhilarating.&lt;/p&gt;
&lt;p&gt;I&apos;ve made it to the top of the hill now. There&apos;s a small flat straightaway that finishes my run. Even when all seems to be spent, there&apos;s that competitor deep down inside that still finds a bit of hidden reserves. It&apos;s no sprint from my &quot;glory days&quot;, but I feel myself give that last little bit of strength in to increase my pace and finish the run strong.&lt;/p&gt;
&lt;p&gt;Completion. Success. 2.04 miles in 17 minutes and 49 seconds, according to my app. By far it&apos;s not my best run, but it was a worthwhile run. There&apos;s so much that happened in such a short amount of time: connection with self, connection with God, mastery of the trail, insights to life. My lungs and muscles are yelling at me that I&apos;m crazy and it&apos;s not doing this for a long, long time.&lt;/p&gt;
&lt;p&gt;I can&apos;t wait until Monday.&lt;/p&gt;
</content:encoded></item><item><title>Isnt It Strange</title><link>https://dillieo.me/posts/growth/2012-08-23-isnt-it-strange/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-08-23-isnt-it-strange/</guid><description>Isnt It Strange</description><pubDate>Thu, 23 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&quot;Isn&apos;t it strange that people place so much emphasis on going to church when there is not one command from Jesus to do so, and yet neglect the basic duties of our ordinary life which are commanded in every Page of the Gospels?&quot;&lt;/p&gt;
&lt;p&gt;- William Law&lt;/p&gt;
</content:encoded></item><item><title>Which Walls Do You Prefer</title><link>https://dillieo.me/posts/development/2012-08-10-which-walls-do-you-prefer/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-08-10-which-walls-do-you-prefer/</guid><description>Which Walls Do You Prefer</description><pubDate>Fri, 10 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Read the full article at Evangelical Outpost: &lt;a href=&quot;http://evangelicaloutpost.com/archives/2012/08/which-walls-do-you-prefer.html&quot;&gt;Which walls do you prefer?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been given a wonderful opportunity to do a guest post over at &lt;a href=&quot;http://evangelicaloutpost.com&quot;&gt;Evangelical Outpost&lt;/a&gt;, a site I help run. I&apos;m sharing some thoughts in iPhones, Androids, and that whole &quot;walled garden&quot; thing.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Manually Add A Log Entry In Elmah</title><link>https://dillieo.me/posts/development/2012-07-24-quick-tip-how-to-manually-add-a-log-entry-in-elmah/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-07-24-quick-tip-how-to-manually-add-a-log-entry-in-elmah/</guid><description>Quick Tip</description><pubDate>Tue, 24 Jul 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m a big fan of &lt;a href=&quot;/elmah-a-quick-start-tutorial-and-guide&quot;&gt;Elmah&lt;/a&gt; (even though I&apos;m still a little more partial to &lt;a href=&quot;/log4net-a-quick-start-guide&quot;&gt;log4Net&lt;/a&gt; since it gives you a very quick way of logging all unhandled exceptions in your application. However, sometimes you need to manually add an entry (say within a try/catch block) and fortunately Elmah provides a simple way to do that.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I should have looked through StackOverflow sooner, but here it is. Add this one statement in your catch block (or anywhere else really) and you can get a log entry into Elmah, and let your code continue as planned:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Elmah.ErrorSignal.FromCurrentContext().Raise(ex)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s all! Happy logging!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Use Onclick And Onclientclick Events To Prevent Double Clicking On Your Aspnet Buttons</title><link>https://dillieo.me/posts/development/2012-07-05-quick-tip-how-to-use-onclick-and-onclientclick-events-to-prevent-double-clicking-on-your-aspnet-buttons/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-07-05-quick-tip-how-to-use-onclick-and-onclientclick-events-to-prevent-double-clicking-on-your-aspnet-buttons/</guid><description>Quick Tip</description><pubDate>Thu, 05 Jul 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While ASP.Net provides an excellent validator set of controls, sometimes you need to &quot;roll your own&quot; so to speak when creating your controls. In addition, if you have some AJAX processing with your buttons behind the scenes (for example, saving a record in a popup window) you run the risk of having &quot;double saves&quot; occurring when the user clicks on the button and nothing happens immediately.&lt;/p&gt;
&lt;p&gt;Having struggled with this issue myself lately, it took a little more work than anticipated to get this to work properly. Here&apos;s how you get everything to play nicely together.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step is to wire up your code behind event that does your processing. If you&apos;re doing this in C# you setup your OnClick event:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;asp:Button ID=&quot;btnSave&quot; runat=&quot;server&quot; Text=&quot;Save&quot; OnClick=&quot;btnSave_Click&quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you&apos;re doing this in VB.Net, there&apos;s no need to use the OnClick value in your button, you can go straight to the code behind, create your method name, and use the Handles keyword, specifying your buttons click event:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Protected Void Sub btnSave_Click Handles btnSave.Click &apos; Code here End Sub&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The next step is to do our validation using Javascript (we&apos;re using jQuery in here).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function validatePage() { var check = true;

// Check only simple textbox for now if (\$(&quot;#txtImportant&quot;).val() == &apos;&apos;) check = false;

if (!check) { alert(&apos;Missing data. Please complete&apos;); return false; } else { $(&quot;#MainContent_btnSave&quot;).val(&apos;Processing...&apos;); $(&quot;#MainContent_btnSave&quot;).attr(&quot;disabled&quot;, true); return true; } }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There are a couple of important notes to this function. The first is not to forget that ASP.Net by default likes to help uniquely name your server controls, hence the &quot;MainContent_&quot; prefix on our save button. You can use the ClientIdMode property if you need to get around this. The next is that we prevent the user from double clicking the save button by disabling the button and changing it&apos;s text to say &quot;Processing...&quot; Finally, we only disable the button if the validation succeeds. This prevents us from having to disable and re-enable the button based on the results. Oddly enough it also makes sure that our return value in the HTML element processes correctly, which was probably one of the biggest glitches I ran across during this process.&lt;/p&gt;
&lt;p&gt;Now we need to wire up the Javascript processing. To do this, we use the OnClientClick method that is available for most .Net server controls. While looking at our code above looks straightforward enough (return false to abort the script or true to continue with the post back) we do have to change our logic slightly. Having a &quot;return true&quot; statement doesn&apos;t let the button continue it&apos;s post back, it will cause it to stop processing (almost the same as a return false command). Instead, we let our logic only abort if our validation failed:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;asp:Button ID=&quot;btnSave&quot; runat=&quot;server&quot; Text=&quot;Save&quot; OnClick=&quot;btnSave_Click&quot; OnClientClick=&quot;if (!validatePage()) {return false;}&quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Finally, since we&apos;re overriding the HTML onClick event on the control (thanks to the OnCilentClick property) that even if your validation method succeeds, the code behind method won&apos;t fire off. To work around this, we use the UseSubmitBehavior property of the button control and set it to false. What this does is appends the appropriate __doPostBack call after our Javascript code. The final code for your button looks like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;asp:Button ID=&quot;btnSave&quot; runat=&quot;server&quot; Text=&quot;Save&quot; OnClick=&quot;btnSave_Click&quot; OnClientClick=&quot;if (!validatePage()) {return false;}&quot; UseSubmitBehavior=&quot;false&quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. Now when you click on the button, if the validation fails, you&apos;ll get the alert box. Otherwise, the button will become disabled with a &quot;processing&quot; message and your code behind method will run.&lt;/p&gt;
&lt;p&gt;A couple of final notes about this approach.&lt;/p&gt;
&lt;p&gt;The first is that you&apos;re responsible for enabling the button again after the post back. In our case, it was sufficient enough to simply reload the page again, so we had a fresh set of data and the button was reset in that manner.&lt;/p&gt;
&lt;p&gt;The second note is that depending on how your page is laid out, you may see your button automatically change from &quot;Save&quot; to &quot;Processing...&quot; to &quot;Save&quot; again. I ran into this issue. The reason for it was that we had a modal layer in which the save button was located. When the postback occurred, the ViewState was re-rendering the page with the modal layer in place. Then there was &quot;RegisterClientScript&quot; method injected that caused the page to reload. In my case, the solution was to edit the client script that was registered in the code behind to change the text and status label again. That way when the page was rendered again, the save button remained disabled and in a &quot;processing&quot; state:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// Redirect to edit page with created id. ClientScript.RegisterStartupScript (GetType(), &quot;Load&quot;, String.Format(&quot;&amp;lt;script type=&apos;text/javascript&apos;&amp;gt;&quot; + &quot; $(\\&quot;#MainContent_btnSave\\&quot;).val(\\&quot;Processing...\\&quot;);&quot; + &quot; $(\\&quot;#MainContent_btnSave\\&quot;).attr(\\&quot;disabled\\&quot;, true);&quot; + &quot; window.parent.location.href = &apos;Edit.aspx?id={0}&apos;;&quot; + &quot;&amp;lt;/script&amp;gt;&quot;, ourObject.id.ToString()));&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s one quick note to make about ImageButtons. Since they don&apos;t have the &quot;UseSubmitBehavior&quot; available to them, you have to manually call the PostBack method within the Javascript in order to make it continue after disabling the button. For ImageButtons, your code will look something like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;asp:ImageButton ID=&quot;imbSave&quot; runat=&quot;server&quot; Text=&quot;Save&quot; CommandName = &quot;DoImageButtonFunction&quot; CommandArgument = &quot;X&quot; OnClientClick=&quot;if (!validatePage()) {return false;} else{\_\_doPostBack(this.name, &apos;&apos;);}&quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Hopefully this gets your through some headaches in your more complex data validation/processing situations. If you have any better tricks, please send them by!&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Creating A Member Search And Filter Pagemacro In Umbraco Cms</title><link>https://dillieo.me/posts/development/2012-06-29-soup-to-nuts-creating-a-member-search-and-filter-pagemacro-in-umbraco-cms/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-06-29-soup-to-nuts-creating-a-member-search-and-filter-pagemacro-in-umbraco-cms/</guid><description>Soup to Nuts - The Complete Package</description><pubDate>Fri, 29 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I&apos;ve started working with the Umbraco CMS for a project at work. While there was a bit of a learning curve to Umbraco (having done a lot of WordPress work as of late) I found it to be very robust and powerful. One of the things we needed to add to our Umbraco site was a page that allowed members to search and sort all the members that had opted in to be on the list. While the solution is rather simple, tracking it down wasn&apos;t.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The first step in this process is to create a member group and type and assign any additional properties you may want to display/search by. For our example, we&apos;re setting up a nice little business directory, so the following properties were added to our member:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Location (alias userLocation)&lt;/li&gt;
&lt;li&gt;Title (alias userTitle)&lt;/li&gt;
&lt;li&gt;Company (alias userCompany)&lt;/li&gt;
&lt;li&gt;LinkedIn URL (alias userLinkedInUrl)&lt;/li&gt;
&lt;li&gt;Show on Member List (alias userShowMemberOnList)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these fields are simple Textstring types, with our &quot;Show on Member List&quot; field being a true/false type.&lt;/p&gt;
&lt;p&gt;After this, we need to create our script. To accomplish this, I&apos;m using the Razor scripting engine that was made available in version 4.7 of Umbraco. Is provides IMMENSELY more functionality, and it&apos;s a little bit friendlier for me to work with. I initially started (and wrote a couple other macros) using XSLT (a nice throwback) but some of the things I needed to accomplish was better done in Razor.&lt;/p&gt;
&lt;p&gt;The first step is to pull down all the members and include their properties. Unfortunately there is no single user table in Umbraco that contains this information. By default Umbraco uses the membership provider used by default in the .Net Framework (a good thing if you ask me) and then stores custom properties about members elsewhere. However, since this information is available through the various API methods, we&apos;ll retrieve our users and generate an XDocument object with all the user details in it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Get Members 
IEnumerable members = Member.GetAllAsList(); 
var xdoc = new XDocument(); 
var xMembers = new XElement(&quot;members&quot;); 
xdoc.Add(xMembers);

// Iterate and populate 
foreach (Member member in members) 
{ 
    var user = new XElement(&quot;member&quot;,&quot;&quot;); 
    user.Add(new XElement(&quot;id&quot;, member.Id.ToString(CultureInfo.InvariantCulture))); 
    user.Add(new XElement(&quot;name&quot;, member.Text)); 
    user.Add(new XElement(&quot;email&quot;, member.Email));

    foreach (umbraco.cms.businesslogic.property.Property prop in member.getProperties) 
    { 
        user.Add(new XElement(prop.PropertyType.Alias, prop.Value)); 
    }

    xMembers.Add(user); 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it may seem odd to be interacting with XML at this point, but this is what the API currently provides for us. However, thanks to LINQ to XML, we can immediately query all of our XML member information and create data we&apos;re more comfortable working with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Return Members 
List var memberList = from member in xdoc.Descendants(&quot;member&quot;) 
    where member.Element(&quot;userShowOnMemberList&quot;).Value.Equals(&quot;1&quot;) 
    select new 
    { 
        id = member.Element(&quot;id&quot;).Value, 
        name = member.Element(&quot;name&quot;).Value, 
        email = member.Element(&quot;email&quot;).Value, 
        location = member.Element(&quot;userLocation&quot;).Value,
        title = member.Element(&quot;userTitle&quot;).Value, 
        company = member.Element(&quot;userCompany&quot;).Value
        linkedInUrl = member.Element(&quot;userLinkedInUrl&quot;).Value 
    };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s all there is to it. The final step is to put this data in a nice table for display/sorting/etc. Thanks to Razor script, we can easily merge our HTML and our code together:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@foreach (var memberItem in @memberList) 
{ 
    &amp;lt;table id=&quot;people-table&quot; class=&quot;people-table tablesorter&quot;&amp;gt; 
        &amp;lt;thead&amp;gt; 
            &amp;lt;tr&amp;gt; 
                &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Title&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Company&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Location&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Email&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt; 
            &amp;lt;/tr&amp;gt; 
        &amp;lt;/thead&amp;gt;

        &amp;lt;tbody&amp;gt; 
            &amp;lt;tr&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.name &amp;lt;/td&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.title &amp;lt;/td&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.company &amp;lt;/td&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.location &amp;lt;/td&amp;gt; 
                &amp;lt;td style=&quot;text-align: center;&quot;&amp;gt; 
                    &amp;lt;a title=&quot;@memberItem.email&quot; href=&quot;mailto:@memberItem.email&quot;&amp;gt;&amp;lt;img src=&quot;/images/mail-at-sign.png&quot; alt=&quot;&quot; /&amp;gt;&amp;lt;/a&amp;gt; 
                &amp;lt;/td&amp;gt; 
                &amp;lt;td class=&quot;td-link&quot;&amp;gt; 
                    @if (!string.IsNullOrEmpty(@memberItem.linkedInUrl)) 
                    { 
                        &amp;lt;script type=&quot;text/javascript&quot; src=&quot;//platform.linkedin.com/in.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script type=&quot;IN/MemberProfile&quot; data-id=&quot;@memberItem.linkedInUrl&quot; data-format=&quot;hover&quot; data-related=&quot;false&quot;&amp;gt;&amp;lt;/script&amp;gt; 
                    } 
                &amp;lt;/td&amp;gt; 
            &amp;lt;/tr&amp;gt; 
        &amp;lt;/tbody&amp;gt; 
    &amp;lt;/table&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What&apos;s really nice is that we have a nice little e-mail icon for users to click on to send an e-mail, as well as using LinkedIn&apos;s public API to generate the proper link to their profile page.&lt;/p&gt;
&lt;p&gt;&quot;What about the searching and sorting?!&quot; I&apos;m sure you&apos;re saying at this point. While we could have done some additional work on the .Net side of things, we decided to take a much simpler route (a full HT to my colleague Will for finding this) and use the &lt;a href=&quot;http://tablesorter.com/&quot;&gt;jQuery TableSorter Library&lt;/a&gt;. Simply put this library allows you to target a table (that has used the proper &amp;lt;th&amp;gt; tags) and it&apos;ll automatically create the sorting functionality on it! You can even style it however you need. In addition, the &lt;a href=&quot;http://gregweber.info/projects/uitablefilter&quot;&gt;uiTableFilter Library&lt;/a&gt; provides the filtering functionality we need in a similar manner. Since it is done in jQuery, there is no need to refresh the call to the server for each new sort/search function. All it takes is a simple script initialization and some properly named items.&lt;/p&gt;
&lt;p&gt;When you put all of this together, your final Razor script looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@using System.Globalization@using umbraco.cms.businesslogic.member @using System.Xml.Linq

@{ 
    // Get Members 
    IEnumerable members = Member.GetAllAsList(); 
    var xdoc = new XDocument(); 
    var xMembers = new XElement(&quot;members&quot;); xdoc.Add(xMembers);

    // Iterate and populate 
    foreach (Member member in members) 
    { 
        var user = new XElement(&quot;member&quot;,&quot;&quot;); 
        user.Add(new XElement(&quot;id&quot;, member.Id.ToString(CultureInfo.InvariantCulture))); 
        user.Add(new XElement(&quot;name&quot;, member.Text)); 
        user.Add(new XElement(&quot;email&quot;, member.Email));

        foreach (umbraco.cms.businesslogic.property.Property prop in member.getProperties) 
        { 
            user.Add(new XElement(prop.PropertyType.Alias, prop.Value)); 
        }

        xMembers.Add(user); 
    }

    // Return Members 
    List var memberList = from member in xdoc.Descendants(&quot;member&quot;) 
        where member.Element(&quot;userShowOnMemberList&quot;).Value.Equals(&quot;1&quot;) 
        select new 
        { 
            id = member.Element(&quot;id&quot;).Value, n
            ame = member.Element(&quot;name&quot;).Value, 
            email = member.Element(&quot;email&quot;).Value, 
            location = member.Element(&quot;userLocation&quot;).Value,
            title = member.Element(&quot;userTitle&quot;).Value,
            company = member.Element(&quot;userCompany&quot;).Value, linkedInUrl = member.Element(&quot;userLinkedInURL&quot;).Value 
        }; 
}

&amp;lt;script type=&quot;text/javascript&quot; language=&quot;Javascript&quot;&amp;gt; 
// Doc Ready! 
$(document).ready(function () 
{ 
    // Find People - Sortable &amp;amp; Search-able! 
    $(&quot;#people-table&quot;) 
    // Table Sorter 
    .tablesorter({ headers: { 5: { sorter: false } } })

    // Table Sorter Filterting 
    .tablesorterFilter({ 
        filterContainer: $(&quot;#txtFilterParam&quot;), filterClearContainer: $(&quot;#btnResetFilter&quot;),
        filterColumns: \[0, 1, 2, 3, 4], 
        filterCaseSensitive: false
    }); 
}); 
&amp;lt;/script&amp;gt;

&amp;lt;div class=&quot;people-table-filter&quot;&amp;gt; 
    Filter People&amp;amp;nbsp; 
    &amp;lt;input id=&quot;txtFilterParam&quot; type=&quot;text&quot; /&amp;gt;&amp;amp;nbsp; 
    &amp;lt;input id=&quot;btnResetFilter&quot; type=&quot;button&quot; value=&quot;Reset&quot; /&amp;gt;
&amp;lt;/div&amp;gt;

@foreach (var memberItem in @memberList) 
{ 
    &amp;lt;table id=&quot;people-table&quot; class=&quot;people-table tablesorter&quot;&amp;gt; 
        &amp;lt;thead&amp;gt; 
            &amp;lt;tr&amp;gt; 
                &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Title&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Company&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Location&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;Email&amp;lt;/th&amp;gt; 
                &amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt; 
            &amp;lt;/tr&amp;gt; 
        &amp;lt;/thead&amp;gt;

        &amp;lt;tbody&amp;gt; 
            &amp;lt;tr&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.name &amp;lt;/td&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.title &amp;lt;/td&amp;gt; 
                &amp;lt;td&amp;gt; @memberItem.company &amp;lt;/td&amp;gt; 
                &amp;lt;td style=&quot;text-align: center;&quot;&amp;gt; 
                    &amp;lt;a title=&quot;@memberItem.email&quot; href=&quot;mailto:@memberItem.email&quot;&amp;gt;
                        &amp;lt;img src=&quot;/images/mail-at-sign.png&quot; alt=&quot;&quot; /&amp;gt;
                    &amp;lt;/a&amp;gt; 
                &amp;lt;/td&amp;gt; 
                &amp;lt;td class=&quot;td-link&quot;&amp;gt; 
                    @if (!string.IsNullOrEmpty(@memberItem.linkedInUrl)) 
                    { 
                        &amp;lt;script type=&quot;text/javascript&quot; src=&quot;//platform.linkedin.com/in.js&quot;&amp;gt;&amp;lt;/script&amp;gt; 
                        &amp;lt;script type=&quot;IN/MemberProfile&quot; data-id=&quot;@memberItem.linkedInUrl&quot; data-format=&quot;hover&quot; data-related=&quot;false&quot;&amp;gt;
                        &amp;lt;/script&amp;gt; 
                    } 
                &amp;lt;/td&amp;gt; 
            &amp;lt;/tr&amp;gt; 
        &amp;lt;/tbody&amp;gt; 
    &amp;lt;/table&amp;gt; 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Don&apos;t forget to add the proper script and stylesheet references into your template (or even within the script if you so desire). Save your script, make sure it is bound to a macro, and add it into a simple content page!&lt;/p&gt;
&lt;p&gt;One quick note, when I modify my macro settings, I &quot;invert&quot; the defaults so that &quot;Use in Editor&quot; is checked, and &quot;Render content in editor&quot; is unchecked. That way I can add the module anywhere via the Content editor, but we don&apos;t see all the details that don&apos;t show up until runtime.&lt;/p&gt;
&lt;p&gt;I&apos;m sure there are plenty of optimizations that can occur with this macro, such as adding parameters to the module or potentially making server call backs if you have a large member base. For the most part, this has been working well for us and saves a lot of time.&lt;/p&gt;
&lt;p&gt;Let me know if this helps for you or you have some suggestions for improvement.&lt;/p&gt;
</content:encoded></item><item><title>Ray Bradbury Rest In Peace</title><link>https://dillieo.me/posts/growth/2012-06-06-ray-bradbury-rest-in-peace/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-06-06-ray-bradbury-rest-in-peace/</guid><description>Ray Bradbury Rest In Peace</description><pubDate>Wed, 06 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I remember first reading Ray Bradbury back in high school, and he had a profound impact on my love of science fiction and reading ever since. RIP Mr. Bradbury&lt;/p&gt;
&lt;p&gt;I remember first reading Ray Bradbury back in high school, and he had a profound impact on my love of science fiction and reading ever since. RIP Mr. Bradbury&lt;/p&gt;
</content:encoded></item><item><title>A Much Needed Warning For Me</title><link>https://dillieo.me/posts/growth/2012-06-01-a-much-needed-warning-for-me/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-06-01-a-much-needed-warning-for-me/</guid><description>A Much Needed Warning For Me</description><pubDate>Fri, 01 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;DANGER DANGER Computer store ahead...hide wallet.&lt;/p&gt;
&lt;p&gt;DANGER DANGER Computer store ahead...hide wallet.&lt;/p&gt;
</content:encoded></item><item><title>A Fresh Year</title><link>https://dillieo.me/posts/development/2012-06-01-a-fresh-year/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-06-01-a-fresh-year/</guid><description>Fresh Logo</description><pubDate>Fri, 01 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I was wrapping some code up last night on a project, it dawned on me that today is the one year mark with my job at &lt;a href=&quot;http://freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt;. I can&apos;t believe how time flies these days and all the amazing things that have happened in that amount of time!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I knew when I left for Fresh that I was going into a place where I would be able to work with some new products and technologies, but I wasn&apos;t expecting the list to be THIS big. When I was working for the county, it was pretty much a .Net only shop, and I had just gotten folks started on a bit of PHP for some WordPress installs. During this past year I have been able to start or refresh my skills with the following technologies and platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;CodeIgniter (and MVC framework for PHP)&lt;/li&gt;
&lt;li&gt;PyroCMS (a CMS buit on top of CodeIgniter)&lt;/li&gt;
&lt;li&gt;Android platform testing&lt;/li&gt;
&lt;li&gt;iOS platform testing&lt;/li&gt;
&lt;li&gt;PhoneGap (a platform to build mobile apps using HTML5)&lt;/li&gt;
&lt;li&gt;ASP.Net WebForms&lt;/li&gt;
&lt;li&gt;ASP.Net MVC3&lt;/li&gt;
&lt;li&gt;Entity Framework&lt;/li&gt;
&lt;li&gt;Umbraco (a CMS built on top of ASP.Net)&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;SQL Server 2008&lt;/li&gt;
&lt;li&gt;Not to mention I&apos;ve been doing this all on a &lt;a href=&quot;/developer-nirvana-the-osx-vmware-fusion-visual-studio-2010-amalgamation&quot;&gt;MacBook Pro with a VMWare Fusion Unity environment&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This has been a dream come true. I&apos;ll admit it hasn&apos;t been easy at times (especially when you&apos;re tasked with bringing up a site from scratch using a new platform you haven&apos;t touched yet), but being able to work with a lot of the new tech on various projects keeps me learning new things and keeps my mind agile at solving problems and providing solutions to whatever a client needs. Really though, I&apos;m like a kid in a digital toy store, being able to put all these cool things to use.&lt;/p&gt;
&lt;p&gt;In a lot of ways, it has also increased by blogging as well. I&apos;m one who likes to &quot;dogfood&quot; my own tips and tricks (in addition to sharing them) and I&apos;ve come across some pretty fun things along the way. I learned &lt;a href=&quot;/soup-to-nuts-getting-your-android-emulator-to-read-virtual-hosts-on-your-development-machine&quot;&gt;how to setup my local environment for Android testing&lt;/a&gt; (not quite as easy as it sounds), &lt;a href=&quot;/soup-to-nuts-generating-a-time-interval-based-count-report-in-t-sql&quot;&gt;create time based interval reports through SQL Server&lt;/a&gt;, and probably my favorite (and most unexpected) was &lt;a href=&quot;/sorting-latitudelongitude-positions-by-distance-in-sql&quot;&gt;setting up queries that based latitude/longitude results on distance&lt;/a&gt;, thanks to this crazy thing called the haversine formula.&lt;/p&gt;
&lt;p&gt;But aside from all the tech goodness, and more importantly, the folks at Fresh really treat me well. Even though I&apos;m the &quot;remote&quot; guy and it&apos;s easy to be disconnected from the group in that regard, I&apos;m always greeted warmly whenever I&apos;m up for my visits. I&apos;ve been able to share some great meals with the team (I even had sushi and liked it!) and spend a little bit of off hours with a few of them, just getting to know them better. When I&apos;ve had some requests for additional tools, they have been purchased without a thought. I feel very much a part of the Fresh team, even from far away, which is the most important factor. I can see how one could get burned out when doing large projects detached from the rest of the team, but I don&apos;t feel detached at all.&lt;/p&gt;
&lt;p&gt;So here&apos;s to you Fresh! Thanks for a truly amazing year of new work, new tech, and new clients! I&apos;m looking forward to many more, and I hope I&apos;m doing you proud!&lt;/p&gt;
</content:encoded></item><item><title>You Have Loved Us First</title><link>https://dillieo.me/posts/growth/2012-05-30-you-have-loved-us-first/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-05-30-you-have-loved-us-first/</guid><description>You Have Loved Us First</description><pubDate>Wed, 30 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You have loved us first, O God, alas! We speak of it in terms of history as if You have only loved us first but a single time, rather than without ceasing You have loved us first many times and every day and our whole life through. When we wake up in the morning and turn our soul toward You -- You are the first -- You have loved us first; if I rise at dawn and at the same second turn my soul toward You in prayer, You are there ahead of me, You have loved me first. When I withdraw from the distractions of the day and turn my soul toward You, You are the first and thus forever. And yet we always speak ungratefully as if You have loved us first only once.&lt;/p&gt;
&lt;p&gt;~ Soren Kierkegaard&lt;/p&gt;
</content:encoded></item><item><title>Quick Review Torchlight 2</title><link>https://dillieo.me/posts/growth/2012-05-21-quick-review-torchlight-2/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-05-21-quick-review-torchlight-2/</guid><description>Torchlight 2 Logo</description><pubDate>Mon, 21 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been a big fan of Torchlight since it first came out. My wife loves it too! I consider it a really good &quot;modern&quot; version of &lt;a href=&quot;/gaming-done-right-angband&quot;&gt;Angband&lt;/a&gt; with some extra perks, given the quests, UI, graphics, and overall fun. Needless to say, I was tickled pink when a special beta release for &lt;a href=&quot;http://www.torchlight2game.com/&quot;&gt;Torchlight 2&lt;/a&gt; came out this weekend, and my wife and I received access keys to try it out!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My wife and I paced and fidgeted impatiently for the 700MB download (after the kids have gone to bed 8^D) and then built our characters. One of the really nice things about Torchlight, if you&apos;re not heavily into the RPG scene) is that they give you simple classes to choose from. They&apos;ve expanded this to 4 types in the new game, and it covers all the bases for your likes. We went a little differently this time. Instead of the engineer/paladin type role I&apos;m used to playing, I went with the Outlander, a character that likes to use ranged weapon guns, with a little bit of magic. I&apos;m enjoying this new ranged attack plan, and I&apos;ve had to work on my shoot and move skills along the way. My wife, typically using the hack and slash berserker, went with the Engineer route, and has been fun bringing robots to the fight that both heal and attack. She also packs a pretty wicked war blade at the moment. We were happy to see that we have new pets that help us along the way, and something about a ferret attacking people sounds funny to me, so I adopted one.&lt;/p&gt;
&lt;p&gt;After character creation we setup our own game in wait for it.... Co-Op mode!!!!! Yes, probably the BIGGEST and best thing we like is the fact that we can work on the quest together, as opposed to having two separate quests and simply comparing stats. Plus our two characters seem to pair well together in battles, which adds to the fun. Even if the game was exactly the same as the original, we&apos;d purchase it just for the Co-Op option. Within the game, you can trade items (so we can pass on the really cool weapons we can&apos;t use) and we can talk to each other (publicly or privately) and things run really smooth. One very smart thing Torchlight 2 does is it gives each person their own set of &quot;loot&quot; for opening chests or killing monsters. I think part of this is due to the randomization process that goes into the loot and monsters that show up in the game, and part of this just makes things easier. You don&apos;t have to worry about not picking up something, just grab your stash and move on, everybody will get their due.&lt;/p&gt;
&lt;p&gt;Outside of the co-op, the whole game experience has just been enhanced. The easy to play style of the original game is continued in Torchlight 2. There have been enhancements to how the weapon/equipping process works. You can have two &quot;weapon sets&quot; (say one with close range and one for distance) and easily swap between the two. Armor will auto-equip to you if you aren&apos;t wearing something of that type (say a belt) which is handy early on when your character is weaker and may not thing to put on those leather boots in the heat of battle you just acquired. While I haven&apos;t worked with it too much, I do find the interaction with your spells and other magical items to be easier in Torchlight 2. I can easily select two of my primary spells or magical items to wield, and then hot swap them with the tab key. I can even change out my primary attack to be a spell, if I so desire.&lt;/p&gt;
&lt;p&gt;I&apos;ll admit that I haven&apos;t put as much time into the game as others have, but so far I don&apos;t have any dislikes about the game. There are a few graphics glitches, and at one point my wife somehow was disconnected from our game, even though she was still in the same pit as me, but a simple log out/log in put her right back into the action. This is also a beta, where bad things are known to happen, but we haven&apos;t experienced any of major significance. That is a big heads up in my book, especially when they were anticipating a heavy load on things for this beta.&lt;/p&gt;
&lt;p&gt;There are few adventure/RPG type games nowadays that have great playability and customization without the need to devote half your life to play it, but Torchlight was one of those games and Torchlight 2 will be one of those games. We played for a couple of hours on Saturday and about 4 hours on Sunday and were able to shut things off and go to bed and be able to pick up right where we left off. We had an immensely fun time doing it (especially teaming up together!!!!) and we&apos;re already starting to save up our pennies to get a couple copies when it&apos;s released.&lt;/p&gt;
&lt;p&gt;There is still a little bit of beta time left (until 11 AM PST on Tuesday) so if you want to try you luck, head over to the &lt;a href=&quot;https://secure.runicgames.com/signup&quot;&gt;beta signup&lt;/a&gt; and see if you can still get in. It&apos;ll be worth your time.&lt;/p&gt;
&lt;p&gt;Thanks Runic Games! You did amazing!&lt;/p&gt;
</content:encoded></item><item><title>Mercy</title><link>https://dillieo.me/posts/growth/2012-05-08-mercy/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-05-08-mercy/</guid><description>Mercy</description><pubDate>Tue, 08 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;...For we do not present our pleas before you because of our righteousness, but because of your great mercy. (Daniel 9:18 ESV)&lt;/p&gt;
&lt;p&gt;...For we do not present our pleas before you because of our righteousness, but because of your great mercy. (Daniel 9:18 ESV)&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Make Sql Scripts Generate Sql Scripts For You</title><link>https://dillieo.me/posts/development/2012-05-04-quick-tip-make-sql-scripts-generate-sql-scripts-for-you/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-05-04-quick-tip-make-sql-scripts-generate-sql-scripts-for-you/</guid><description>Quick Tip</description><pubDate>Fri, 04 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So the synopsis is this: sometimes you have a TON of rows you need to insert into a database from a spreadsheet, but you need to do some custom massaging of the data to generate the statements. While a few dozen rows is okay, try doing this with 10,000+ rows! The nice thing is that you can make the database do the work for you.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Recently I had the following dilemma. I was given a spreadsheet to insert into the database with the following layout:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ProductID   CategoryCode  CategoryName
1A1231A     SWT           Sweets
3C1111B     PM            Processed Meats
1Z33325     PM            Processed Meats
1X3A33C     PM            Processed Meats
777A3X1     AC-01         Accessories (Group 1)
9WXX323     AC-01         Accessories (Group 1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now on it&apos;s face, this looks like a straight forward data import. Let the import tools do the work for you. However, there&apos;s some redundant data in there, namely the Categories. Any programmer worth their salt will at least take a moment and evaluate the concern about this. What if Processed Meats changes it&apos;s name or category? Well, we&apos;d have to change those two records to accomodate for that. That might not be too bad, but when you&apos;re dealing with 10,000+ records (as I was) then that update becomes potentially unmanageable, or dangerous, if a stray user only updates one field.&lt;/p&gt;
&lt;p&gt;To make this work better, we setup two tables. A category table and a product_mapping table. That way we can identify each category once and if a change to the category occurs, we only need to update the category in one place:&lt;/p&gt;
&lt;p&gt;Category Table&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;id   code    name
1    SWT     Sweets
2    PM      Processed Meats
3    AC-01   Accessories (Group 1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Product_Mapping Table&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;id   product_id   category_id
1    1A1231A      1
2    3C1111B      2
3    1Z33325      2
4    1X3A33C      2
5    777A3X1      3
6    9WXX323      4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The tricky part is how to convert our original spreadsheet to use our new categories and mappings, especially when we&apos;re dealing with a huge volume of records. The first step is to import our raw data into our database using whatever tool we have handy. This will create our table with our three columns. I imported mine with the name RawMappingData. From there, we need to extract our unique categories with a SELECT DISTINCT statement&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SELECT DISTINCT CategoryCode, CategoryName FROM RawMappingData&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This gives us a basic result set:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;code   name
SWT    Sweets
PM     Process Meats
AC-01  Accesssories (Group 01)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This result set is pretty friendly to work with. We can dump this result set to the clipboard and put some &quot;INSERT INTO category (code, name) VALUES&quot; type text in front of it and voila, our SQL script is done. However, the dataset I&apos;m working with has 178 categories. Doing even some fancy regular expression search and replace magic (which I&apos;ve done before) can become time consuming.&lt;/p&gt;
&lt;p&gt;All is not lost though! With our SQL statements, we can append text in front of our variables when generating our result sets. Try this query on for size:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SELECT DISTINCT &apos;Woot: &apos; + CategoryCode, CategoryName FROM RawMappingData&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will gives us the following result set:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;code          name
Woot:  SWT    Sweets
Woot:  PM     Process Meats
Woot:  AC-01  Accesssories (Group 01)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using this trick, we can hack up our SQL query to generate our category insert queries for us!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SELECT DISTINCT &apos;INSERT INTO category (code, name) VALUES (&apos;&apos;&apos; + CategoryCode + &apos;&apos;&apos;, &apos;&apos;&apos; + CategoryName + &apos;&apos;&apos;)&apos; FROM RawMappingData&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Take a peek at these results:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(No column Name)
INSERT INTO category (code, name) VALUES (&apos;SWT&apos;, &apos;Sweets&apos;)
INSERT INTO category (code, name) VALUES (&apos;PM&apos;, &apos;Processed Meats&apos;)
INSERT INTO category (code, name) VALUES (&apos;AC-01&apos;, &apos;Accessories (Group 01)&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can dump this result set into a text editor, or query editor, save and run. We&apos;ll get uniquely generated Ids for our categories and execution time on the script will be really fast.&lt;/p&gt;
&lt;p&gt;But what about the mapping records themselves. There&apos;s a good 10,000+ records to insert. Can we use this approach? Yes we can, but we&apos;ll take a slightly different angle to it, which will require a little bit of manual text editing, but far from anything that is time consuming. For our mapping records, we&apos;re going to setup a transactional approach, and insert 1000 records at a time in the database in batches. If we did them one by one, it would take a long amount of time to process, since each INSERT statement would have its own log record (for restore purposes) and that takes extra overhead.&lt;/p&gt;
&lt;p&gt;The transactional approach uses the basic format for its queries:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SET NOCOUNT ON; SET XACT_ABORT ON; GO

BEGIN TRANSACTION; INSERT INTO [dbo].[product_mapping]([product_id], [category_id]) SELECT N&apos;1A1231A&apos;, 1 UNION ALL SELECT N&apos;3C1111B&apos;, 2 UNION ALL SELECT N&apos;77A3X1&apos;, 3 COMMIT;

RAISERROR (N&apos;[dbo].[submarket_mapping]: Insert Batch: 1.....Done!&apos;, 10, 1) WITH NOWAIT; GO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What this will do is process all of the statements within the transaction block and then commit them in one batch, which saves us time. Typically this can be done in 1000 or 5000 record transactions. If an error occurs within the block, none of the records are stored in the database. In our case, this isn&apos;t a big concern. So we can setup a similar query as we did above, generating all our SELECT statements that fit between our &quot;INSERT INTO&quot; and &quot;COMMIT&quot; block. We&apos;ll then take this text, dump it into a text editor, and insert our &quot;BEGIN TRANSACTION&quot; and &quot;COMMIT&quot; statements that wrap around every 1000 lines or so of code.&lt;/p&gt;
&lt;p&gt;We still have one last hurdle to get past. Our raw data still contains the category code and name, but not the ID that we need for our product_mapping table. Fortunately, we can nest SELECT statements to pull out the data we need. Our &quot;generator&quot; query then looks something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT &apos;SELECT N&apos;&apos;&apos; + [ProdoctId] + &apos;&apos;&apos;, (SELECT [id] FROM [dbo].[category] WHERE [code] = &apos;&apos;&apos; + [CategoryCode] + &apos;&apos;&apos; AND [name] = &apos;&apos;&apos; + [CategoryName] + &apos;&apos;&apos;) UNION ALL&apos; FROM RawMappingData
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And this will help us generate our final SQL Statement we need:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SET NOCOUNT ON; SET XACT_ABORT ON; GO

BEGIN TRANSACTION; INSERT INTO [dbo].[product_mapping]([product_id], [category_id]) SELECT N&apos;1A1231A&apos;, (SELECT [id] FROM [dbo].[submarket] WHERE [code] = &apos;AT01&apos; AND [name] = &apos;Region 01&apos;) UNION ALL SELECT N&apos;3C1111B&apos;, (SELECT [id] FROM [dbo].[submarket] WHERE [code] = &apos;AT01&apos; AND [name] = &apos;Region 01&apos;) UNION ALL SELECT N&apos;77A3X1&apos;, (SELECT [id] FROM [dbo].[submarket] WHERE [code] = &apos;AT01&apos; AND [name] = &apos;Region 01&apos;) COMMIT;

RAISERROR (N&apos;[dbo].[submarket_mapping]: Insert Batch: 1.....Done!&apos;, 10, 1) WITH NOWAIT; GO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So there you have it. What took me about half a day with a text editor and some old regular expression replacement tricks (which still included some errors to fix) I was able to recreate in about 5 minutes by piecing these things together. This saved time and work.&lt;/p&gt;
&lt;p&gt;Have you done anything similar using different means? I&apos;d love to know. I&apos;m always looking for new tricks for my toolbelt!&lt;/p&gt;
</content:encoded></item><item><title>Ambidextrous</title><link>https://dillieo.me/posts/growth/2012-04-27-ambidextrous/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-04-27-ambidextrous/</guid><description>Ambidextrous</description><pubDate>Fri, 27 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;d give my right arm to be ambidextrous.&lt;/p&gt;
&lt;p&gt;I&apos;d give my right arm to be ambidextrous.&lt;/p&gt;
</content:encoded></item><item><title>Quick Review Norah Jones Little Broken Hearts</title><link>https://dillieo.me/posts/growth/2012-04-26-quick-review-norah-jones-little-broken-hearts/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-04-26-quick-review-norah-jones-little-broken-hearts/</guid><description>Norah Jones Little Broken Hearts Cover</description><pubDate>Thu, 26 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My wife and I are HUGE Norah Jones fans. She has this soulful sound that is truly unique to her. While her voice sometimes seems light and soft, it is ALWAYS full of strength. I was extremely excited to see that her new album is coming out in a month. I was even more excited that for a limited time you can listen to the entire album online for free &lt;a href=&quot;http://www.npr.org/2012/04/15/150302373/first-listen-norah-jones-little-broken-hearts&quot;&gt;here&lt;/a&gt; (thanks NPR!). I&apos;m no music critic, and I&apos;ve only been through the album about three times in the last day, but I figured I&apos;d have to share some quick thoughts.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ll admit I was a little worried when I first started up the album. Norah&apos;s last album &quot;The Fall&quot; (I consider the collection of compilations &quot;...Featuring&quot; as a seperate work). It seemed to me that she was going a little too much down the &quot;pop music&quot; route and I&apos;m not that much into that. Don&apos;t get me wrong. I love some of the folks and fun music she has sone on other albums. It simply reminded me a bit of when Harry Connick Jr. Released his &quot;She&quot; and &quot;Star Turtle&quot; albums. I&apos;m enough of a fan to listen to them, but it stays out of my normal play cycle.&lt;/p&gt;
&lt;p&gt;Regardless, and to get back on track, I found &quot;Little Broken Hearts&quot; to be very well done. Her opening track &quot;Good Morning&quot; isn&apos;t a jazz number, but it contains all of the soulful and powerful music you&apos;re used to her. The second chart &quot;Say Goodbye&quot; does have a pop sound, but there&apos;s something quirky about it that makes it fun. Overall the album shows her going back a little more into the jazz style, and has some very moving songs. &quot;Miriam&quot; seems almost hauntingly sad &quot;Happy Pills&quot; is a very fun chart.&lt;/p&gt;
&lt;p&gt;So I&apos;m excited to add this album to our collection when I get a chance to. In the meantime, thanks Norah for allowing us a &lt;a href=&quot;I&apos;m%20no%20music%20critic,%20and%20I&apos;ve%20only%20been%20through%20the%20album%20about%20three%20times%20in%20the%20last%20day,%20but%20I%20figured%20I&apos;d%20have%20to%20share%20some%20quick%20thoughts.&quot;&gt;FULL listen&lt;/a&gt; to your album!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip How To Download A File From Amazon S3 And Prompt The User Using Net</title><link>https://dillieo.me/posts/development/2012-04-24-quick-tip-how-to-download-a-file-from-amazon-s3-and-prompt-the-user-using-net/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-04-24-quick-tip-how-to-download-a-file-from-amazon-s3-and-prompt-the-user-using-net/</guid><description>Quick Tip</description><pubDate>Tue, 24 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Amazon S3 is a wonderfully simple and powerful way to have mass storage at your disposal in the cloud. Amazon provides a wonderful SDK with great examples on how to do the common tasks. However, I ran into one issue I didn&apos;t see an example for, and spend the better part of a day piecing my way though. How do download a file from S3 using a web application and prompt the user on what to do with the file.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;By itself, it doesn&apos;t seem like there would be an issue with automatically downloading the file. However, if the user doesn&apos;t know where the file has been downloaded to, or wants to change the location, problems can occur. Amazon does allow you to change the response headers in the GetObject() method, but this didn&apos;t seem to work for me.&lt;/p&gt;
&lt;p&gt;The solution I found was to download the file from S3 into a temporary location on the web server, and then serve the file to the user in the HttpResponse using the TransmitFile() method. One advantage to this is that you could potentially setup some local caching with the file, or even do some additional checking with the file, before sending it on to the user. Here&apos;s what the final code looks like. This assumes you already have the AWS SDK for .Net configured in your application, if not, you&apos;ll need to set that up first. The other thing to note is that our bucket may have a pseudo folder structure in place by use of &quot;/&quot; characters between &quot;folders&quot;. The code will parse that to get the actual file name to properly name it upon download.&lt;/p&gt;
&lt;p&gt;[gist]2480125&lt;/p&gt;
</content:encoded></item><item><title>Support Our Girls Race A Duck And Maybe Win Dollar1000</title><link>https://dillieo.me/posts/growth/2012-04-17-support-our-girls-race-a-duck-and-maybe-win-dollar1000/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-04-17-support-our-girls-race-a-duck-and-maybe-win-dollar1000/</guid><description>Duck Derby Girls</description><pubDate>Tue, 17 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Greetings friends and family...&lt;/p&gt;
&lt;p&gt;If you&apos;ve made it this far, thanks for taking a moment to read this (and see a cute picture of our girls 8^D)&lt;/p&gt;
&lt;p&gt;The school that the girls go to are having a &quot;Duck Derby&quot; fundraiser this year. It&apos;s a pretty fun idea and here&apos;s how it works.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You purchase one (or more) &quot;ducks&quot; for $10.&lt;/li&gt;
&lt;li&gt;You receive a souvenir duck (pictured above) that has a number on it. This is your entry number.&lt;/li&gt;
&lt;li&gt;On May 27th, the school hosts a duck derby over at the Verde River. A larger plastic duck, with YOUR number on it, is lined up with other ducks and released simultaneously down the river.&lt;/li&gt;
&lt;li&gt;The owner of the duck that come across the finish line first wins $1000!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Yep, it&apos;s that simple. You do not even need to be present to win.&lt;/p&gt;
&lt;p&gt;Even better, we don&apos;t need the money until the 21st of May. So if you&apos;re interested in purchasing a duck (or a flock of ducks) to help support the girls&apos; school and potentially win some money, all we need from you is the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your name.&lt;/li&gt;
&lt;li&gt;Your phone number.&lt;/li&gt;
&lt;li&gt;Your e-mail address (only if you want derby updates via e-mail)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s it!&lt;/p&gt;
&lt;p&gt;If you&apos;re interested, please drop Jen or I a line. My e-mail is dillieo@gmail.com and Jen&apos;s is preggomomma@gmail.com and we&apos;ll be happy to help you out. You can also call the house at 928.445.3234.&lt;/p&gt;
&lt;p&gt;Thanks for reading!!!&lt;/p&gt;
</content:encoded></item><item><title>The Top 10 Island Cd Disc Mix</title><link>https://dillieo.me/posts/development/2012-04-16-the-top-10-island-cd-disc-mix/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-04-16-the-top-10-island-cd-disc-mix/</guid><description>Island Set Cover</description><pubDate>Mon, 16 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been archiving my music as of late, re-ripping some old discs and using the &quot;randomizer&quot; to pull up some old classics. I realized that I have A LOT of music. I&apos;m sure nowhere near what others have, but I think iTunes told me one time I have a weeks worth of music to work with. So then I had a random thought. What if I crashed on an island, like on Lost, and there was a mysterious car that had a 10 disc changer built into it (Hmm, some of my readers might not know what that is, but that&apos;s how we had &quot;bulk music&quot; before iPods 8^D). What would be the 10 albums I want put in there for me (since the island is mysterious, it knows me quite well)? Here&apos;s the list I came up with, in no particular order:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/user/dillie-o/playlist/1QH2VfpaJkeGOuFi9aiMRE&quot;&gt;Listen to the entire playlist on Spotify&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;http://open.spotify.com/user/dillie-o/playlist/1QH2VfpaJkeGOuFi9aiMRE&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2011-08-liftalbumcover.jpg&quot; alt=&quot;Lift Album by Audio Adrenaline&quot; /&gt; Audio Adrenaline: Lift&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/5vTZLik2vPaIIgWY8P4BrI&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AA is my all time favorite group of rockers, hands down. Out of all their Albums, Life is my favorite. While all of their albums have a lot of upbeat energy, there is a transformation in their style and lyrics that occurred in the Life album, adding a greater depth to their music. Songs like &quot;Rejoice&quot; and &quot;Summertime&quot; keep that same intensity, but &quot;Tremble&quot; is a very humbling and impactful song. The bonus track &quot;Lonely Man&quot; at the end is added candy.&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2011-03-corea_chick_works.jpg&quot; alt=&quot;&quot; /&gt; Chick Corea: Works&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/7Eay8EG03lXCHLkEMUPc4O&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m a jazz man, and while I tend to favor classical big band jazz, there was something about Chick Corea that always resonated with me. Most of his &quot;electric band&quot; stuff is well known, but the way he combines strings with jazz is rather profound. The final track on this album, &quot;La Fiesta&quot; mixes both his electric style and latin flare that I dare you NOT to dance to while listening.&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2012-04-u2-joshua-tree-cover.jpg&quot; alt=&quot;U2 Joshua Tree&quot; /&gt; U2: The Joshua Tree&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/586ZRfgsIckfcKvHVcGM4V&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This album is a true classic. While U2 has been doing great music for several decades now, I think this album is probably still their best. Songs like &quot;I Still Haven&apos;t Found What I&apos;m Looking For&quot;, &quot;Where the Streets Have No Name&quot;, and &quot;Bullet the Blue Sky&quot; are known by all. There is a mix of styles on the album. It is just great listening no matter what mood you&apos;re in. Plus begin from one of the rare areas where Joshua Trees actually grow, there was a sentimental bonus.&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2011-05-beautyfrompainalbum.jpg&quot; alt=&quot;&quot; /&gt; Superchick: Beauty from Pain 1.1&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/3eaIaIeIYR40v2zqYshmgq&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Superchick is the newest band I&apos;ve fallen for, and they carry a similar energy style to Audio Adrenaline. However, the vocals by their lead singer Tricia Brock show a lot of range and distinction. She takes the moving lyrics and gives them that much more intensity. Songs like &quot;Stand in the Rain&quot; and &quot;Suddenly&quot; provide some deep insights amongst the powerful music. I&apos;m probably going to use the chorus from &quot;We Live&quot; on my tombstone.&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2011-03-djlorraineheadphonesgreenpic.jpg&quot; alt=&quot;&quot; /&gt; DJ Lorraine: Reverence&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://soundcloud.com/dillie-o/dj-lorraine-reverence&quot;&gt;Listen to it on SoundCloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Okay, so technically this isn&apos;t an album that you can purchase in the stores, but this is the mix that I found one day on a website podcast that solidified my love of electro/dance/house music. The energy is moving all the time, the changes into various breaks and samples is amazing. It&apos;s nearly an hour in length, and truly makes for an experience. Give it a listen!&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2012-04-holst-planets.jpg&quot; alt=&quot;Holst Planets&quot; /&gt; Gustav Holst: The Planets&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/7qIq12ShgwNkvr3a1i0sZW&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s something particularly moving, and haunting, about the Planets suite that I can&apos;t seem to get enough. Maybe its&apos; the powerful drive of Mars, the Bringer of War, or the light and delicate music found in Neptune, The Mystic that keeps me coming back for more. Holst was even forward thinking enough to not include Pluto in his suite. Well not really, Pluto hadn&apos;t been discovered yet and now it&apos;s been declassified as a planet. 8^D&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2011-05-ridingwiththekingcover.jpg&quot; alt=&quot;Riding With The King Cover&quot; /&gt; B.B. King &amp;amp; Eric Clapton: Riding with the King&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/7b0Ysbudh2BH9A853EfxEu&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This album is what happens when to giants collaborate. This album is full of blues gold. It&apos;s hard to pick a track on here that is my favorite, that&apos;s why I have to take them all. However, the opening (and title chart) &quot;Riding with the King&quot; as well as &quot;Marry You&quot; stick out as particular favorites.&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2012-04-goat_rodeo_sessions.jpg&quot; alt=&quot;Goat Rodeo Sessions&quot; /&gt; Yo-Yo Ma: The Goat Rodeo Sessions&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/7tSgsZ1ATPHDzUOqAmapTZ&quot;&gt;Listen to it on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m not one for a lot of &quot;folk&quot; music. But there&apos;s something about this album that I love to listen to. There&apos;s a simplistic nature to the music, since it is pure string instrumentals (with a couple of vocal tracks). At the same time, there is an intensity you can feel in the music that is very driving. From there you can start to sense the complexity of all the instruments coming together. The result is beautiful. The result is fun. The result makes you want to listen to it over and over again.&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2012-04-armstrong-louis-duke-ellington-great-summit-cd.jpg&quot; alt=&quot;Ellington Armstrong Great Summit&quot; /&gt; Duke Ellington &amp;amp; Louie Armstrong: The Great Summit&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/1Fquufzod0wEcCXt6oYnCJ&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s another one of those great compilations. The two most influential jazz musicians get together and play Ellington&apos;s classics with Armstrong&apos;s flair and unforgettable voice. I think they have my favorite rendition EVER of &quot;It Don&apos;t Mean A Thing (If it ain&apos;t got that swing)&quot;&lt;/p&gt;
&lt;p&gt;##&lt;img src=&quot;@assets/images/posts/2012-04-sixpence-none-the-richer.jpg&quot; alt=&quot;Sixpence None The Richer&quot; /&gt; Sixpence None The Richer: Sixpence None The Richer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://open.spotify.com/album/6HGNrA7twXCXBRQ2Rvc0kS&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is something about the the simple melodies, touching lyrics, and enchanting voice of Leigh Nash that makes this album a must have. There are those classics like &quot;There She Goes&quot; and &quot;Kiss Me&quot;. I also have an affinity towards &quot;Puedo Escribir&quot; for it&apos;s melody.&lt;/p&gt;
&lt;h2&gt;Give it a Listen!!!&lt;/h2&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http://spotify.com&quot;&gt;Spotify&lt;/a&gt;, I&apos;ve got the &lt;a href=&quot;http://open.spotify.com/user/dillie-o/playlist/1QH2VfpaJkeGOuFi9aiMRE&quot;&gt;entire set lined up on a playlist&lt;/a&gt;. Give it a listen, tell me what YOU would put on your own Island Set! Remember, the island is magical, so it&apos;ll make sure it&apos;s there waiting for you. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Review The Hunger Games Movie</title><link>https://dillieo.me/posts/development/2012-04-11-review-the-hunger-games-movie/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-04-11-review-the-hunger-games-movie/</guid><description>The Hunger Games Mockingjay</description><pubDate>Wed, 11 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My wife and I finally got to see The Hunger Games in the theatre this past Friday! Having &lt;a href=&quot;/review-the-hunger-games-trilogy-by-suzanne-collins&quot;&gt;read all three books&lt;/a&gt; in less than a week, I was very excited, and a little nervous to see how the movie would stack up to the books.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Just a brief recap, here is a brief background surrounding the movie. The movie is set in a future where North America is wiped out and replaced with a country called Panem. The Hunger Games serve as a brutal and twisted reminder to all of the districts that challenged the Capitol nearly 75 years ago and lost. As punishment, 12 districts are required to send a boy and girl between the ages of 12 and 18 to compete in a death match competition. To add to the twisted nature of these games, they are televised for the entire nation to see. Contenders may receive gifts from “sponsors” along the way during the games, which can often mean the difference between life and death. It is in this world Katniss Everdeen, 16, volunteers to participate in place of her 12 year old sister Primm, and to somehow make it through the horrific event alive. Joining her is another young man from Katniss&apos; district, Peeta Mellark, who will either die, or potentially have to kill Katniss in the games. Sent to guide Katniss and Peeta is Haymitch, the only victor from District 12, and lives in a permanently drunk state, apparently fed up with the world he is &quot;champion&quot; of. You&apos;ll have to read (or see) the rest of it to find out how this ends. I will let you know that the ending is really only the beginning of bigger things.&lt;/p&gt;
&lt;p&gt;As the movie unfolds, I was most impressed with the environment you are immersed in in the movie. Part of what makes the books so dramatic is the contract between the poor, rural setting of District 12 with the extravagant living of the capitol. Those in the capitol can use a remote control to change the scenery looking out their window. At the same time, these people are quite ignorant of the world they live in. They treat the tributes almost objects, under the guise that since they are giving the poor people a taste of a lavish live before their brutal event, that they have done them good in some regard. The battleground itself, where the games occur, was well done as well. It contained all the elements of a wide open forest, but there were the subtle clues, such as the cameras in the trees, and the night sky with a faint grid visible, that let you know that you were still under the control of people &quot;above&quot;.&lt;/p&gt;
&lt;p&gt;The acting itself was very well done. I won&apos;t say anything was Oscar worthy, but everybody filled their shoes quite well. I was particularly impressed with Woody Harrelson and Lenny Kravits roles as Haymitch and Cinna. Harrelson probably could have been a bit gruffier for my tastes, but he&apos;s got the acting chops that will really shine as the movies continue. I wish we could have had a bit more of Kravits as Cinna in the film because his role is so poignant and so enigmatic at the same time in the book. I was always unsure at how Caesar Flickerman would make it into the screen, but he is played perfectly, down to the blue hair and the way he is ALWAYS drawing his audience in with whatever drama unfolds. Jennifer Lawrence, Josh Hutchinson, and Liam Hemsworth do great jobs in their role as Katniss, Peeta, and Gale. I think Hutchinson does a great job at developing Peeta&apos;s character, who starts out looking more overwhelmed and scared at the beginning, but by the end shows cleverness, resolve, and strength. Peeta probably has one of the best (and forward looking) scenes in the movie with his &quot;I don&apos;t want them to change me&quot; speech.&lt;/p&gt;
&lt;p&gt;In comparing the movie to the story, I was very happy to see that the &quot;Team Peeta / Team Gale&quot; hype that started to brew with fans never came to fruition in the movies, which stayed true to the book. Yes there is a close bond between Katniss and Peeta as the story begins, but nothing that would be considered a romance. There definitely is some sorrow as Gale and Katniss say goodbye at the beginning, so the tension that arises as Katniss and Peeta&apos;s relationship unfolds in the movie is seen and felt, but nothing like the drama that unfolds in Twilight, which was a very poor comparison to make.&lt;/p&gt;
&lt;p&gt;I would have liked to have seen more time dedicated to the contrast between Capitol life and District 12 life. Part of what made the books so compelling to me was this contrast. More importantly was how ignorant most of the Capitol residents were to the demise of the tributes. There was a lot of dialog between Katniss and Cinna&apos;s assistants (Flavius, Viena, and Octavia) that shows the naivety of the Capitol. Compared to the clear intensions of President Snow, it makes the disdain for the Capitol as a whole that much more intense. I think this would have increased the intensity of the changes in the game, and in it&apos;s aftermath. However, since the second movie, Catching Fire, &lt;a href=&quot;http://www.imdb.com/title/tt1951264/&quot;&gt;is already in the works&lt;/a&gt;, maybe this aspect of the novels will be expanded upon further. All in all the movie was VERY accurate to the books, which was very pleasing. There was additional material added to the movies, such as showing how the game makers actually did their &quot;magic&quot; on the field, which was very good and interesting. There was also an exchange between President Snow and Head Game Maker Seneca Crane which did an excellent job at outlining some of the political issues going on behind the scenes, that wouldn&apos;t be easily expressed otherwise.&lt;/p&gt;
&lt;p&gt;Overall I give The Hunger Games an A- rating. I felt that some of the back story and character development that added to the drama should have been added. The acting was very good, but I think the story itself was far more engaging to the viewer, to which the director gets credit for realizing the &quot;Panem Universe&quot; very well. The story itself is amazing and kept me interested, and they did a great job at leading things in to the next book. I&apos;ll probably go see the movie at least once more in the theatre, and generally speaking I don&apos;t go to movies much anymore.&lt;/p&gt;
&lt;p&gt;Have you seen the movie? Read the books? I&apos;d love to hear your take on them as well!&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Rib Tips</title><link>https://dillieo.me/posts/growth/2012-04-04-worth-sharing-rib-tips/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-04-04-worth-sharing-rib-tips/</guid><description>Pork Ribs Unbutchered</description><pubDate>Wed, 04 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The other day my wife came back from the store with a package of &quot;rib tips&quot; from the store. I had never seen these before, and was intrigued on what recipe we were going to make them with.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;We originally planned on having them in a stir fry. After cutting into the first piece of meat, there were so many bones on it that I really couldn&apos;t get enough chunks of meat off them for a decent stir fry. As I was getting ready to put them back in the fridge and get some chicken for stir fry the thought occurred to me... let&apos;s try these on the grill. So I pulled out my homemade rub, coated up the tips, and stuck them in the fridge over night. The next day I tossed them on the grill, slathered them with my BBQ sauce, and in about 20 minutes they were fully cooked. They tasted AMAZING. I was genuinely surprised. The rub and the sauce gave it the flavor of slow cooked ribs, and we were easily able to suck all the meat off them and leave the small bone pieces aside. If you&apos;re looking for the actual recipe, &lt;a href=&quot;http://bakingforyou.me/2012/04/04/ribs-with-a-wonderful-gluten-free-sauce/&quot;&gt;my wife has blogged about that here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You still may be wondering what cut of meat this is. When you typically buy ribs from the grocery store, you get the &quot;unbutchered&quot; rack, which looks like this (minus the rub):&lt;/p&gt;
&lt;p&gt;Once you&apos;re done properly preparing the rack, it looks like this:&lt;img src=&quot;@assets/images/posts/2012-04-pork_ribs_prepared.jpg&quot; alt=&quot;Pork Ribs Prepared&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Notice the nice clean rectangular shape? The back also has a &quot;skin&quot; removed from the back of it as well. Where did the rest of the meat go? It&apos;s definitely edible, and THAT is where the rib tips come from. We&apos;re not wasting any meat, and we&apos;re getting some good food out of it as well!&lt;/p&gt;
&lt;p&gt;Give rib tips a try sometime. It&apos;s worth noting that the tips are a lot cheaper than your typical ribs. Which makes them great when you&apos;re in a bit of a budget crunch. I&apos;ll admit that I&apos;m still partial to my 2 to 3 hour slow grill full rack of ribs. However, with the rib tips, you get the flavor of the ribs in a fraction of the cook time. This makes it great for a quick weekday dinner.&lt;/p&gt;
&lt;p&gt;Grab the recipe for this &lt;a href=&quot;http://bakingforyou.me/2012/04/04/ribs-with-a-wonderful-gluten-free-sauce/&quot;&gt;on my wife&apos;s blog&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Why You Need A Release Branch</title><link>https://dillieo.me/posts/development/2012-04-03-why-you-need-a-release-branch/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-04-03-why-you-need-a-release-branch/</guid><description>SVN release branch outline</description><pubDate>Tue, 03 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve run into this issue a couple of times now, and after another incident this weekend, it only hit home the importance of having a release branch in your source code repository. Most folks already have this and know it&apos;s value. Just in case, here&apos;s a simple (yet important) example of why it is so important.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;On Friday I was working on a new feature for a client&apos;s website. It was a simple feature, a slider that would have a couple of ad links that would click through to the other site. We were still waiting on the artwork for the slider images, so I had used a couple of arbitrary images so that they could show a demo to the potential advertisers. I deployed this up to our test server.&lt;/p&gt;
&lt;p&gt;We use SVN and do a &quot;repository migration&quot; for our projects. What this means is that I check my code into the repository, log into the server, can call the repository update command, and it pulls everything down that has changed. This makes things really easy, because there are no huge zip files to work with. In addition, if you need to roll back a change, you can easily do that through the proper SVN commands. As a side benefit, if you REALLY have to make a change that applies to the entire project (say a critical configuration option you never knew until you deployed) you can commit to the repository to the test server, and it will be pushed down to your development machine (or live machine) the next time you do an update.&lt;/p&gt;
&lt;p&gt;Going back to our story, our repository for this project had only one source, the trunk. This means we have one main line of development. When you were done with a change, you pushed it up to the trunk, updated the test server, and when things were approved, you updated to the live server. This is what I did early on Friday. I pushed up the change to the test server, let the client know, and went about with other projects. Unknown to me, later that day, one of the other developers on our team ALSO made a change to the site. They needed to update one of the logos. They followed the same process. They made their updates, pushed it to the repository, updated the test server, and then updated the live server.&lt;/p&gt;
&lt;p&gt;The problem with this is that when you do a typical repository update, you pull all the changes made since the last update. In this case, the update pulled my changes (not ready for the live site) and their changes to the live server. Unfortunately this glitch wasn&apos;t caught until over the weekend, and with both me and the developer out of town, the changes didn&apos;t get rolled back until late Sunday evening. Granted one solution to this problem is more communication, and typically we check the comments and the log left in the repository to see if we need to do a partial deployment of repository revisions. However, a safer and more flexible solution is to create a release branch in the repository.&lt;/p&gt;
&lt;p&gt;I won&apos;t go into the details of branching and merging. &lt;a href=&quot;http://www.codinghorror.com/blog/2007/10/software-branching-and-parallel-universes.html&quot;&gt;Jeff Atwood&lt;/a&gt; does a good job at going over all the options. I will say that keeping a separate branch that is JUST for your code that is ready to go to the live site solves our problem above immediately. What would have happened above would have been that the other developer would have made their changes, pushed them into the repository (trunk) and then updated the test server as usual. However, when they were ready for the live server, they would have taken the repository revision specific to the change(s) they made and merge them into the release branch. The live site would be tied to the release branch (instead of the trunk) and the live site would have been updated from there, and only updating the change they made.&lt;/p&gt;
&lt;p&gt;There are a lot of uses for branches in source control. I&apos;m currently working on a rather complex feature to add to a site, and I created a branch to work on. That way the day to day quick fixes and updates can occur without me having to worry about my code affecting anything else. When the time comes, I&apos;ll merge my changes into the trunk for primary testing, and then we&apos;ll migrate it to the release branch when it&apos;s ready to go live. Some people keep a separate branch for each version of their code released (1.0, 1.5, 2.0, etc) so they can easily roll back anywhere in time, or to have an archive of each major version for compatibility testing.&lt;/p&gt;
&lt;p&gt;So don&apos;t forget, get yourself a release branch in your source control system. Your coworkers, your sanity, and your project will thank you.&lt;/p&gt;
</content:encoded></item><item><title>Announcing Literaryaddictioncom And Bakingforyoume</title><link>https://dillieo.me/posts/growth/2012-03-23-announcing-literaryaddictioncom-and-bakingforyoume/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-03-23-announcing-literaryaddictioncom-and-bakingforyoume/</guid><description>Literary Addition Banner</description><pubDate>Fri, 23 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My wife has been working VERY HARD over the last few months putting together book reviews, and gluten free recipes. A lot of this is reflective of the passions in her life. Today I&apos;m proud to announce that she has a couple of domains launched to support these blogs!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://literaryaddiction.com&quot;&gt;Literary Addiction&lt;/a&gt; - Book reviews on a wide variety of topics. My honnie was nice enough to even let me post my Hunger Games Review there.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bakingforyou.me&quot;&gt;Baking For You&lt;/a&gt; - Dedicated to Gluten Free living. Recipes, tips, ingredients, and more!&lt;/p&gt;
&lt;p&gt;Go check them out and spread the word! I think you&apos;ll enjoy them immensely!&lt;/p&gt;
</content:encoded></item><item><title>How To Rip Cds Using Clementine For Osx</title><link>https://dillieo.me/posts/development/2012-03-21-how-to-rip-cds-using-clementine-for-osx/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-03-21-how-to-rip-cds-using-clementine-for-osx/</guid><description>Clementine Logo</description><pubDate>Wed, 21 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I&apos;ve become a big fan of the &lt;a href=&quot;http://www.clementine-player.org/&quot;&gt;Clementine music player&lt;/a&gt;. It&apos;s free. It has some great features. It&apos;s based off of the well known player Amarok and it has both Mac and PC versions. The one thing that it currently doesn&apos;t have is the ability to rip CDs to your collection. Actually you there IS a way to rip CDs in Clementine through the magic of ... no, not TV ... transcoding.&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;One of features I love about Clementine is the transcoding feature. This allows you to convert audio from one format or bitrate to another. When I first started ripping my audio CDs, I ripped them at 320k quality, since I had some extra hard disk space and wanted some high quality audio for down the road. However, when I post my audio for my podcasts, or want to transfer them to Fiver or Whister (my Droid and iPod Touch), the large file size becomes a problem. I now simply use the transcoding tool in Clementine, specify a lower bitrate (thus affecting size) and then I copy them over. We&apos;ll use a similar approach for our CDs in Clementine.&lt;/p&gt;
&lt;p&gt;The first step is to put the CD in your computer. iTunes will most likely open and ask if you want to rip it, but for now we&apos;ll say no and quit out of iTunes. Once you quit, double click on your CD that appears on the desktop, and simply select all the tracks you want to rip, and drag them to your desktop, or any other place you find convenient. I typically take the time to create the artist/album folders in my Music directory and copy them over there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-clementinecopy.png&quot; alt=&quot;Clementine Copy&quot; title=&quot;Clementine Copy&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once the copying is done, eject your CD, and start up Clementine. Select Tools-&amp;gt;Transcode Music. This will bring up the transcoding window. Click the &quot;Add&quot; button and navigate to the folder you copied the files to.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-clementinetranscodeselect.png&quot; alt=&quot;Clementine Transcode Select&quot; title=&quot;Clementine Transcode Select&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll need to change the &quot;Files of type&quot; option to &quot;All Files (*)&quot; in order to be able to select them. Once that has changed, select all the files, and click the &quot;Open Button&quot;. You&apos;ll now see all of the music listed for transcoding. Click the &quot;Options&quot; button next to the Audio Format drop down list to specify your MP3 importing options.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-clementinetranscodeoptions.png&quot; alt=&quot;Clementine Transcode Options&quot; title=&quot;Clementine Transcode Options&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll notice that I&apos;m specifying 320kbps for my transcoding. You can do whatever size you like. The &quot;default&quot; bitrate for transferring to most Android/iPhone devices is 128kbps and a &quot;higher quality&quot; recording is 192kpbs. Transcoding makes a copy of the file, so you can always keep a large bitrate on your computer and transcode later at a lower bitrate to your portable device. When you&apos;re comfortable with your settings, click the OK button. Note that there are plenty more encoding options available in the drop down list, including FLAC, Ogg Vorbis, WMV and more. MP3 is the most common format, but you audiofiles out there know there are plenty of options. Our destination is set to &quot;Alongside the originals&quot; and we can&apos;t change that. If we have our portable music device plugged in and recognized by Clementine, we should be able to transcode directly to it. That&apos;s something to keep in mind for later.&lt;/p&gt;
&lt;p&gt;When you&apos;re all set, click the &quot;Start transcoding&quot; button to start the process. Depending on the number and length of your files, this could take a little time. Once your done, click the &quot;Close&quot; button and then quit out of Clementine. We have a little bit of cleanup to do. Go back to the folder you copied the CD files to and notice that your file count has doubled. Remove all the files that don&apos;t have .mp3 in their name.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-clementinefinal.png&quot; alt=&quot;Clementine Final&quot; title=&quot;Clementine Final&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Start up Clementine again, expand the &quot;Smart Playlists&quot; folder and select the &quot;Newest tracks&quot; playlist. Assuming that you have the library setup to autoscan every time it starts, you&apos;ll notice that your newly imported songs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-clementinenewtracks.png&quot; alt=&quot;Clementine New Tracks&quot; title=&quot;Clementine New Tracks&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From here you can use the build in tag editor, or a separate tool (I really like &lt;a href=&quot;http://www.macupdate.com/app/mac/30610/tagr&quot;&gt;Tagr&lt;/a&gt;) to fill out the rest of the information so it will fit nicely in your music library.&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it! I know it takes a little more work than other apps, and I&apos;m sure the developers for Clementine will add the functionality down the road, but this will get you by for now. I&apos;ve done all of this on my Mac, but I&apos;m sure the process is similar for a PC.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Getting Your Android Emulator To Read Virtual Hosts On Your Development Machine</title><link>https://dillieo.me/posts/development/2012-03-19-soup-to-nuts-getting-your-android-emulator-to-read-virtual-hosts-on-your-development-machine/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-03-19-soup-to-nuts-getting-your-android-emulator-to-read-virtual-hosts-on-your-development-machine/</guid><description>ADV Results</description><pubDate>Mon, 19 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you&apos;re setting up a new website, and need to test out your mobile functionality. Sadly you don&apos;t have a development server in which you can push everything up to and test that way. Instead, you need to take the &quot;localhost&quot; route. In addition, you do a lot of web development, so you have your websites setup using virtual hosts in Apache. So to get your site, you type in something like &quot;demopyrocms.localhost&quot; to access your individual sites. Here&apos;s a breakdown of what you need to do to get everything running smooth.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;If you&apos;re using a Mac, you&apos;ll kick up your iOS simulator, type in your url, and you&apos;re all set:&lt;img src=&quot;@assets/images/posts/2012-03-iosscreenshot.png&quot; alt=&quot;iOS Screenshot&quot; title=&quot;iOS Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;However, if you start up your Android emulator, and try the same thing, you&apos;ll get something like this:&lt;img src=&quot;@assets/images/posts/2012-03-avdscreenshot.png&quot; alt=&quot;AVD Screenshot&quot; title=&quot;AVD Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The reason for this, is that unlike the iPad / iPhone emulators, which are simply simulated, the Android emulators are truly emulated, so they get their own networking environment. The Android environment does provide a workaround for this. They setup the address 10.0.2.2 as a &quot;redirect&quot; of sorts to localhost on the development machine that you&apos;re working on. This works great if you have a single site.&lt;/p&gt;
&lt;p&gt;However, as mentioned before, I&apos;m running multiple sites, and I&apos;m using the virtual hosts feature. When you type the address in above, it looks on the device itself, and obviously the website isn&apos;t there. The solution is to update the hosts file on the device with a record that has our virtual host address that points to 10.0.2.2. Here&apos;s how to make that happen.&lt;/p&gt;
&lt;h3&gt;1. Starting up the Emulator&lt;/h3&gt;
&lt;p&gt;The first step is to fire up the virtual machine and give it a little extra space on the SD drive to handle the larger file size. Otherwise you&apos;ll get an &quot;out of memory&quot; or different type of error later on. You can&apos;t do this through the AVD manager, you have to do it through the command prompt. AVD uses special device IDs for the emulators that you have created. If you don&apos;t know the name of your device, you can execute the following command to get a list of them:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./android list avd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And you&apos;ll get a listing something like this:&lt;img src=&quot;@assets/images/posts/2012-03-androiddevicelist.png&quot; alt=&quot;Android Device List&quot; title=&quot;Android Device List&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The android program will be in the &quot;tools&quot; directory within your install path. For me it&apos;s ~/Applications/android-sdk/tools. Most likely it&apos;ll be different for you. Once you know the name of the device you need, you can start it up from the command prompt:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./emulator -avd \[AvdName] -partition-size 128&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The emulator program will be in the &quot;tools&quot; directory within your install path. For me it&apos;s ~/Applications/android-sdk/tools. Most likely it&apos;ll be different for you.&lt;/p&gt;
&lt;h3&gt;2. Mount the emulator&lt;/h3&gt;
&lt;p&gt;Once the emulator is up and running, we need to mount it through into the debugger so we can update the hosts file. First we need to get the special id of the device:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./adb devices&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The adb program will be in the &quot;platform-tools&quot; directory within your install path. For me it&apos;s ~/Applications/android-sdk/platform-tools. Most likely it&apos;ll be different for you.&lt;/p&gt;
&lt;p&gt;Sometimes the adb manager may be running, but has not properly detected the emulator. To do this you simply need to stop and restart the adb server:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./adb kill-server./adb start-server&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Your device list will look something like this:&lt;img src=&quot;@assets/images/posts/2012-03-adbscreenshot.png&quot; alt=&quot;ADB Screenshot&quot; title=&quot;ADB Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now that you have the ID of the device, you need to mount it to the debugger:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./adb -s \[DeviceID] remount&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll get a confirmation that the device has been mounted:&lt;img src=&quot;@assets/images/posts/2012-03-adbremount.png&quot; alt=&quot;ADB Remount&quot; title=&quot;ADB Remount&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. Update the hosts file&lt;/h3&gt;
&lt;p&gt;From here, there are two way you can update your hosts file. If one doesn&apos;t work, try the other.&lt;/p&gt;
&lt;h3&gt;Option 1: Pull/Push a copy of the hosts file from the emulator.&lt;/h3&gt;
&lt;p&gt;Grab a copy of the hosts file from the emulator with the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./adb -s \[DeviceID] pull /etc/hosts \[YourLocalPath]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The [YourLocalPath] value can be anywhere that is easy for you to access. Then edit the file and add the following line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;10.0.2.2 \[YourVirtualHostName]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then push it back on to the emulator:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./adb -s \[DeviceID] push \[YourLocalPath]/hosts /etc/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It&apos;ll look something like this through your command prompt:&lt;img src=&quot;@assets/images/posts/2012-03-adbpullpush.png&quot; alt=&quot;ADB Pull/Push&quot; title=&quot;ADB Pull/Push&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Option 2: Edit the hosts file through the ADB shell.&lt;/h3&gt;
&lt;p&gt;Open up a shell prompt on the device through the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./adb -s \[DeviceID] shell&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;From there, write the virtual host name directly into the hosts file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo &apos;10.0.2.2 \[YourVirtualHostName]&apos; &amp;gt;&amp;gt; /etc/hosts&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then exit out of the shell.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Iti&apos;ll look something like this through the command prompt:&lt;img src=&quot;@assets/images/posts/2012-03-adbecho.png&quot; alt=&quot;ADB Echo&quot; title=&quot;ADB Echo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; After some additional testing, I&apos;ve found that your emulators will vary as to the location of your hosts file. Some devices like to store it in /system/etc/, some like to store it in /etc/. If one path doesn&apos;t work, try the other.&lt;/p&gt;
&lt;h3&gt;4. Verify the results&lt;/h3&gt;
&lt;p&gt;Open up the browser and load up the site. You should now be able to see it through the emulator:&lt;/p&gt;
&lt;p&gt;There you have it! Now you can do some local testing with your Android emulator. I haven&apos;t tried it yet, but I believe if you plug in your Android phone and load it up through ADB, you can do the same thing. I&apos;ll try to report back on that a little later.&lt;/p&gt;
&lt;h3&gt;Hat Tips Galore&lt;/h3&gt;
&lt;p&gt;I wouldn&apos;t be doing right by people if I didn&apos;t list the links that helps me piece this all together. There were plenty of sites that had 2 or 3 pieces of the puzzle, but didn&apos;t account for an error I ran into, so I&apos;d go to another place. So here&apos;s the HT list that helped me out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.android.com/guide/developing/tools/adb.html&quot;&gt;Android Developers ADB Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://stackoverflow.com/questions/7502011/emulator-not-showing-in-adb-devices&quot;&gt;Restarting ADB Server to see devices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://stackoverflow.com/questions/5141724/access-a-virtual-host-from-the-android-emulator&quot;&gt;Pull/Push hosts file on emulator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cuteandroid.com/tips-for-android-developer-failed-to-copy-file-to-system&quot;&gt;Starting emulator through command prompt to increase partition size&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bradcurtis.com/2011/02/13/hosts-file-google-android-emulator/#comment-278511155&quot;&gt;Using shell to modify hosts file directly (comments)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Skanewpid By Sfc</title><link>https://dillieo.me/posts/life/2012-03-16-song-of-the-week-skanewpid-by-sfc/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2012-03-16-song-of-the-week-skanewpid-by-sfc/</guid><description>SFC Phase III</description><pubDate>Fri, 16 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In honor of my old friend Josh&apos;s birthday, I&apos;m posting an old hip-hop favorite. Mainly because he pegged the title, intentionally or unintentionally, I don&apos;t know.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ll go into the details about old school Christian Hip-Hop and how SFC was a staple of mine back in the day. For now, I&apos;ll just let you listen to a fun song, and see how many puns you can find.&lt;/p&gt;
&lt;p&gt;Happy Birthday Josh!!!!!&lt;/p&gt;
</content:encoded></item><item><title>Developer Nirvana The Osx Vmware Fusion Visual Studio 2010 Amalgamation</title><link>https://dillieo.me/posts/development/2012-03-14-developer-nirvana-the-osx-vmware-fusion-visual-studio-2010-amalgamation/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-03-14-developer-nirvana-the-osx-vmware-fusion-visual-studio-2010-amalgamation/</guid><description>OSX Win7 Fusion</description><pubDate>Wed, 14 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I mentioned a little while back that my job has ben jumping through a lot of different environments in order to get my work done. I&apos;m doing PHP development in OSX to be on the same page as the my fellow developers. I also do .Net development for some of the clients we have. Previously, I&apos;ve been working in a dual boot environment, swapping between two OSes as needed and relying on &lt;a href=&quot;/cloud-life-5-free-tools-to-get-what-you-need-whenever-and-wherever-you-need-it&quot;&gt;cloud life&lt;/a&gt;. Sometimes this doesn&apos;t work out the best.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For instance, I may be working on a PHP project, and half way through the day, at urgent .Net request comes up, and I need to shut down what I&apos;m doing, fire reboot into the Windows 7 partition to work. This causes me to lose time, and a bit of focus as I shift gears and wait for the other system to boot up. Also, for purely selfish reasons, the version of &lt;a href=&quot;http://trillian.im&quot;&gt;Trillian&lt;/a&gt; that runs on Windows is far more robust than the version for Mac. They have admitted they are updating the Mac version, but having the best in any field would be wonderful. I&apos;ll also add that the &lt;a href=&quot;http://toadworld.com/&quot;&gt;TOAD&lt;/a&gt; suite for database work is hands down the best. It&apos;s only available on Windows (though free!)&lt;/p&gt;
&lt;p&gt;Finally, after a tasty upgrade to 8GB of RAM on my MacBook Pro, I was able to get the bet of both worlds, thanks to &lt;a href=&quot;http://www.vmware.com/products/fusion/features.html&quot;&gt;VMWare Fusion&apos;s&lt;/a&gt; Unity Mode. You&apos;re probably aware of VMWare Fusion. It&apos;s in the same category as Parallels or VirtaBox in that you can run a virtual machine of a different OS. This is great for creating a test suite of computers to verify your website look just fine in Chrome across Windows, Mac, and Unix. In addition, VMWare Fusion has a thing called &quot;Unity Mode&quot;. This allows you to &quot;hide&quot; the virtual machine window that you typically see, and all of the applications run in their own windows on the desktop, as if they were native applications.&lt;/p&gt;
&lt;p&gt;This is what hits the ball out of the park and makes life AMAZINGLY simpler for me. During the day, I can now keep Visual Studio 2010 and Aptana Studio 3 open at the same time for the various development tasks I&apos;m doing. I can open up a Windows Explorer window, an OSX Finder Window, and copy any files I need to across system lines, without a hassle. Since Trillian runs better in Windows, I just start that up and use it like I would anything else. It is truly a BEAUTIFUL site to see AND work with.&lt;/p&gt;
&lt;p&gt;I will add a couple notes that you should be mindful of when running this setup.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You&apos;ll need 8GB of RAM. I&apos;ve read stuff before saying 4 would be just fine, but I was using 4 for the longest time and I would always get hiccups, to the point that both OSes would halt. Not an issue anymore.&lt;/li&gt;
&lt;li&gt;Create a Boot Camp partition, and then let VMWare boot from that. You will get &lt;a href=&quot;http://apple.stackexchange.com/questions/13512/pros-and-cons-of-boot-camp-virtualization-for-windows-7&quot;&gt;better performance this way&lt;/a&gt;, and don&apos;t have to deal with a VM file going bad.&lt;/li&gt;
&lt;li&gt;Make sure to &lt;a href=&quot;http://kb.vmware.com/kb/1014046&quot;&gt;configure time machine to ignore the virtual machine files&lt;/a&gt;. Otherwise you&apos;ll have a 4GB backup starting up every hour, and this is not desirable.&lt;/li&gt;
&lt;li&gt;While in Unity mode, it appears that you can&apos;t move a given window to another virtual desktop (if you&apos;re using spaces). That&apos;s not that big of a deal for me, I just close the app and open it on the space I need.&lt;/li&gt;
&lt;li&gt;It&apos;s hard to get an application to launch an app as an Administrator (elevated privileges) while in Unity mode, unless the app itself asks for it. The trick to this is to swap back into Single Window or Full Screen mode and launch it that way. You don&apos;t have to worry about losing your running apps, it just takes a little longer to swap modes back and forth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My productivity has never been better since getting Unity mode to run, and I feel that much more geekish in the process. 8^D If you&apos;re run into any other handy VMWare (or any other virtual machine app for that matter), kindly drop it my way.&lt;/p&gt;
</content:encoded></item><item><title>Top 5 Looney Tunes</title><link>https://dillieo.me/posts/growth/2012-03-12-top-5-looney-tunes/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-03-12-top-5-looney-tunes/</guid><description>Looney Tunes</description><pubDate>Mon, 12 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yeah, you know and love them. Our kids are just starting to go through the our collection on DVD. There&apos;s something about the simple anvil on the head that appears to the kids and the verbal banter that appeals to the adults. Then again, I like a good anvil dropping myself. That said, I was reflecting upon all the episodes that have gone through my head and these are the five I consider my favorite.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;5. Water, Water, Every Hare&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-bugsmonsterhair.jpg&quot; alt=&quot;Bugs Monster Hair&quot; title=&quot;BugsMonsterHair&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There are a few episodes that have Bugs facing off against the huge red hairy monster, but the whole routine with the hairdresser that Bugs pulls off is utterly hilarious. That and dynamite rollers is great too.&lt;/p&gt;
&lt;h2&gt;4. Porky in Wackyland&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-porkyinwackyland.jpg&quot; alt=&quot;Porky In Wackyland&quot; title=&quot;Porky In Wackyland&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is actually a really old Black and White episode, in which Porky goes in search of the last of the Dodo birds. Between the Salvador Dali like scenery, the antics of the bird, the perpetual lack of anything typical when it comes to gravity, objects etc., I couldn&apos;t stop laughing. Plus the punchline when he actually catches the dodo and another 100 pop up on screen to praise him on catching the &quot;last&quot; of the dodos is priceless.&lt;/p&gt;
&lt;h2&gt;3. Duck Amuck&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-duckamuck.jpg&quot; alt=&quot;Duck Amuck&quot; title=&quot;Duck Amuck&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This cartoon was a &quot;alternate reality&quot; of sorts, as the cartoonist continues to draw Daffy into odd situations, most notably as the platypus, flower, screwball duck you see. At the very end it is revealed Bugs is the artist having some fun.&lt;/p&gt;
&lt;h2&gt;2. Soup or Sonic&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-wileecoyote.jpg&quot; alt=&quot;Wile E Coyote&quot; title=&quot;Wile E Coyote&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Roadrunner / Coyote episodes are my all time favorite. I couldn&apos;t get enough of how well they made use of nobody talking, all of the Acme gadgets, and the big falls. This was the only episode (maybe one other) where the coyote actually catches the roadrunner, however, he is shrunk down far smaller than the roadrunner by this point. 8^D&lt;/p&gt;
&lt;h2&gt;1.Rabbit Fire&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-elmerseason.jpg&quot; alt=&quot;Elmer Season&quot; title=&quot;Elmer Season&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There were numerous episodes where Daffy and Bugs would jaunt through the forest, trying various tricks to get the other shot. Inevitably there were posts on trees getting swapped between rabbit in duck season. However, in this episode, we get one final twist as the sign changes to &quot;Elemer Season&quot;, a shock to all, but Bugs and Daffy get to turn around and hunt &quot;Elmers.&quot; When I think of looney tunes, I think of this. It&apos;s my all time favorite.&lt;/p&gt;
&lt;h2&gt;?... and yours&lt;/h2&gt;
&lt;p&gt;With so many episodes out there, I&apos;m sure there are some that you can&apos;t help but think about and smile, just at the mere mention of Bugs of Daffy, or Looney Tunes. What were they?&lt;/p&gt;
</content:encoded></item><item><title>Kanned Tomatoes A Kanban Pomodoro Way Of Getting Things Done</title><link>https://dillieo.me/posts/development/2012-03-08-kanned-tomatoes-a-kanban-pomodoro-way-of-getting-things-done/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-03-08-kanned-tomatoes-a-kanban-pomodoro-way-of-getting-things-done/</guid><description>Pomodoro Kanban</description><pubDate>Thu, 08 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Edit: I&apos;ve finally built a tool to integrate Trello and Pomodoro! Check out &lt;a href=&quot;/introducing-trellodoro-trello-pomodoro-personal-kanban-bliss&quot;&gt;Trellodoro&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been a big fan of &lt;a href=&quot;http://www.personalkanban.com/&quot;&gt;personal kanban&lt;/a&gt; for a while now. I even have a &lt;a href=&quot;/tag/kanban/&quot;&gt;couple articles&lt;/a&gt; about my journeys in kanban land. Kanban gives me a great way of seeing what I&apos;m doing, what is waiting for feedback from others, and what I need to do. However, lately I&apos;ve been getting rather scattered in actually accomplishing my various tasks. To remedy this, I decided to try out a little something I read about a while back, the &lt;a href=&quot;http://www.pomodorotechnique.com/&quot;&gt;Pomodoro Technique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The basic idea behind Pomodoro is to break down your work into focused bursts, called &quot;Pomodoros&quot; (which is Italian for &quot;tomato&quot;, which rolls into how the entire system started). You work on a single task for 25 minutes, and then take a 5 minute break. After you work 4 or 5 Pomodoros, take a 20 minute break or so. Taking this approach allows you to break down your work into very simple, and focused tasks. Ideally, it shouldn&apos;t take you longer than 3 or 4 Pomodoros to accomplish a task. If it does, you should break down your task into substeps. For example, the &quot;Add new feature X&quot; type task can be broken down into &quot;Create DB columns for feature X&quot;, &quot;Add view/read code for feature X&quot;, &quot;Add edit/delete code for feature X&quot;, etc. This helps you avoid the distractions of the other steps that sometimes slow down your overall productivity. After each Pomodoro is completed, you mark whether or not it was successful, or if there were interruptions during the period. These interruptions can be external (so and so called and I had to discuss a bug fix) or internal (I wound up browsing Facebook for a while). Ideally, when you complete a task, or even a project, you can analyze the pomodoro sessions and look for ways to improve your focus. Having the short breaks frequently gives you the necessary gaps to check Facebook, and also serves as a motivator for when you jump into your next session to stay focused.&lt;/p&gt;
&lt;p&gt;How has the Pomodoro Technique worked for me? So far I like it, but I&apos;ve been highly unsuccessful. Maybe it is my own focus issues, maybe it&apos;s the shifts that have occurred a lot lately in project priorities, but I haven&apos;t had too many &quot;successful&quot; Pomodoros. That&apos;s not to say I&apos;m not getting work done, I still am doing that, but I&apos;m far from a &quot;pure&quot; Pomodorist yet (I wonder if that&apos;s a word). And then there are times where working from home has it&apos;s own interruptions as well. I&apos;m still breaking myself of my old habits as well. I think for myself one of my big hangups is the &quot;switchy&quot; problem of slinging some code, going to check a download, checking a status update, typing part of a blog, etc. I think as I continue to use the Pomodoro technique that this will improve even more, I&apos;ve only been using this for a couple of weeks and even then I have to remind myself to setup a task and start the timer. On the whole I think Pomodoro fits well with the whole agile methodology mindset. Work is broken down into small, manageable tasks, which helps in a very simplistic &quot;get things done&quot; type mindset. It also helps break thinks down into units that could be handled by other people as well. It also helps you if you need to change gears. Let&apos;s say you do get that e-mail about having to update something on the other project. Instead of dropping everything right there, losing valuable dev time and mental energy used on the project, finish off your Pomodoro and then get to work on that task. You&apos;ll be able to shift gears without having the other project nagging in the back of your head, and I&apos;m sure if you told your boss you&apos;ll be getting a jump on that within the hour, they won&apos;t complain. Measuring Pomodoros can also help you estimate future work to be done.&lt;/p&gt;
&lt;p&gt;So what tools am I using for my Pomodoro use? The original way was to use a simple piece of paper and a pencil. Outline which tasks you were to do for the day, then pick one, start your timer, and go. You&apos;d mark down successful or interrupted pomodoros as you went. However, doing work on my computer all day, having some digital resources at your fingertips works best for me. Ideally I would LOVE to have a combined Kanban/Pomodoro tool to get my work done. As it turns out, there is one, it&apos;s called &lt;a href=&quot;http://kanbanflow.com&quot;&gt;Kanban Flow&lt;/a&gt;. Kanban Flow is a nicely developed Kanban board that has the option to track Pomodoros as well:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-kanbanflowscreenshot.png&quot; alt=&quot;Kanban Flow Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;However, at this point I don&apos;t think the Pomodoro aspect of the appliation is a first class citizen. I keep popping back and forth into the app to try things out, but one major thing for me are the audio cues and some kind of alarm that goes off at the end of the Pomodoro. That would be a huge help. The app is still in beta, so I&apos;m sure I&apos;ll be looking at them again soon.&lt;/p&gt;
&lt;p&gt;An honorable mentions go out to &lt;a href=&quot;http://orkanizer.com&quot;&gt;Orkanizer&lt;/a&gt;, which is still in beta and shows some promise as well. However, it was just a little bit &quot;too beta&quot; for me to be effective. Sometimes notifications would work, sometimes they wouldn&apos;t.&lt;/p&gt;
&lt;p&gt;Eventually I stumbled upon &lt;a href=&quot;http://pomodorocrate.com&quot;&gt;Pomodoro Crate&lt;/a&gt;. This is a fully featured Pomodoro App that runs on in the browser. It allows me to organize my activities into projects (very helpful) it gives you a nice large timer that also gives you audio cues at various minute marks in the Pomodoro. It also has a quick button to do your short and long breaks. I haven&apos;t started looking into the analysis tools yet, but with Crate, I was able to get up and running in minutes AND be able to functionally accomplish some Pomodoros at the same time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-03-pomodorocreatescreenshot.jpg&quot; alt=&quot;Pomodoro Crate Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sure there&apos;s no Kanban integration with Crate, but that&apos;s okay. Between &lt;a href=&quot;http://trello.com&quot;&gt;Trello&lt;/a&gt; and &lt;a href=&quot;http://pomodorocrate.com&quot;&gt;Pomodoro Crate&lt;/a&gt;, I have a HIGHLY functional task tracking and work management environment that goes wherever I am working. I&apos;ll admit I&apos;m still fine tuning my pomodoro life, but I think it will be quite beneficial to me moving forward. And I&apos;m sure I&apos;ll figure out how to write a widget or plugin that will create Trello cards as Pomodoro Tasks for me as well 8^D&lt;/p&gt;
&lt;p&gt;Any Pomodoro users out there? I&apos;m still looking for any tips or tricks, and I&apos;m still in the hunt for tools and would love any insights you have. If you&apos;re just starting out with Pomodoro like me, drop me a line too, I&apos;d love to see how it&apos;s going for you.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week The Houseplant Song By Audio Adrenaline</title><link>https://dillieo.me/posts/development/2012-03-02-song-of-the-week-the-houseplant-song-by-audio-adrenaline/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-03-02-song-of-the-week-the-houseplant-song-by-audio-adrenaline/</guid><description>House Plant</description><pubDate>Fri, 02 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;re going to take a quirky angle this week and listen to one of the &quot;other&quot; songs by my favorite band: Audio Adrenaline&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Set on the stage of the fictitious radio show, Smooth Steve of the show &quot;Java the Hutt&quot; is in the audience to listen to a song about the so called interent evils of Rock and Roll. Yeah, it&apos;s fun, and one of these days I&apos;m going to get me a &quot;skinny boy decaf latte no foam&quot;...&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_751748&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(If the player doesn&apos;t work, grab it directly &lt;a href=&quot;https://www.sugarsync.com/pf/D6057691_8153298_751748&quot;&gt;here&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>Physics</title><link>https://dillieo.me/posts/growth/2012-02-29-physics/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-29-physics/</guid><description>Physics</description><pubDate>Wed, 29 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Physics is experience, arranged in an economical order.&lt;/p&gt;
&lt;p&gt;Physics is experience, arranged in an economical order.&lt;/p&gt;
</content:encoded></item><item><title>Streaming Video Isnt As Easy As You Think</title><link>https://dillieo.me/posts/development/2012-02-27-streaming-video-isnt-as-easy-as-you-think/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-02-27-streaming-video-isnt-as-easy-as-you-think/</guid><description>Codec Confusion</description><pubDate>Mon, 27 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week I was working on a video streaming solution that would work on mobile devices as well as browsers. With all the amazing new technology we have these days, you would think that this would be pretty straightforward. Sadly it isn&apos;t there yet.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The streaming solution in place already was using standard Flash encoded videos and a Flash player, which allowed for a custom &quot;skinned&quot; control bar, logos, and video ads to be displayed. Given that nearly every computer out there has Flash installed, this works just fine for both our on demand and live streams.&lt;/p&gt;
&lt;p&gt;However, when we get into the mobile space, things really start getting crazy.&lt;/p&gt;
&lt;p&gt;For starters, as most people already know, Apple decided that it wasn&apos;t going to support Flash in it&apos;s iOS, but it would support the new HTML5 &amp;lt;video&amp;gt; tag. This means you can use H.264 encoded videos, with the video tag, and Apple will kick up it&apos;s own video player to play the video. I also discovered that while iOS is supposed to support H.264 videos that have MP3 audio encoding within them, this doesn&apos;t appear to work for on demand video or live streaming video. You have to encode your video using the AAC audio format or it won&apos;t work (having tested on an iPad Simulator, iPhone Simulator (both running iOS 5.0) and on my 4th Generation iPod Touch (running iOS 5.0.1)). If you&apos;re using the free Adobe Flash Media Live Encoder application, you get AAC out of the box. If you&apos;re running a PC (which the broadcasters are), then you need to drop $180 a pop for a license.&lt;/p&gt;
&lt;p&gt;Next come Android. It&apos;s not necessarily as bad, I&apos;ve seen both AAC and MP3 encoded video streams work on my HTC Thunderbolt. However, tests with both a Galaxy Tab emulator (Android 2.2) and a Motorola Xoom emulator (Android 3.0) don&apos;t like either version of the video. I also snuck a peek at the video on a borrowed Kindle Fire with no luck. I&apos;ll admit I think my Thunderbolt is actually running Flash instead, so the browser must be detecting that instead of doing the HTML5 fallback. So there&apos;s a good chance that would fail too. According to documentation, Android devices prefer the RTSP protocol, which is different than RTMP (Flash&apos;s primary).&lt;/p&gt;
&lt;p&gt;I never did make it to Windows 7 mobile devices, and that&apos;s another story in itself I&apos;m sure. Oh, and there&apos;s another video standard called WebM slowly creeping out for &amp;lt;video&amp;gt; tag support as well, but only some browsers support that as well.&lt;/p&gt;
&lt;p&gt;Oh, another helpful feature is to have a better QoS (quality of service) of your streams by detecting what kind of &quot;pipe&quot; they&apos;re running on (nice super fast broadband at home vs. simple mobile phone 3G Internet) and tailor the video size/quality to meet the needs accordingly. You don&apos;t want to shove HD down the face of a mobile phone out in the boonies, because it&apos;ll get maybe a few frames and nothing else. VERY aggravating for them.&lt;/p&gt;
&lt;p&gt;So what turned out to be a simple two day &quot;update the video player so that it will handle mobile devices&quot; type task turned into a crazy 3 and a half day testing/debugging/implementing type task that didn&apos;t reach completion. Just when you had a solution up, you found that it didn&apos;t work on one protocol or platform, and the fix to it broke the other protocol/platform. Sometimes that is just the way tech works, especially with newer technologies and companies that like to play by their own rules.&lt;/p&gt;
&lt;p&gt;That said, there&apos;s a concept out there that looks very promising, called &quot;transcoding&quot;. It does all the heavy lifting for you. You upload your video in whatever format you want, and it will to the proper conversion to whatever format/encoding/protocol/bandwidth you need for your client. In our case this required an additional module to be purchased for the streaming server, so we&apos;re looking into it now and we&apos;ll see if this can eliminate a lot of headaches.&lt;/p&gt;
&lt;p&gt;Just in case you&apos;re stuck in the middle of video streaming to the masses, here are a few links that have proved helpful for me along the way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html#//apple_ref/doc/uid/TP40008332-CH103-SW1&quot;&gt;iOS Live Streaming Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.longtailvideo.com/support/blog/19578/what-is-video-streaming&quot;&gt;Video Streaming Overview&lt;/a&gt; (helps identify the various platforms and their support)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wowza.com/forums/&quot;&gt;Wowza Support Forums&lt;/a&gt; (this is the media server we&apos;re running, but there are some cross posts to other players/plugins that helped)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.longtailvideo.com/players/&quot;&gt;JW Player&lt;/a&gt; (the media player we&apos;re using currently)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mediaelementjs.com/&quot;&gt;Media Element JS&lt;/a&gt; (another media player I&apos;ve looked at in the past and does a great job and handling this confusion)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you find anything additional, don&apos;t hesitate to leave a comment and let me know.&lt;/p&gt;
</content:encoded></item><item><title>Believing That Vs Believing In</title><link>https://dillieo.me/posts/growth/2012-02-22-believing-that-vs-believing-in/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-22-believing-that-vs-believing-in/</guid><description>Believing That Vs Believing In</description><pubDate>Wed, 22 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;To believe &lt;strong&gt;THAT&lt;/strong&gt; God is one can be a mere intellectual assertion. To believe &lt;strong&gt;&quot;IN&quot;&lt;/strong&gt; God requires personal trust. . . . Saving faith includes cognitive knowledge but goes beyond it to personal trust and submission&lt;/p&gt;
&lt;p&gt;~R.C. Sproul (emphasis mine)&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Duel Of The Fates Star Wars Episode 1</title><link>https://dillieo.me/posts/development/2012-02-17-song-of-the-week-duel-of-the-fates-star-wars-episode-1/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-02-17-song-of-the-week-duel-of-the-fates-star-wars-episode-1/</guid><description>Jedi Duel</description><pubDate>Fri, 17 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In honor of seeing Star Wars Episode 1 in 3D last night, I thought it would be fitting to put in one of my favorite songs from the soundtracks!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;John Williams is spectacular. He&apos;s done so much amazing soundtrack work, from Jaws, to the original Star Wars, to Indiana Jones, to Harry Potter, the list goes on and on. I was really excited when I first heard that Williams had been brought back to do the soundtrack for Episode 1, a good 15 years after he closed up shop with Return of the Jedi. One of the really unique things that Williams brought back this time was the use of vocals in his track to depict the epic duel between Qui-Gon Jinn, Obi-Wan Kenobi, and Darth Maul. It captures everything perfectly, and adds a sense of intensity and grandeur (not delusional 8^D) to the scenes.&lt;/p&gt;
&lt;p&gt;Sit back, wave around that lightsaber, and Enjoy!&lt;/p&gt;
&lt;p&gt;http://www.blueharvest.net/sound/songs/duel_fates.mp3&lt;/p&gt;
</content:encoded></item><item><title>Parenting And Strangers</title><link>https://dillieo.me/posts/growth/2012-02-15-parenting-and-strangers/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-15-parenting-and-strangers/</guid><description>Parent Child Sign</description><pubDate>Wed, 15 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being a parent has some really gray areas at times. Such as strangers...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I grew up in a small town. So much so that I invited my 6th grade teacher to my wedding (yes, I kept in touch with her, and her husband who was my high school counselor, after a mere year in school). Living in a small town like that granted you a lot of freedoms. When I was 12 or so, I would ride my bike about 2.5 miles by myself, or with a friend, to the local baseball card shop to get some new packs or trade some singles. The donut store was right next door, so we&apos;d get a donut and play a few video games. I met a lot of new people this way, mainly older folks, and had a few interesting conversations. If you said &quot;Hi&quot; to somebody in the parking lot, sometimes you could wind up chatting with them for a while. It was just the way things were. Sure there were strangers that you had to stay away from, but often enough they were the ones that matched the stereotype of having shifty eyes, talked to you weird, and generally gave off a bad vibe.&lt;/p&gt;
&lt;p&gt;Nowadays, things are drastically different. I live in a different small town, and overall people are quite friendly. However, we make sure our twin girls (both 5) stay away from everybody, except for the proper authorities, like teachers at their school, policemen, and firemen, etc. We live next to a trailhead, so there are a wide variety of people that will walk by any given morning, some with dogs, some without. They all look quite friendly, and we&apos;ve talked to a few and allow the girls to say hi to them. But by in large, we have to tell our girls to stay away from the fence when people walk by. We just don&apos;t know who is going to take them away.&lt;/p&gt;
&lt;p&gt;It&apos;s sad. They really want to meet new people. I really want them to meet new people. There&apos;s a wealth of wisdom and experience out there that I simply don&apos;t have, and meeting new people and hearing their stories is wonderful. But what do you do?! I try to get down there when new people are coming by to say hello and help introduce myself and the girls, but I can&apos;t always make it down there. So I tell them to stay away. Don&apos;t talk to strangers. Stay away because our world has become loaded with lots of dangerous people who want to harm you. Stay away from potentially amazing stores about places you or daddy have never been to before. Maybe they&apos;re just too young still. Maybe people are just that more untrustworthy.&lt;/p&gt;
&lt;p&gt;[:: sigh ::] What do you do?&lt;/p&gt;
</content:encoded></item><item><title>The Moon</title><link>https://dillieo.me/posts/growth/2012-02-15-the-moon/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-15-the-moon/</guid><description>The Moon</description><pubDate>Wed, 15 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The moon isn&apos;t waxing, it&apos;s dusting and vacuuming rugs.&lt;/p&gt;
&lt;p&gt;The moon isn&apos;t waxing, it&apos;s dusting and vacuuming rugs.&lt;/p&gt;
</content:encoded></item><item><title>Hardware And Software</title><link>https://dillieo.me/posts/growth/2012-02-14-hardware-and-software/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-14-hardware-and-software/</guid><description>Hardware And Software</description><pubDate>Tue, 14 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hardware: This you kick. Software: This you corrupt.&lt;/p&gt;
&lt;p&gt;Hardware: This you kick. Software: This you corrupt.&lt;/p&gt;
</content:encoded></item><item><title>Tangled</title><link>https://dillieo.me/posts/growth/2012-02-14-tangled/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-14-tangled/</guid><description>Tangled</description><pubDate>Tue, 14 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Oh, what a tangled web we weave&lt;/p&gt;
&lt;p&gt;~Hair Club For Men.&lt;/p&gt;
</content:encoded></item><item><title>Hello Trello My Fine Fellow</title><link>https://dillieo.me/posts/growth/2012-02-10-hello-trello-my-fine-fellow/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-02-10-hello-trello-my-fine-fellow/</guid><description>Trello Logo</description><pubDate>Fri, 10 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week you may remember my &lt;a href=&quot;/cloud-life-5-free-tools-to-get-what-you-need-whenever-and-wherever-you-need-it&quot;&gt;article from last week&lt;/a&gt; outlining the cloud tools I use to make my life easier hopping around from Mac to PC to Android all on the road. I have one more to add to the mix, which I stumbled upon only a few weeks ago: &lt;a href=&quot;http://trello.com&quot;&gt;Trello&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Quite simply, and I think they mentioned this in a podcast or on their blog, Trello helps you organize a &quot;list of lists&quot;. That&apos;s it. Really. However, the power and the flexibility of these lists applies to SO many different things.&lt;/p&gt;
&lt;p&gt;Let&apos;s say we&apos;re organizing a LAN party. In Trello, we have a &quot;board&quot; called a LAN Party. There&apos;s several aspects that need to be handled for the LAN party: inviting guests, getting food, schedule planning, computer setup. Each one of items is called a &quot;List&quot;. On the list we have various activities that need to be done, such as planning activities, setting up sofware, etc. All of these items are called &quot;cards&quot; in Trello. Just like that, we have a full Trello board. Want to see it?! Here you go!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-02-trellolanboard.png&quot; alt=&quot;Trello LAN Board&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Better yet, you can make board public to share with everybody, or private to share with friends. Here, check out my board and do what you need to!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://trello.com/board/lan-party/4f344e4db7f238d04300b554&quot;&gt;https://trello.com/board/lan-party/4f344e4db7f238d04300b554&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From here, Trello gets even more simple, you can simply drag a card to and from various lists. You can assign cards to certain people to work on, and their name (and avatar) will show up on the card. You can use labels and due dates as well in order to provide visualization of important items. You can even add a checklist to a card, which is quite helpful.&lt;/p&gt;
&lt;p&gt;Oh yeah, and my &lt;a href=&quot;/personal-kanban-3-weeks-in&quot;&gt;Personal Kanban board&lt;/a&gt;? Done.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-02-trellokanbanboard.png&quot; alt=&quot;Trello Kanban Board&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://trello.com/board/personal-kanban-sample/4f35473e6468d63459011e7b&quot;&gt;https://trello.com/board/personal-kanban-sample/4f35473e6468d63459011e7b&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To help keep things &quot;mobile&quot; across my various platforms, Trello is optimized for mobile devices as well, with no installation necessary. There&apos;s also an iPhone app out for it as well, if you want to go for that. Now my &quot;work list&quot; can go wherever I need it to! Trello is also 100% free. There is talk about having some premium features added later. But for me, having a free personal Kanban tool that I can setup multiple boards with is perfect!&lt;/p&gt;
&lt;p&gt;I think the thing that is so impressive about Trello is how quick and simple it is to get up and running. At the same time it is very feature rich and powerful. I signed up for an account (by uisng my Google account, saving an extra step) and had my project boards up and running in less than 5 minutes. Then as I&apos;ve been working with Trello more, I find more and more wonderful features, such as moving a card to a completely different board, which happens when a ticket is created and should be with something else. I&apos;m sure I&apos;m going to discover a whole heap of other features as well.&lt;/p&gt;
&lt;p&gt;So go meet &lt;a href=&quot;http://trello.com&quot;&gt;Trello&lt;/a&gt;! You won&apos;t be disappointed at all!&lt;/p&gt;
</content:encoded></item><item><title>Where Does The Web Application Admin Fit In</title><link>https://dillieo.me/posts/development/2012-02-08-where-does-the-web-application-admin-fit-in/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-02-08-where-does-the-web-application-admin-fit-in/</guid><description>Web Admin</description><pubDate>Wed, 08 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Managing &quot;web sites&quot;, especially through IIS, can be an interesting trip down through the ranks of computers and politics.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;As a developer, the typical lifecycle for a new website goes something like this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create Virtual Directory in IIS with proper settings&lt;/li&gt;
&lt;li&gt;Copy files up to virtual directory.&lt;/li&gt;
&lt;li&gt;Run Site.&lt;/li&gt;
&lt;li&gt;Make changes to files locally.&lt;/li&gt;
&lt;li&gt;Push changes up to site.&lt;/li&gt;
&lt;li&gt;Make changes to virtual directory settings as needed.&lt;/li&gt;
&lt;li&gt;Repeat 4-6 as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This all seems pretty straightforward, except for the fact that in most circumstances, the site configuration and file uploads are handled by a server administrator. They are responsible for what files stay on their server and what interacts with it. Some server admins don&apos;t mind developers tossing files around and doing a few minor configuration changes. Others mind a LOT, and require a ticket or an e-mail in order to push things up.&lt;/p&gt;
&lt;p&gt;The problem arises when changes need to be done rapidly, and the server admin is swamped. Generally speaking file migrations become a low priority, so you can be stuck waiting for a while, for a pretty simply process. At other times it&apos;s due to some of the expertise needed to run IIS. I&apos;ve had a few configuration changes I&apos;ve needed (such as application pools or .Net versions within the application), and when e-mailing the admin about it, the response has been that they don&apos;t know what I was talking about, and I walked them through the process.&lt;/p&gt;
&lt;p&gt;What to do?! I asked this question a while back in &lt;a href=&quot;http://serverfault.com/questions/1191/who-is-responsible-for-maintaining-iis-for-web-apps&quot;&gt;ServerFault&lt;/a&gt;, and I think the response is still in the middle. How do you handle it?&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Chicken And Sausage With Sage And Onion</title><link>https://dillieo.me/posts/development/2012-01-31-worth-sharing-chicken-and-sausage-with-sage-and-onion/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-31-worth-sharing-chicken-and-sausage-with-sage-and-onion/</guid><description>Chicken Sausage Recipe</description><pubDate>Tue, 31 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I modified this recipe slightly from it&apos;s &lt;a href=&quot;http://www.foodnetwork.com/recipes/nigella-lawson/one-pan-sage-and-onion-chicken-and-sausage-recipe/index.html&quot;&gt;original&lt;/a&gt;, but it was so amazing I should have made a double batch. The recipe is extremely simple, and the way the flavors all blend together at the end will make you coming back for more.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ingredients&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 Large Onion&lt;/li&gt;
&lt;li&gt;1/2 c Grape Seed Oil (or olive oil)&lt;/li&gt;
&lt;li&gt;3 heaping tsp course grainy mustard (or deli mustard)&lt;/li&gt;
&lt;li&gt;1 tsp dried sage&lt;/li&gt;
&lt;li&gt;Ground Pepper&lt;/li&gt;
&lt;li&gt;1 tbsp Worcestershire Sauce&lt;/li&gt;
&lt;li&gt;1 lemon&lt;/li&gt;
&lt;li&gt;10 pieces Raw Chicken Tenders/Strips&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Directions&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cut the onion into eighths and put it in a freezer bag, or dish to marinade.&lt;/li&gt;
&lt;li&gt;Add the oil, mustard, dried sage, a healthy dash of pepper to the marinade.&lt;/li&gt;
&lt;li&gt;Cut the lemon in half, and squeeze the juice into the marinade. Then cut the lemon into eighths and toss them in to the marinade.&lt;/li&gt;
&lt;li&gt;Add the chicken and mix everything together well. Let the chicken soak for a minimum of 30 minutes, but going overnight really adds to the flavor.&lt;/li&gt;
&lt;li&gt;When you&apos;re ready to cook, preheat the oven to 425 degrees F. If the chicken has been marinating for a couple of hours, let the chicken come to room temperature before baking.&lt;/li&gt;
&lt;li&gt;In a 9x13 casserole dish, add the entire ingredients of the marinade and chicken. Take the sausage and frame it around the edge of the casserole dish.&lt;/li&gt;
&lt;li&gt;Cover the baking dish with foil.&lt;/li&gt;
&lt;li&gt;Bake for 1 hour and 15 minutes. Half way through you will want to turn the sausage over for even cooking.&lt;/li&gt;
&lt;li&gt;Take the casserole dish out of the oven and open one end of the foil to help it cool, but don&apos;t let all of the steam escape.&lt;/li&gt;
&lt;li&gt;Try not to eat it all at once.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What I love about this recipe is the slight tanginess of the mustard and lemon combined with the very earthy taste of the sage and pepper. The Worcestershire sauce adds a richness to everything. The fat from the sausage soaks into everything, and the onions take on almost a buttery like taste. I typically cut the sausage into smaller circles, and mix it all together on my plate, making sure to get a taste of everything in one bite. Using the chicken tenders saves a bit of prep time, and makes for some perfect serving portions. Again, you just may have to double this recipe, it fed 5 of us, all wanting more. Oh, just keep an eye out for the lemons, they&apos;ll look a lot like the onion after the baking, but they still don&apos;t taste that great. 8^D&lt;/p&gt;
&lt;p&gt;Enjoy and let me know if you try it out! I think I&apos;m going to make some more.... and it is breakfast time as I&apos;m writing this!&lt;/p&gt;
</content:encoded></item><item><title>Cloud Life 5 Free Tools To Get What You Need Whenever And Wherever You Need It</title><link>https://dillieo.me/posts/development/2012-01-30-cloud-life-5-free-tools-to-get-what-you-need-whenever-and-wherever-you-need-it/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-30-cloud-life-5-free-tools-to-get-what-you-need-whenever-and-wherever-you-need-it/</guid><description>Cloud Apps</description><pubDate>Mon, 30 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been at my new job for a little more than 6 months now. With my various projects and clients, you can call me Mac toting, dual booting, .Net slinging, PHP wrangling, MVC hacking, Ruby learning, Android packing, Kindle browsing, iPhone testing, amateur blogging kind of geek. Whew! With all that said, I need a way to easily keep dibs on my files, music, pictures, and other miscellaneous things without having to install a million different programs. I also want to have a consistent set of programs between my Mac, PC, and Android so that I don&apos;t have to &quot;move&quot; my data from one program to the other. Here are five free (no credit card necessary!) tools I&apos;ve found that has helped me master my cloud life.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;1. File Sharing: &lt;a href=&quot;https://www.sugarsync.com/referral?rf=ehmp6mbzv6afb&amp;amp;utm_source=txemail&amp;amp;utm_medium=email&amp;amp;utm_campaign=referral&quot;&gt;SugarSync&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-01-sugarsync-logo.jpg&quot; alt=&quot;SugarSync Logo&quot; /&gt;SugarSync is my new digital best friend. Like DropBox, or even iCloud, SugarSync is an online file storage service. After you install SugarSync, you have a folder called the &quot;Magic Briefcase&quot; where any file you drop in there is automatically synchronized up to your account in the cloud (their server). From there, anywhere you have SugarSync installed, your files will be available to you. So if I&apos;m doing some work on my PC partition and need those files on my Mac partition, I simply copy them over to my Magic Briefcase, and when I reboot their right there for me. It&apos;s magic!&lt;/p&gt;
&lt;p&gt;But even better than this is the way you can easily share a file or a folder with others. For example, I have a &quot;blog files&quot; folder that I use for my various coding and song of the week posts. I simply copy the file into that folder, right click on it, and select the &quot;Get Public Link&quot; option and I can now share the file with anybody I want through the link. The user doesn&apos;t even need to have a copy of SugarSync installed. You can also share entire folders with users. We had a family gathering during the summer, and lots of pictures were taken by two or three of us. While I was down there, I went ahead and created a new folder in my magic briefcase, and then selected the option to share the entire folder with certain users. I put in their e-mail addresses and that was it. Some of the family simply logged in and downloaded pictures, a couple of them setup their own SugarSync account, which tied into the folder, so they could upload their pictures to share as well. All very quick and easy!&lt;/p&gt;
&lt;p&gt;The mobile client is great as well. There is both an Android and iPhone version of the app, and I believe the iPhone app has special iPad optimizations as well. In addition to providing access to the files in your cloud account, SugarSync goes one step further by auto creating a photo viewing app for any photos in your cloud, and it will automatically stream down any music files you have as well. You don&apos;t have to worry if your photos or music are scattered, as long as they are somewhere within you cloud account, SugarSync will find it and make it available to you. The mobile versions of the app also have an &quot;auto-sync&quot; feature to use with your camera. Everytime you take a picture, SugarSync can automatically put it into your cloud for retrieval elsewhere. At first I was a little leery about this feature, but now I&apos;ve really come to enjoy it. I like to take a lot of &quot;on the fly&quot; pictures of family and random events for my &lt;a href=&quot;https://instagram.com/dillieo&quot;&gt;other blog&lt;/a&gt;, and having a backup of these images in full resolution is great. Every so often I simply go in and remove all the bad photos.&lt;/p&gt;
&lt;p&gt;SugarSync really is fabulous. I HIGHLY recommend it. You also get 5GB for free, and you can get an additional 500MB if you get others to sign up, or use my &lt;a href=&quot;https://www.sugarsync.com/referral?rf=ehmp6mbzv6afb&amp;amp;utm_source=txemail&amp;amp;utm_medium=email&amp;amp;utm_campaign=referral&quot;&gt;reference link&lt;/a&gt;. Seriously, give it a try! You won&apos;t be disappointed.&lt;/p&gt;
&lt;h2&gt;2. Note Taking: &lt;a href=&quot;http://evernote.com&quot;&gt;Evernote&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-01-evernote-logo.jpg&quot; alt=&quot;Evernote Logo&quot; title=&quot;Evernote Logo&quot; /&gt;I wasn&apos;t sure I&apos;d ever have a need for a digital notebook. For the longest time I simply had a sticky note program that ran on my desktop and everything was fabulous. Then one day I was taking some notes for stuff to do at home, and realized I forgot to e-mail myself those notes before I left for the day. After that, I started giving Evernote a whirl. At first it was just a few small things: a shopping list, a convenient code snippet, or maybe a deck idea for L5R.&lt;/p&gt;
&lt;p&gt;But once I started using notebooks within &lt;a href=&quot;http://evernote.com&quot;&gt;Evernote&lt;/a&gt;, things started to explode. I have a notebook for my &quot;Geek Tricks&quot;, those SQL snippets that I might need when using my Mac partition in MySQL or on my Windows partition in SQL Server. I have a work notebook. I have a general notebook for life stuff. I even have a &quot;scraps&quot; notebook which is what I use in place of &quot;stickies&quot; and periodically get flushed out. I also recently discovered that you can encrypt portions of text (instead of the entire note) with a password. This makes Evernote a very handy tool for saving passwords and logins and still preventing people from access it.&lt;/p&gt;
&lt;p&gt;Evernote is continuing to do bigger and better things with itself, while still staying true to its original idea. For instance, they recently bought the web annotation program Skitch, and is embedding into its application. What this means is that within Evernote you can take a screenshot of a website, do your own markup to it to highlight a section or move things around. And then save that note for future use, or sharing with others. I honestly haven&apos;t begun to scratch the surface on what Evernote can do for the advanced note taker, but even for my simple needs it does wonders.&lt;/p&gt;
&lt;p&gt;Another thing to mention is that their mobile app exists for Android and iPhone and is also very powerful. It will let you take &quot;snapshot notes&quot; using you camera. The app is also very well laid out with easy access to your notes, either though notebook, tag, or even just browsing them all. You can edit your notes through the mobile app, and they&apos;ll be waiting for you on your computer when you get home. If you use the note sharing feature, you also have a quick and easy way to synchronize the shopping list with anybody you need.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://evernote.com&quot;&gt;Evernote&lt;/a&gt; focuses on doing one thing (organizing your notes) and does it VERY well. With its availability on all major platforms, it&apos;s the perfect tool for keeping those important notes.&lt;/p&gt;
&lt;h2&gt;3. Music: &lt;a href=&quot;http://spotify.com&quot;&gt;Spotify&lt;/a&gt; / &lt;a href=&quot;http://getsongbird.com/&quot;&gt;Songbird&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-01-spotify-logo.jpg&quot; alt=&quot;Spotify Logo&quot; title=&quot;Spotify Logo&quot; /&gt;While my music collection used to be large rather large (in my opinion), my budget has kept me from buying a lot of new music over the past few years. In addition, I&apos;ve turned to a few online music stations, such as &lt;a href=&quot;http://di.fm&quot;&gt;Digitally Imported&lt;/a&gt; and &lt;a href=&quot;http://soma.fm&quot;&gt;Soma.fm&lt;/a&gt; to fill a lot of needs. However, some of my favorite artists are still pumping out new albums, and I&apos;d love to give a listen to them, before actually going and buying them. Sure I could go online and do the download route, but I&apos;ve decided to drop that habit a while back.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;http://spotify.com&quot;&gt;Spotify&lt;/a&gt;. They are an online music service that gives you access to a HUGE library of music for free. Even some of the more &quot;eclectic&quot; needs (Dr. Demento) are available online. They are continuing to add more albums each day. What is REALLY nice is that when you search for an artist or album, you can also see similar artists to the one you like. From here you can get an adhoc &quot;radio station&quot; based on the artist in question. This a lot of what Pandora does for you. With Spotify you can get the best of both worlds. You can get a specific album, build your own custom playlists, or just simply kick up a radio station with similar interests. Spotify fill will also find the music you have saved on your computer and add it to the library. That way you have one place to listen to your music while working at home.&lt;/p&gt;
&lt;p&gt;Spotify also integrates tightly with Facebook. You&apos;ll find that once you start listening to music, it&apos;ll start posting to Facebook about what you&apos;re listening to. They can even click the wall post to listen to the song as well. Your Facebook friends that have Spotify installed will also show up in a list within the Spotify app. You can see what playlists they&apos;ve generated and maybe find some new music to enjoy. I&apos;ve been the giver and the receiver of this kind of sharing. Depending on how you feel about it, Spotify might be TOO integrated with Facebook. While the initial registration was via e-mail, now you must register with your Facebook account to begin with. In addition, you have to take an extra step if you want your music listening experience to be &quot;private&quot; from sharing on Facebook. This hasn&apos;t been a big concern for me, but I know for others it is.&lt;/p&gt;
&lt;p&gt;The free version of Spotify gives you unlimited access to your music. There are occasional commercials and ad banners that show up in the application, but I have mine minimized most of the time, so I don&apos;t see them. It&apos;s really no different for me than listening to the radio. The free version does not offer mobile access to the online collection. That&apos;s where the paid plans come in. I don&apos;t really miss that, since I can listen to my purchased music on my Android (see #4), but the offline synchronization feature is nice. Spotify will also allow you to download your purchased music and listen to it through their mobile app, but the Wifi synchronization was a little tedious for me and I like other options (see #4).&lt;/p&gt;
&lt;p&gt;All in all &lt;a href=&quot;http://spotify.com&quot;&gt;Spotify&lt;/a&gt; provides a great way to get a nearly limitless source of music. The quality is good, and you&apos;ll discover some new music along the way!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-01-songbird-logo.png&quot; alt=&quot;Songbird Logo&quot; /&gt;It may seem odd to consider an offline music program a &quot;cloud tool&quot; but hey, I like music. When I&apos;m on the drive, I have a few CDs in the car, but I also want to be able to listen to some of my classics. Even more pertinent is during Christmas time. &lt;a href=&quot;/christmas-music-time&quot;&gt;I love Christmas music&lt;/a&gt;, and being able have a nice shuffle of it anytime, anywhere, just adds to the festivity. Originally I had iTunes on my iPod Touch, and there was the built in music player for my Android, but I had to jump back and forth between programs and have different management tools to make it all work. I even tried the Spotify app, but the local synchronization over Wifi took a long time. On top of that, I wasn&apos;t able to easily pull out a genre or an album to listen to, since the search was essentially one big filter.&lt;/p&gt;
&lt;p&gt;Then I stumbled upon Songbird. I should say I re-stumbled upon Songbird. Songbird is a great free audio player that has lots of plugins and extensions. I&apos;m only using Songbird with a &quot;vanilla&quot; install, but it easily allows me to find specific genre&apos;s in my music, create mixes, and even store play lists for the streaming sites I listen to. I can view the artist info, and even have a handy mini player that sits up at the top of the screen. I can also plug in my Android and sync my entire library over in a short amount of time.&lt;/p&gt;
&lt;p&gt;But most importantly, Songbird runs on PC and Mac, which gives me a consistent look at feel, and a consistent manner in playing my music. If I had enough space, I could put all my music into &lt;a href=&quot;https://www.sugarsync.com/referral?rf=ehmp6mbzv6afb&amp;amp;utm_source=txemail&amp;amp;utm_medium=email&amp;amp;utm_campaign=referral&quot;&gt;SugarSync &lt;/a&gt;and not even have to worry about which partition (Mac or PC) I was running on. The best part is that there is an Android app as well, which has the same look and feel as the desktop version. One thing I really like is that when my phone is locked and I press the power button, the typical unlock screen is replaced with a Songbird one, that allows me to quickly pause or go to the next song, showing the cover art. If I drag down on the cover art, I get full access to the phone again.&lt;/p&gt;
&lt;p&gt;While it may seem odd, having &lt;a href=&quot;http://getsongbird.com/&quot;&gt;Songbird&lt;/a&gt; has really made my offline music experience a lot easier. Sometimes it&apos;s those simple things, like access across multiple platforms, that make all the difference.&lt;/p&gt;
&lt;h2&gt;4. Blog / News Reading: &lt;a href=&quot;http://www.feedly.com/&quot;&gt;Feedly&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-01-feedly-logo.png&quot; alt=&quot;Feedly Logo&quot; title=&quot;Feedly Logo&quot; /&gt;Last up is blog and news reading. I may be considered a little old school, but I still find that RSS feeds are THE way to keep dibs on news and blogs from my friends. Sure there&apos;s the Twitter and Facebook streams, but if you miss it, then you&apos;re out of luck. Not to mention the large collection of sources I read from. Sure I can&apos;t get to all of them everyday, but not all of them post every day, so that balances things out. Everything from News, to Theology, to L5R CCG Updates, to Podcasts, to my friends blogs are all in my RSS stream, keeping me up to date. The general consensus is that feed readers are on the decline, as well as RSS in general, but with the plethora of blogs that spring up every day, I really don&apos;t think it&apos;s going anywhere. I think it is just the manner in which people want to read them is causing the challenge.&lt;/p&gt;
&lt;p&gt;Feedly provides a wonderful magazine style interface for reading you blogs. At first I was rather opposed to this approach, since I was more of a &quot;timeline&quot; style reader and always wanted the latest and greatest. However, my time is more limited these days, and with less time to sit down and read blogs, the magazine interface does a great job and hilighting the top posts (based on sharing and other factors) at the top of the page. It then gives me a brief rundown on the top articles in each category. The really nice thing is that each blog category can be customized into one of seven styles, so my LOL cats get a lovely &quot;tile&quot; layout, which the massive aggregate of geek articles and links is just in a simple list format. Feedly uses Google Reader as its data source. This means you&apos;re going to need a Google Reader account in order to use Feedly. However, Google Reader is free, it&apos;s well established, so you won&apos;t be losing your feeds anytime soon.&lt;/p&gt;
&lt;p&gt;Feedly provides numerous ways to share posts through Facebook, Twitter, Google+, etc. Feedly will also show your latest updates from your Facebook and Twitter streams on your &quot;main&quot; page, and Feedly even does some intelligent polling in Twitter based on the topic of your feeds. Feedly also allows you to tag some articles as a &quot;read later&quot; type article, so you don&apos;t have to go back through the archives later on.&lt;/p&gt;
&lt;p&gt;What I REALLY love though is the mobile apps they provide. In the past I was stuck not being able to catch up on news as soon as I was away from my computer. Now, with Feedly&apos;s mobile app (Android, iPhone, iPad, Tablet) I can catch up on stuff on the go. They do a great job and translating the reading experience to a smaller screen, and everything synchronizes back up to Google reader so I don&apos;t have to go back and mark stuff read again.&lt;/p&gt;
&lt;p&gt;If you&apos;re not an RSS subscriber for your blogs, give it a whirl, pick up a Google account (which can be useful for a lot of other things as well) and let &lt;a href=&quot;http://feedly.com&quot;&gt;Feedly&lt;/a&gt; start working for you. Check out the &quot;Explore&quot; option within Feedly to find new content. Then read it on your mobile device. You won&apos;t be disappointed.&lt;/p&gt;
&lt;h2&gt;5. Books: &lt;a href=&quot;http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000493771&quot;&gt;Kindle App&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2012-01-kindle-icon.png&quot; alt=&quot;Kindle App Icon&quot; title=&quot;Kindle App Icon&quot; /&gt;My wife owns a kindle, and I use it on occasion and love the experience. Digital books, in general, I think are a great thing. I&apos;ve been increasing my collection of programming reference guide type books, that is great to have on the run when I need to look up a quick CSS code or need to figure out how to program that Ruby language (still just starting that book). But the fact that I can carry them all around on a USB key (or better yet the cloud) is a huge lifesaver. This goes beyond reference material. The &lt;a href=&quot;http://biola.edu/academics/torrey/&quot;&gt;honors program&lt;/a&gt; that I graduated from offers a summer trip to Oxford, England. During that time, they do a lot of sight seeing, but also do a lot of intense reading and discussion of the classics. I don&apos;t know the exact numbers, but for the first couple of years the students were required to bring about a dozen books with them for these discussions. That&apos;s practically a suitcase on their own. Now as part of the tuition cost, you are given a Kindle, with all of the books loaded on it. No need to pack an extra suitcase! Plus, if that quote from Shakespeare is starting to remind you of a quote from Plato, then you can easily hop over to the other book and do a quick search.&lt;/p&gt;
&lt;p&gt;Amazon was smart. While they had their Kindle device, what they really kept in mind was the Amazon store and experience. To do, they created the Kindle App, and made it available on every platform imaginable. If you already have an iPad, great! Just download the Kindle app and get your books that way. Get it for your Android phone as well. Books can travel with you anywhere now, and are available with the click on a button. What&apos;s even nicer about the Kindle App is a thing they call &quot;WhisperSync&quot;. Here&apos;s how it works. Right now I&apos;m slowly working through GK Chesterton&apos;s &lt;em&gt;Orthodoxy&lt;/em&gt;. It&apos;s a great read, but it&apos;s a heavy read, and I&apos;m a slow reader already, in general. So I&apos;ll steal my wife&apos;s Kindle for an evening and get through a chapter or two. The following day, I&apos;m stuck at the DMV for an hour waiting for my number to be called. In the meantime, I fire up the Kindle App for the Android, and I have access online to the &quot;archive&quot; of books we&apos;ve purchased. Even better, the progress I&apos;ve made in each book is stored in the archive as well. So when I start it up on my Android, it asks me if I want to pick up where I left off. Very seamless and amazing.&lt;/p&gt;
&lt;p&gt;In addition to the online access and synchronization, most books you purchase for the Kindle App can be loaned out to other friends. You can take notes in your books, and even share them with others on line. With all of this, the digital book experience is very nice indeed. Plus with it&apos;s built in cloud, the books go wherever you need them to. The Kindle App will also allow you to import ePub and other book formats, so now all those programming books I talked about are available to use as well. I think my paper book days are numbered. I will admit that I have a very nice copy of &lt;a href=&quot;http://www.amazon.com/Lord-Rings-Collectors-J-R-R-Tolkien/dp/0395193958/ref=sr_1_1?ie=UTF8&amp;amp;qid=1327807979&amp;amp;sr=8-1&quot;&gt;The Lord of the Rings&lt;/a&gt; and &lt;a href=&quot;http://www.amazon.com/Hobbit-Collectors-J-R-R-Tolkien/dp/B0026EB5B6/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1327808515&amp;amp;sr=1-1&quot;&gt;The Hobbit&lt;/a&gt; that would beg to differ. 8^D&lt;/p&gt;
&lt;p&gt;If you want a book with you anytime, anywhere, you can&apos;t go wrong with the &lt;a href=&quot;http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000493771&quot;&gt;Kindle App&lt;/a&gt;. You don&apos;t even need the Kindle device itself to enjoy the great features of having a digital library at your fingertips and is synchronized between all the copies of your app.&lt;/p&gt;
&lt;h2&gt;Upgrades and Advice&lt;/h2&gt;
&lt;p&gt;I should mention that most of these apps work off the &quot;freemium&quot; model. They offer you a base set of features for free, and if you want to pay some money, you get some premium benefits. For instance, you can get a lot more storage through SugarSync if you pay a monthly fee. The same goes for Evernote. Spotify allows you to save your favorite music from their service offline onto your mobile device, as well as removing the ads, for a monthly fee. For me, I haven&apos;t had any need for the premium services yet, and I get by just fine. Most likely you will to.&lt;/p&gt;
&lt;p&gt;One word of advice. There are no guarantees that your data is safe in the cloud. Some people think this is the biggest drawback of the cloud, having some sense of security with it. If for some random reason, a huge EMP pulse knocks out all of Amazon&apos;s servers, all my books are gone, since the data resides on their machines. That said, most cloud apps (to their credit) keep a copy of the files on your machine, as well as in the cloud. That way if one source fails, the other can get you back up to speed. Just remember to always make a backup of your stuff, and life will be good.&lt;/p&gt;
&lt;h2&gt;* Bonus App *&lt;/h2&gt;
&lt;p&gt;Who says we can throw in some extras from time to time?! Shortly after writing this article, I had a chance to really get used to another tool that handles all of my Personal Kanban and other &quot;project&quot; needs. It&apos;s called Trello. It&apos;s fabulous! Go &lt;a href=&quot;http://trello.com&quot;&gt;check it out&lt;/a&gt; or &lt;a href=&quot;/hello-trello-my-fine-fellow&quot;&gt;read my article&lt;/a&gt; for more info.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;These five apps have made my life a lot easier when transitioning between the various &quot;modes&quot; of work and life. I don&apos;t have to worry about which partition I saved that note on, or if I took that nice picture with my webcam or my phone, because it&apos;s available to me no matter where I go. None of these apps have cost me a penny either, which makes it doubly sweet. You may notice that I don&apos;t have anything listed here for keeping my e-mail and social media type stuff listed, and unfortunately I haven&apos;t found one that really gets the job done. Who knows, maybe I can help change that.&lt;/p&gt;
&lt;p&gt;Have you found any cloud apps that help you out that I&apos;m missing? I&apos;m always trying out new stuff and I&apos;d love to hear about it!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Squirrels In My Pants By Phineas And Ferb</title><link>https://dillieo.me/posts/development/2012-01-27-song-of-the-week-squirrels-in-my-pants-by-phineas-and-ferb/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-27-song-of-the-week-squirrels-in-my-pants-by-phineas-and-ferb/</guid><description>S-I-M-P</description><pubDate>Fri, 27 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This week it&apos;s a song and video! If you haven&apos;t, go watch some episodes of Phineas and Ferb on Netflix. These kids are clever AND funny!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;ll save all the reasons I love this show for another post. Just watch this. The song is funny, creative, and oddly enough well put together and very fitting with the genre of music. 8^D&lt;/p&gt;
&lt;p&gt;S to the I to the M to the P!!!!&lt;/p&gt;
&lt;p&gt;[youtube=http://youtu.be/GjPm7_50iOY]&lt;/p&gt;
</content:encoded></item><item><title>When Did The World Get So Huge For You</title><link>https://dillieo.me/posts/development/2012-01-25-when-did-the-world-get-so-huge-for-you/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-25-when-did-the-world-get-so-huge-for-you/</guid><description>World Map</description><pubDate>Wed, 25 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was a kid, even into my early teens, the world was relatively small to me. Sure my grandparents went on a trip to a foreign country nearly every year, and in school we learned about the various countries, but they still seemed abstract to me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Soon after that the Internet arrived in my home. Well I guess I should say &quot;diet Internet&quot; because back then you used your phone line to dial into a service and even then, you had to do some additional configuration to get onto the Internet proper. But that&apos;s another story. The one thing our local BBS did was dial into a system called the &quot;Chatlink&quot;. Consider it one huge party line. Various channels from various parts of the US (and I believe a few external, but prices were high then) and from your local computer, you could join in on a given network.&lt;/p&gt;
&lt;p&gt;This was a lot of fun. Chat was rather light, sometimes serious, and people had their own personalities out in the Chatlink. Being a desert rat, I had a couple of macros setup to give out cacti to people, which all it really entailed was a fancy colorful text show up in the chat that says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tubanator sends you a cactus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nothing fancy, but hey, I times were different. I&apos;ll explain later.&lt;/p&gt;
&lt;p&gt;One night, I was over in the Minnesota chat link, channel 555. This was one of my favorites. A good group of folks, and people from more than just Minnesota showed up. We&apos;d talk about our day, cool ideas, and generally shoot the breeze. It was November, and I&apos;ll never forget what somebody says next in the chat:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Well, its&apos; time for me to go plug in the car and go to bed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What?! Plug in a car?! Why would you do a thing like that?! This was far before electric cars were considered common place. For folks in Minnesota and other climates were the temperatures can easily drop far below zero in the winter, you needed to keep your engine block somewhat warm over the night, otherwise it wouldn&apos;t start in the morning. Some folks would go drive the car around the block a few times to give the engine one last warm up before heading to bed. Other folks would literally attach a device to their engine that ran off electricity and kept the engine warm overnight. They&apos;d literally &quot;plug the car in&quot; before going to bed.&lt;/p&gt;
&lt;p&gt;I don&apos;t know why, but then all of the sudden the world got HUGE. Here was a group of folks that lived a bit differently than me. I had no concept of how cold that could be, but in hearing the explanation and imagining myself having to do such a task, it blew my mind. For some reason, all the &quot;theoretical&quot; or &quot;abstract&quot; knowledge I had became tangible to me in some way. I realized then that there was a whole lot more of the world out there to be discovered and to experience. It was a very exciting and humbling experience.&lt;/p&gt;
&lt;p&gt;I realize that this experience was a little odd, especially seeing all the slide shows from various countries that my grandfather made, but hey, I was only 13 or 14 at the time, that was the thing that triggered my senses to want to see and explore the world, and culture, around me. I would have this experienced reinforced later on through a couple of trips around the country to see family, a missions trip or two down to Mexico in high school, and a couple of trips to France during the summer in my college years.&lt;/p&gt;
&lt;p&gt;But that one night on the Chatlink did it for me. What about you? When did the world become HUGE to you? If not? Why not? I want to know.&lt;/p&gt;
</content:encoded></item><item><title>The Thoughts And Compassion Of Children</title><link>https://dillieo.me/posts/growth/2012-01-24-the-thoughts-and-compassion-of-children/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-01-24-the-thoughts-and-compassion-of-children/</guid><description>Mommy and her Kindergarten Girls</description><pubDate>Tue, 24 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;They truly never cease to amaze me. Here&apos;s the back story. For a while now we&apos;ve had some issues with the girls&apos; cleaning their bedroom. We&apos;ve tried working with them to clean their room, we&apos;ve tried taking away a few things. Even denied them dessert one time. Nothing seemed to work. Then one day the vacuum monster came to town.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The vacuum monster only comes at night, after kids have gone to bed. He can&apos;t climb around or anything like that, but he comes into the bedrooms of children while they sleep and if he finds any lose toys around, he sucks them up and takes them away to his house, gone for good. So far the vacuum monster has been &quot;fed&quot; by our children only twice. We have had to intervene on the girls&apos; behalves a couple of times for the vacuum monster, but only for special nights where we&apos;ve gone to Nana and Papa&apos;s or they were truly sick.&lt;/p&gt;
&lt;p&gt;To some extent, this has worked out quite nicely. Rylee could care less all in all about the vacuum monster, but this is serious business to Haylee. Every night about 15 minutes before we start the final bed time routine, she asks, somewhat timidly, &quot;Is the vacuum monster coming tonight?&quot; For which we tell her yes he is, and she get&apos;s a slightly alarmed look on her face. This happens even when she has cleaned up her stuff earlier that day. So she runs off to the bedroom, does some final tidy work, and we tell her that things look good, the vacuum monster won&apos;t be coming by. For you see, the vacuum monster can smell the toys on the floor. If he pokes his head in, and doesn&apos;t smell any toys on the floor, he simply moves on to the next child&apos;s house. Sidenote: Haylee has actually woken up a couple of times in the middle of the night asking if the vacuum monster is coming, just to make sure things are okay with her toys.&lt;/p&gt;
&lt;p&gt;Flash forward to last night. The girls have been fighting off some bronchitis, so they are feeling rather miserable. They had a late dinner and were starting to crash. About now Haylee asks about the vacuum monster. Taking a slightly different angle tonight, I say, &quot;No, the vacuum monster is sick tonight, he won&apos;t be coming by. Jen chimes in and says, &quot;Yes, he&apos;s so sick he&apos;s sneezing toys out of his nose!&quot; We get a slight smile and giggle at the picture forming in the girls heads of what this might look like.&lt;/p&gt;
&lt;p&gt;Without missing a beat, Rylee then asks, &quot;Can we make a card for the vacuum monster so that he gets better?&quot; Haylee says nothing, but has this look of &quot;Yeah, what she said.&quot;&lt;/p&gt;
&lt;p&gt;Right then and there my heart stops and melts. Here&apos;s this great, albeit mythical, monster that threatens (and has succeeded on a couple of occasions) to take away their toys. This monster has enough sway that Haylee has to be sure things are clean every night. And yet, at the first sign of the monster being sick, they want to take care of it.&lt;/p&gt;
&lt;p&gt;You gotta love it.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Afterhours 2011 Mix By Dj Josiah Fingaz Freebourne</title><link>https://dillieo.me/posts/development/2012-01-20-song-of-the-week-afterhours-2011-mix-by-dj-josiah-fingaz-freebourne/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-20-song-of-the-week-afterhours-2011-mix-by-dj-josiah-fingaz-freebourne/</guid><description>DJ Josiah</description><pubDate>Fri, 20 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This week we have another phenominal dance/house set from a guy I&apos;ve been following for a little while now, &lt;a href=&quot;http://www.djjosiah.com&quot;&gt;DJ Josiah &quot;Fingaz&quot; Freebourne&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This set comes thanks to &lt;a href=&quot;http://www.tastyfresh.com/2012/01/04/afterhours-2011-josiah-fingerz-freebourne/&quot;&gt;Tastyfresh&lt;/a&gt;, where DJ Josiah was played the Cornerstone festival this past year. It took a while to get the mix posted online, but man was it worth it! The way Josiah puts the mixes together, continues to keep the high energy flowing it hard to top. Plus DJ Josiah keeps a message to honor God in all of his mixes.&lt;/p&gt;
&lt;p&gt;Enjoy and try NOT to dance while listening to this mix! I failed after about 3 minutes into it. 8^D&lt;/p&gt;
&lt;p&gt;http://www.tastyfresh.com/podcast-mp3/ah2011_josiah.mp3&lt;/p&gt;
</content:encoded></item><item><title>Review The Hunger Games Trilogy By Suzanne Collins</title><link>https://dillieo.me/posts/development/2012-01-19-review-the-hunger-games-trilogy-by-suzanne-collins/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-19-review-the-hunger-games-trilogy-by-suzanne-collins/</guid><description>Hunger Games Trilogy</description><pubDate>Thu, 19 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What started out as a Christmas gift for my wife turned into a 1200 page AMAZING read that I finished in 5 days, probably a new record for me. Yes, I enjoyed the series THAT much. The &lt;a href=&quot;http://www.thehungergames.co.uk/home&quot;&gt;Hunger Games&lt;/a&gt; trilogy by &lt;a href=&quot;http://www.suzannecollinsbooks.com/&quot;&gt;Suzanne Collins&lt;/a&gt; is an intense and exciting story that also covers a wide variety of important and difficult issues that continue to face humanity today.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The trilogy is set in a future where North America is wiped out and replaced with a country called Panem. The Hunger Games serve as a brutal and twisted reminder to all of the districts that challenged the Capitol nearly 75 years ago and lost. As punishment, 12 districts are required to send a boy and girl between the ages of 12 and 18 to compete in a death match competition. To add to the twisted nature of these games, they are televised for the entire nation to see. Contenders may receive gifts from &quot;sponsors&quot; along the way during the games, which can often mean the difference between life and death.&lt;/p&gt;
&lt;p&gt;In this world we follow the story of a 16 year old girl named Katniss, who volunteers to go in place of her younger sister to compete in an event called the Hunger Games. She comes from District 12, home to coal miners who live in extreme poverty. To survive, Katniss has learned to feed her family by hunting game in the forbidden meadows, an selling or trading them on the equally forbidden black market in town. When she volunteers for the games, she has her resourcefulness of her time and hunting skills in the meadow to use, but it&apos;s not much. On top of that, there&apos;s also a fellow boy named Peeta from her district that she might have to kill. However, in an odd twist of events, Peeta professes his love for Katniss during an interview leading up to the games, which give the couple that &quot;star crossed lover&quot; story that the public just might believe and give support for during the games.&lt;/p&gt;
&lt;p&gt;From here we jump into an intense story that start with the games themselves, where children are ruthless, brutal, an cunning. If Katniss doesn&apos;t survive the games, her family is done for. If she does survive the games, how will killing other people affect her. In addition, there is the dynamic with Peeta, who is genuinely in love with her, not just making a ploy to win the public&apos;s favor. However outside of the games, there is political turmoil stirring, as the pin that Katniss wears, that of the Mockingjay, serves as a subtle slap and rallying point against the Capitol for their mistreatment of the districts.&lt;/p&gt;
&lt;p&gt;I really don&apos;t want to outline much more of the plot without giving away the story. Part of the fun of this story are some of the twists and sudden events that happen during the entire story arc. The story is also written through the eyes of Katniss, which gives a larger sense of urgency to the story, as well as being overwhelmed by the world that Katniss is in. While the timeline was set in the future, and there was a lot of really interesting tech going on, it wasn&apos;t overbearing. The characters, their actions and consequences, took more of the forefront. You could easily have written this story in modern times, but the distance of another land and another time allows you to step into the story more and it enjoy the intense scenes. It also allows you to take a step out and look at some of the larger issues going on and how they can apply to us today.&lt;/p&gt;
&lt;p&gt;Some of the issues that compelled me through the series was:&lt;/p&gt;
&lt;p&gt;Death: Facing your own and inflicting it upon others. Not to mention what happens when you see so much of it. Is one kind of death, or infliction thereof acceptable over another?&lt;/p&gt;
&lt;p&gt;Rich/Poor: The citizens of the Capitol are well off compared to those in even the richest of districts. How their attitudes towards Katniss and Peeta, not to mention their reactions back, continues throughout the series, often at the oddest times.&lt;/p&gt;
&lt;p&gt;War: Yes, there is war in the series. While the book is not anti-war, it definitely shows how both sides are affected by it, and how bystanders are affected by it too.&lt;/p&gt;
&lt;p&gt;Love: There is a bit of a love triangle in the story, that seems to come up off and on throughout the series. Is there that one true person you&apos;re meant to be with it? Could it be that one person at the time? Who are you most compatible with and why? Can you force yourself to love somebody?&lt;/p&gt;
&lt;p&gt;Politics: What happens in the games spills out into the lives of others, even more so that any of the characters could have imagined. What would somebody do in order to protect themselves, or others, in the eyes of the public?&lt;/p&gt;
&lt;p&gt;Katniss: Through it all there is Katniss. She&apos;s already been through a rough start to life, and the games have made things worse. Who is she supposed to be? How will she get there? She reaches some very dark places in her life, and how she reacts to them becomes very thought provoking.&lt;/p&gt;
&lt;p&gt;Even if you don&apos;t look into some of the bigger issues with this series, the Hunger Games trilogy is very well paced and an amazing read that I highly recommend to anybody!&lt;/p&gt;
</content:encoded></item><item><title>Joy</title><link>https://dillieo.me/posts/growth/2012-01-17-joy/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-01-17-joy/</guid><description>Joy</description><pubDate>Tue, 17 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“Man is more himself, man is more manlike, when joy is the fundamental thing in him, and grief the superficial. Melancholy should be an innocent interlude, a tender and fugitive frame of mind; praise should be the permanent pulsation of the soul. Pessimism is at best an emotional half-holiday; joy is the uproarious labour by which all things live.” --G.K. Chesterton&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;“Man is more himself, man is more manlike, when joy is the fundamental thing in him, and grief the superficial. Melancholy should be an innocent interlude, a tender and fugitive frame of mind; praise should be the permanent pulsation of the soul. Pessimism is at best an emotional half-holiday; joy is the uproarious labour by which all things live.” --G.K. Chesterton&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>My Other Tagline</title><link>https://dillieo.me/posts/growth/2012-01-17-my-other-tagline/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-01-17-my-other-tagline/</guid><description>My Other Tagline</description><pubDate>Tue, 17 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;My other tagline is being used on my CRAY.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;My other tagline is being used on my CRAY.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Diy Duck Incubator Hotel</title><link>https://dillieo.me/posts/development/2012-01-16-diy-duck-incubator-hotel/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-16-diy-duck-incubator-hotel/</guid><description>The final product</description><pubDate>Mon, 16 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple of weeks back we added two new ducklings to the family. Well, technically they were &quot;teenagers&quot; since they had almost shed their baby fluff. Being winter, we needed a place to keep them until their full feathers came in and they were a little larger to get along with their big sisters.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;We&apos;ve done this in the past. Typically with the ducklings we get a good side cardboard box, fill it with hay, a little water, a little food, and we&apos;re set. Unfortunately ducks seem to be mess prone, and within a couple of minutes they&apos;ve managed to knock over their food and water and the stink just starts up. To taking an inspirational note from the hatchery where we get our ducklings, I cut a couple of holes in the cardboard box. Then I put food and water outside each of the holes. The ducks can peek out, and get some food or water. More importantly, this reduces the spills to the occasional spill when they are really hungry or thirsty. Cleanup for this is rather simple.&lt;/p&gt;
&lt;p&gt;However, I still run into a couple of issues as our ducklings grow up. The first is that the box get&apos;s too short, and we have escapees. It&apos;s rather fun to see them explore until they poop on the carpet. 8^D The second is that the cardboard box gets soaked around the edges of the holes from the ducks drinking. Ducks are rather sloppy drinkers. Combine that with a little food in their mouth and you get a bit of a mess on your hands. Sometimes the wet box is okay, if the time we have with the ducklings is short, but I&apos;m looking for a solution that will last through the next time we get ducklings (and well) so that I don&apos;t have to keep hunting for boxes.&lt;/p&gt;
&lt;p&gt;After a little more pondering, I came up with a solution that works and is cheap. The first step is to get a nice, somewhat deep, storage tub, base the size on how many ducklings you plan on having at once.&lt;img src=&quot;@assets/images/posts/2012-01-imag0335.jpg&quot; alt=&quot;Duck Incubator Start&quot; title=&quot;Duck Incubator Start&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The next, and final, step is to cut a nice long rectangle about 1/3rd of the way up from the base of the tub. Make the height of the rectangle about 2 inches. This allows the ducklings to get their head in and out comfortably without escaping. I used some heavy duty kitchen shears to make the cut after using a drill to get some initial holes in the corners of my opening. You could even use a small jig saw if you had one. Just make sure the edges are smooth when you&apos;re done. You don&apos;t want any scratching or cutting of those delicate necks.&lt;img src=&quot;@assets/images/posts/2012-01-imag0334.jpg&quot; alt=&quot;Duck Incubator Opening&quot; title=&quot;Duck Incubator Opening&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now you&apos;re done! Add some hay and ducks and you&apos;re set!&lt;/p&gt;
&lt;p&gt;We found a nice little spot in our living room where we could clip on a heating lamp and point it in the corner to keep the ducklings warm. Since they couldn&apos;t quite reach the bowls of food and water, we found a couple little trays to boost the bowls up a little bit. We put a place mat down below to help with the occasional spill. Once a day we dump out the hay, hose down the tub, dry it out and put more hay in. It&apos;s convenient, reusable, and a lot of fun to see their heads poke out to say hi.&lt;/p&gt;
</content:encoded></item><item><title>Everybody Is A Genius</title><link>https://dillieo.me/posts/growth/2012-01-14-everybody-is-a-genius/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-01-14-everybody-is-a-genius/</guid><description>Everybody Is A Genius</description><pubDate>Sat, 14 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;“Everybody is a genius. But, if you judge a fish by its ability to climb a tree, it will spend its whole life believing that it is stupid.” ~ Albert Einstein&lt;/h2&gt;
&lt;p&gt;via &lt;a href=&quot;http://quotevadis.com/post/15684780675/albert-einstein-everybody-is-a-genius&quot;&gt;Quote Vadis - Quotes, Inspiration, Wisdom&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Programming Work</title><link>https://dillieo.me/posts/development/2012-01-12-programming-work/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-12-programming-work/</guid><description>Programming Work</description><pubDate>Thu, 12 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Let the machine do the dirty work.&lt;/p&gt;
&lt;p&gt;~ Elements of Programming Style&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Worship</title><link>https://dillieo.me/posts/growth/2012-01-06-worship/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2012-01-06-worship/</guid><description>Worship</description><pubDate>Fri, 06 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Worship is giving God the best that He has given you. Be careful what you do with the best you have. Whenever you get a blessing from God, give it back to Him as a love-gift. Take time to meditate before God and offer the blessing back to Him in a deliberate act of worship. If you hoard it for yourself, it will turn into spiritual dry rot, as the manna did when it was hoarded (see &lt;a href=&quot;http://www.biblegateway.com/passage/?search=Exodus+16:20&quot;&gt;Exodus 16:20&lt;/a&gt;). God will never allow you to keep a spiritual blessing completely for yourself. It must be given back to Him so that He can make it a blessing to others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;~ Oswald Chambers&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Sesames Treet By Smarte</title><link>https://dillieo.me/posts/development/2012-01-06-song-of-the-week-sesames-treet-by-smarte/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2012-01-06-song-of-the-week-sesames-treet-by-smarte/</guid><description>Sesames Treet Cover</description><pubDate>Fri, 06 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s start off the new year with a song that get&apos;s Big Bird jumpin&apos;! It&apos;s also the song that let me down the road to techno/house music.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I first heard this song at a high school dance back in the day. I was thinking &quot;Hey! Here&apos;s the theme song from a show I loved as a kid, with an amazing beat, and some fun voices mixed in. I could get used to this stuff!&quot;&lt;/p&gt;
&lt;p&gt;So here it is, start your year off groovin&apos;, thanks to Sesame&apos;s Treet!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_672820&lt;/p&gt;
</content:encoded></item><item><title>Top 10 Posts Of The Year</title><link>https://dillieo.me/posts/development/2011-12-30-top-10-posts-of-the-year/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-12-30-top-10-posts-of-the-year/</guid><description>Top 10 Posts Of The Year</description><pubDate>Fri, 30 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s interesting to pull up the stats and find out which posts were most popular over the year.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;1. &lt;a href=&quot;/soup-to-nuts-creating-a-timeout-notifier-in-asp-net-using-ajax-toolkit-or-jquery&quot;&gt;Soup to Nuts: Creating a Timeout Notifier in ASP.Net using AJAX Toolkit or jQuery&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I&apos;ve been doing some &lt;a href=&quot;/soup-to-nuts-creating-a-timeout-notifier-in-asp-net-using-ajax-toolkit-or-jquery&quot;&gt;How To&lt;/a&gt; type articles based on solutions I&apos;ve found and I&apos;m glad this one made it to the top. A lot of times you get bits and pieces of how to do things, but this was a &quot;soup to nuts&quot; type thing where you could take the entire solution and run with it. They took a bit more work than most of my posts (including doing a VS2008 and VS2010 solution) but I think the effort has been worth it.&lt;/p&gt;
&lt;h2&gt;2. &lt;a href=&quot;/soup-to-nuts-extending-the-user-module-in-pyrocms&quot;&gt;Soup to Nuts: Extending the User Module in PyroCMS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Upon starting my new job, one of the first tasks I had was to bring a new site up from scratch. We used the PyroCMS framework, which is amazing, but I needed to extend their user module to handle our specific case. It turns out others had this need too, and so this article was born.&lt;/p&gt;
&lt;h2&gt;3. &lt;a href=&quot;/setting-up-roksbox-with-itunes-and-osx&quot;&gt;Setting up Roksbox with iTunes and OSX&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We LOVE out &lt;a href=&quot;http://www.roku.com/&quot;&gt;Roku Box&lt;/a&gt;, and I was looking for a way to stream my iTunes music off my Mac to it. There&apos;s a channel called RoksBox that allows you to stream, but you need to do a little work to make it happen. Here&apos;s how to set it up.&lt;/p&gt;
&lt;h2&gt;4. &lt;a href=&quot;/qakbot-diagnosis-and-removal&quot;&gt;Qakbot: Diagnosis and Removal&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Shortly before switching jobs, we were hit with a HIDEOUS virus called Qakbot, that practically shut us down for a week. There wasn&apos;t much information out there. I did some &quot;dramatic storytelling&quot; of the process along the way, but ultimately I wanted a summary of things to help others facing similar problems, since this there wasn&apos;t much out there at the time with this third variant.&lt;/p&gt;
&lt;h2&gt;5. &lt;a href=&quot;/sorting-latitudelongitude-positions-by-distance-in-sql&quot;&gt;Sorting Latitude/Longitude Positions by Distance in SQL&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This was another crazy task I needed to do in order to properly display points on a map. Sure you can do it through code, but we needed the database to do all the heavy lifting for us.&lt;/p&gt;
&lt;h2&gt;6. &lt;a href=&quot;/diary-of-a-qakbot-infection-day-3-wa&quot;&gt;Diary of a Qakbot Infection Day 3: War&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of the &quot;dramatic storytelling&quot; entries from the Qakbot infection. This is when we started making progress.&lt;/p&gt;
&lt;h2&gt;7. &lt;a href=&quot;/quick-tip-centering-a-login-control-on-a-webpage-in-asp-net&quot;&gt;Quick Tip: Centering a Login control on a webpage in ASP.Net&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You would think that centering the login control would be easy. Sadly it took a little more work than I anticipated. This is one of the other benefits of blogging. You can remind yourself down the road of things you discovered. I think I&apos;ve used this entry myself two or three times since I first wrote it.&lt;/p&gt;
&lt;h2&gt;8. &lt;a href=&quot;/default-category-images-for-wordpress&quot;&gt;Default Category Images for WordPress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This past year really had me starting to branch out from my primary .Net roots of the past decade. This was another trick I had to come up with to make it easier for some clients to create posts that defaulted to a &quot;category&quot; image when they had no images to post.&lt;/p&gt;
&lt;h2&gt;9. &lt;a href=&quot;/diary-of-a-qakbot-infection-day-2-speechless&quot;&gt;Diary of a Qakbot Infection Day 2: Speechless&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Qakbot was nasty, really nasty. It hit 3 of my top 10 it was that bad. There are few days in my life where I think I&apos;ve been truly dumbfounded as what to do next. This was one of them.&lt;/p&gt;
&lt;h2&gt;10. &lt;a href=&quot;/ntegrating-the-nivo-slider-into-a-codeigniter-site&quot;&gt;Integrating the Nivo Slider into a CodeIgniter Site&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here&apos;s another post where I was working with some new technology to get a site off the ground. CodeIgniter is another great PHP technology I was exposed to over the year.&lt;/p&gt;
&lt;p&gt;Was there anything you didn&apos;t see in this list you enjoyed or found helpful? Anything you&apos;d like to see me cover next year? Thanks for reading and I&apos;ll see you in MMXII!!!&lt;/p&gt;
</content:encoded></item><item><title>Random Numbers</title><link>https://dillieo.me/posts/growth/2011-12-29-random-numbers/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-29-random-numbers/</guid><description>Random Numbers</description><pubDate>Thu, 29 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1&lt;/p&gt;
&lt;p&gt;A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1&lt;/p&gt;
</content:encoded></item><item><title>Christmas Wants And Needs</title><link>https://dillieo.me/posts/growth/2011-12-24-christmas-wants-and-needs/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-24-christmas-wants-and-needs/</guid><description>Christmas Wants And Needs</description><pubDate>Sat, 24 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Santa knows what I want.&lt;/p&gt;
&lt;p&gt;Jesus knows what I need.&lt;/p&gt;
&lt;p&gt;~ Leigh Nash&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Congregation</title><link>https://dillieo.me/posts/growth/2011-12-23-congregation/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-23-congregation/</guid><description>Congregation</description><pubDate>Fri, 23 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;I know the Lord loves His Bride the Church, but sometimes people in my congregation evoke punchy stabby rage in my soul.&lt;/p&gt;
&lt;p&gt;~ Deborah Price (&lt;a href=&quot;http://twitter.com/junglepixie&quot;&gt;@junglepixie&lt;/a&gt; on Twitter)&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Life Vs Living</title><link>https://dillieo.me/posts/growth/2011-12-23-life-vs-living/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-23-life-vs-living/</guid><description>Life Vs Living</description><pubDate>Fri, 23 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;There is something better than making a living - making a life.&lt;/p&gt;
&lt;p&gt;~ Sharlot Mabridth Hall&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Introducing Picadillieo</title><link>https://dillieo.me/posts/growth/2011-12-21-introducing-picadillieo/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-21-introducing-picadillieo/</guid><description>Pic-a-Dillie-O Screenshot</description><pubDate>Wed, 21 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So there&apos;s Flikr, Facebook Photos, Picasa Photos, Instagram, and a plethora of other sites out there to host photos, but I&apos;ve decided to do something a little more &quot;homegrown&quot; and start putting them in a WordPress blog.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The result is &lt;a href=&quot;http://picadillieo.wordpress.com&quot;&gt;Pic-a-Dillie-O&lt;/a&gt;, another little blog where I can quickly post those photos. I&apos;m really loving the Android 2.0 version of WordPress, and the sharing features will make it easier to put things there. That and I think WordPress is just a great platform. Plus with the special photo oriented themes available, it makes for a nice little digital cottage. &lt;a href=&quot;http://picadillieo.wordpress.com&quot;&gt;Give it a peek&lt;/a&gt; when you have a moment. I&apos;ll be getting some more photos and do a little more clean up on the site as time goes on.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Fixing The Datetime2 Problem With Entity Framework</title><link>https://dillieo.me/posts/development/2011-12-20-quick-tip-fixing-the-datetime2-problem-with-entity-framework/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-12-20-quick-tip-fixing-the-datetime2-problem-with-entity-framework/</guid><description>Quick Tip</description><pubDate>Tue, 20 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ever run into the error &quot;Type datetime2 is not a defined system type.&quot; when working with your newly polished and adored Entity Framework model? I did, and here&apos;s how you fix it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Most of the time you probably won&apos;t run into this error. You WILL most likely run into this error if you are on a larger development team with some folks running SQL Server 2008 and some folks are running SQL Server 2005. If you open up your .edmx file for your data model in the XML editor, you&apos;ll find this code around line 7:&lt;/p&gt;
&lt;p&gt;The important thing to look at is the &quot;ProviderManifestToken&quot; parameter. According to &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb896311%28v=vs.90%29.aspx&quot;&gt;Microsoft&lt;/a&gt;, this parameter helps the entity model function while not connected to the database, I think it also helps best structure the queries it generates against the target database. The tricky thing is that every time you update the data model, even to move an object around in the display editor, this value is updated and saved to the database it is connected to.&lt;/p&gt;
&lt;p&gt;Case in point, one of the team members I work with has SQL Server 2008 R2, and I&apos;m running SQL Server 2005. When the model was updated on their machine, it set the ProviderManifestToken value to 2008, which included using the datetime2 data type on all date related queries it performed. The problem with this is that SQL Server 2005 doesn&apos;t have this data type, and the generated queries would fail.&lt;/p&gt;
&lt;p&gt;The solution? Simply change that value back to 2005 (as reported &lt;a href=&quot;http://connect.microsoft.com/VisualStudio/feedback/details/345018/entity-framework-uses-incompatible-types-e-g-datetime2-when-deployed-to-systems-with-older-sql-server-versions-even-when-source-database-had-compatibility-level-set-correctly&quot;&gt;here&lt;/a&gt;) and recompile the app. You need to remember to do this every time you update the data model when working with SQL Server 2008. Apparently there&apos;s no &quot;permanent fix&quot; for this.&lt;/p&gt;
&lt;p&gt;It&apos;s always the small oddities that make programming so interesting 8^D Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week O Holy Night By Studio 60 New Orleans Band</title><link>https://dillieo.me/posts/growth/2011-12-16-song-of-the-week-o-holy-night-by-studio-60-new-orleans-band/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-16-song-of-the-week-o-holy-night-by-studio-60-new-orleans-band/</guid><description>Studio 60 Santa</description><pubDate>Fri, 16 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s don&apos;t know how many times I&apos;ve shared this one now, but it&apos;s always worth sharing. Add a some soft, luscious, New Orleans jazz brass ensemble to your Christmas collection this season.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;https://soundcloud.com/dillie-o/o-holy-night-studio-60-nola&lt;/p&gt;
&lt;p&gt;O Holy Night is still my favorite Christmas carol of all time, and these guys (who appeared on an episode of Studio 60 back in the day) released this song for free. It features Troy &apos;Trombone Shorty&apos; Andrews and is wonderful. So wonderful I need to include the lyrics:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;O Holy Night! The stars are brightly shining, It is the night of the dear Saviour’s birth. Long lay the world in sin and error pining. Till He appeared and the Spirit felt its worth. A thrill of hope the weary world rejoices, For yonder breaks a new and glorious morn. Fall on your knees! Oh, hear the angel voices! O night divine, the night when Christ was born; O night, O Holy Night , O night divine! O night, O Holy Night , O night divine!&lt;/p&gt;
&lt;p&gt;Led by the light of faith serenely beaming, With glowing hearts by His cradle we stand. O’er the world a star is sweetly gleaming, Now come the wisemen from out of the Orient land. The King of kings lay thus lowly manger; In all our trials born to be our friends. He knows our need, our weakness is no stranger, Behold your King! Before him lowly bend! Behold your King! Before him lowly bend!&lt;/p&gt;
&lt;p&gt;Truly He taught us to love one another, His law is love and His gospel is peace. Chains he shall break, for the slave is our brother. And in his name all oppression shall cease. Sweet hymns of joy in grateful chorus raise we, With all our hearts we praise His holy name. Christ is the Lord! Then ever, ever praise we, His power and glory ever more proclaim! His power and glory ever more proclaim!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Merry Christmas and Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_677577&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Iif Isnt Doesnt Like Null Values</title><link>https://dillieo.me/posts/development/2011-12-14-quick-tip-iif-isnt-doesnt-like-null-values/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-12-14-quick-tip-iif-isnt-doesnt-like-null-values/</guid><description>Quick Tip</description><pubDate>Wed, 14 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve spent a good day beating my head up against a wall, and discovered that our VB ternary friend can be a little unfriendly at times...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;For those if you still in Visual Basic land (I delve back and forth these days), you know that there is no default ternary operator built into the language. However there is a helpful function that gives you the same functionality. In my case, I was doing some simple string formatting type stuff:&lt;/p&gt;
&lt;p&gt;However, running this code gives you a lovely NullReferenceException. After some more head-banging-wall action and a wonderful &lt;a href=&quot;http://stackoverflow.com/questions/428959/using-vb-net-iif-i-get-nullreferenceexception&quot;&gt;nugget of wisdom&lt;/a&gt; from StackOverflow, I realized the reason. IIf is a &lt;strong&gt;function&lt;/strong&gt; provided by the VB.Net framework, it is not it&apos;s own &lt;strong&gt;operator&lt;/strong&gt;, like the x ? y : z code works in C#. Therefore, if a null value is passed into a function, that isn&apos;t expecting it, it&apos;s going to yell at you, instead of short circuiting the evaluation, as you&apos;d expect.&lt;/p&gt;
&lt;p&gt;The solution? Use the If operator that became available a while back:&lt;/p&gt;
&lt;p&gt;Sometimes one little redundant character makes all the difference... Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week It Came Upon A Midnight Clear By Caedmons Call</title><link>https://dillieo.me/posts/life/2011-12-09-song-of-the-week-it-came-upon-a-midnight-clear-by-caedmons-call/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2011-12-09-song-of-the-week-it-came-upon-a-midnight-clear-by-caedmons-call/</guid><description>Caedmons Call Santa</description><pubDate>Fri, 09 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s another holiday tune for you, a little bit of acoustics, a children&apos;s choir, and a classic Christmas tune!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_675509&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Potato Cheese Soup</title><link>https://dillieo.me/posts/growth/2011-12-05-worth-sharing-potato-cheese-soup/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-12-05-worth-sharing-potato-cheese-soup/</guid><description>Potato Cheese Soup</description><pubDate>Mon, 05 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is an old family recipe that has many augmentations. I made it this weekend without any exact measurements, so you want to keep an eye as you add the ingredients. All in all it is simple and VERY good, especially old cold, snowy days.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ingredients&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5 Medium Potatoes, cubed&lt;/li&gt;
&lt;li&gt;1 Medium Onion, diced&lt;/li&gt;
&lt;li&gt;Pinch of Salt&lt;/li&gt;
&lt;li&gt;1 Stick of Butter&lt;/li&gt;
&lt;li&gt;1 4 oz. Can Diced Green Chilies&lt;/li&gt;
&lt;li&gt;4 c. Milk&lt;/li&gt;
&lt;li&gt;1 lb. Jack Cheese, shredded&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Directions&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add salt, potatoes and onions into a large pot. Fill the pot with water just until the potatoes and onions are covered.&lt;/li&gt;
&lt;li&gt;Cook the potatoes and onions on high until the potatoes are soft enough to poke through easily with a fork.&lt;/li&gt;
&lt;li&gt;Take the pot off the heat. Use a potato masher and mash the potatoes and onions together. Do not drain the water out of the pot.&lt;/li&gt;
&lt;li&gt;Add the butter, chilies, and milk to the pot and return to heat. Reduce the heat to medium. I found that cutting the butter into slices helps it blend in better.&lt;/li&gt;
&lt;li&gt;Slowly add the cheese to pot in handfuls. The goal is to get the cheese to blend well with the rest of the ingredients and thicken up the soup. I usually add a couple handfuls, let it melt in well then repeat.&lt;/li&gt;
&lt;li&gt;Simmer until the entire mixture is blended well.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Modifications&lt;/strong&gt; The best part about this recipe is that you can modify it without much work. For instance, try some (or all) of these ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Pepper Jack cheese for a little more kick in the overall recipe.&lt;/li&gt;
&lt;li&gt;Use Sharp Cheddar Cheese for a different &quot;bite&quot; to the soup.&lt;/li&gt;
&lt;li&gt;Replace milk with 3/4c chicken broth. It adds some amazing flavor, especially the homemade kind.&lt;/li&gt;
&lt;li&gt;Mix in some cooked bacon, cut into small pieces, during step 4.&lt;/li&gt;
&lt;li&gt;Mix in some canned corn (drained), during step 4.&lt;/li&gt;
&lt;li&gt;Top with some green onion or chives when serving.&lt;/li&gt;
&lt;li&gt;Mix in some hot sauce (I prefer Cholula) to your own bowl if the rest of your family doesn&apos;t like anything spicy.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy and let me know if you try it out! If you can think of other items to mix in, let me know too. I always like trying something a little different to the base every time.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Little Drummer Boy By Audio Adrenaline</title><link>https://dillieo.me/posts/life/2011-12-02-song-of-the-week-little-drummer-boy-by-audio-adrenaline/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2011-12-02-song-of-the-week-little-drummer-boy-by-audio-adrenaline/</guid><description>Audio Adrenaline Santa</description><pubDate>Fri, 02 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s get the Christmas season going by rockin&apos; out to a holiday classic, courtesy of my favorite band, &lt;a href=&quot;http://en.wikipedia.org/wiki/Audio_Adrenaline&quot;&gt;Audio Adrenaline&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I don&apos; t think you&apos;ve ever heard the Little Drummer Boy played like this. I dare you to not jump out of your seat and start banging your head!&lt;/p&gt;
&lt;p&gt;Merry Christmas!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_661553&lt;/p&gt;
&lt;p&gt;What&apos;s that?! You want MORE music?! Check out my &lt;a href=&quot;/christmas-music-time&quot;&gt;Phat Chunk O&apos; Christmas!&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Christmas Music Time</title><link>https://dillieo.me/posts/development/2011-12-01-christmas-music-time/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-12-01-christmas-music-time/</guid><description>Christmas Lounge</description><pubDate>Thu, 01 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s Christmas time again!!!! Now that Thanksgiving has had it&apos;s due, let&apos;s get on with the celebration! Here&apos;s some music to help you along the way.&amp;lt;!--more--&amp;gt;This year I&apos;ve got a couple of sources of music that will be filling the air that are worth sharing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-12-christmaslounge.png&quot; alt=&quot;Christmas Lounge&quot; title=&quot;Christmas Lounge&quot; /&gt;](http://somafm.com/christmas/)First up is Soma FM&apos;s &lt;a href=&quot;http://somafm.com/christmas/&quot;&gt;Christmas Lounge&lt;/a&gt; &lt;em&gt;[I liked the old name &quot;Santa Lounge&quot; better 8^D]&lt;/em&gt;. They provide a family friendly mix of classics and unique mixes of Christmas songs. You&apos;ll get some Frank Sinatra, Tiajuana Brass, and a remix of Charlie Brown Christmas music, tastefully done. Go give it a listen! *&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-12-santadj-e1322745770653.jpg&quot; alt=&quot;&quot; title=&quot;SantaDJ&quot; /&gt;I&apos;ve also assembled &lt;a href=&quot;https://www.sugarsync.com/share/eov8mafpf8nnj&quot;&gt;my own mix&lt;/a&gt; a while back which I&apos;ve aptly named my &quot;Phat Chunk &apos;O Christmas Music&quot; At the time I was able to cram a single CD full of about 650MB worth of MP3s, which made for a LOT of Christmas listening. Feel free to give it a listen, I think you&apos;ll enjoy it. There&apos;s also a zip file somewhere in there for your offline needs. **&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-12-phatchunkochristmas.png&quot; alt=&quot;Christmas Mix Cover&quot; title=&quot;Christmas Mix Cover&quot; /&gt;While not quite the same, I&apos;ve also assembled a similar &lt;a href=&quot;http://open.spotify.com/user/dillie-o/playlist/6iapIFkfx2L1RVJ4eXUQRL&quot;&gt;&quot;Phat Chunk O Christmas Music&quot;&lt;/a&gt; mix for any Spotify listeners out there. I really love Spotify&apos;s sharing and library, and I was able to throw this together in a few minutes.&lt;/p&gt;
&lt;p&gt;I hope this helps get you into the Christmas spirit as we celebrate Jesus&apos; birth, family, Santa, and lots of lights! If you have any favorite tunes to share, please send them my way!&lt;/p&gt;
&lt;p&gt;Merry Christmas!!!&lt;/p&gt;
&lt;p&gt;* As a geekish aside, if you have a Roku Box &lt;em&gt;[I highly recommend one]&lt;/em&gt;, Soma FM has a channel on the Roku Box that will allow you to listen to this station (and others) from the comfort of your living room! Great for entertaining guests!!!&lt;/p&gt;
&lt;p&gt;** As another geekish aside, I really like SugarSync and if you&apos;re looking for a &quot;cloud&quot; to store some files, go &lt;a href=&quot;https://www.sugarsync.com/referral?rf=ehmp6mbzv6afb&amp;amp;utm_source=txemail&amp;amp;utm_medium=email&amp;amp;utm_campaign=referral&quot;&gt;get an account&lt;/a&gt;. It&apos;s free, you&apos;ll get a bonus 500 MB if you use that link right there, and there is a lot of great &quot;integration&quot; features built into the service.&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Jalapeno Cranberry Chutney</title><link>https://dillieo.me/posts/life/2011-11-22-worth-sharing-jalapeno-cranberry-chutney/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2011-11-22-worth-sharing-jalapeno-cranberry-chutney/</guid><description>Cranberry Chutney</description><pubDate>Tue, 22 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This was my grandfather&apos;s recipe, and a wonderful addition to the Thanksgiving table. It has a tart taste, unlike your typically sweet cranberry sauce, so it can compliment other foods quite well. Jalapeno is optional&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ingredients&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4 c Cranberries&lt;/li&gt;
&lt;li&gt;1 c Seedless Raisins&lt;/li&gt;
&lt;li&gt;1/2 c Sugar&lt;/li&gt;
&lt;li&gt;1 tbsp Ground Cinnamon&lt;/li&gt;
&lt;li&gt;1/2 tsp Ground Ginger&lt;/li&gt;
&lt;li&gt;1/4 tsp Ground Cloves&lt;/li&gt;
&lt;li&gt;1 c Water&lt;/li&gt;
&lt;li&gt;1/2 c Diced Onion&lt;/li&gt;
&lt;li&gt;1/2 c Thinly Sliced Celery&lt;/li&gt;
&lt;li&gt;1 Medium Apple, Peeled and Chopped&lt;/li&gt;
&lt;li&gt;1/4 c Vinegar (Optional)&lt;/li&gt;
&lt;li&gt;1/2 c Water (Optional)&lt;/li&gt;
&lt;li&gt;1 Jalapeno Diced (Optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Directions&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;(Optional) Simmer vinegar, 1/2 c water, and jalapeno for 5 minutes in a pot.&lt;/li&gt;
&lt;li&gt;Add cranberries, raisins, sugar, spices, and water to the pot and cook for 15 minutes, or until most cranberries have burst and the mixture is starting to thicken.&lt;/li&gt;
&lt;li&gt;Add the rest of the ingredients and let simmer for another 15 minutes or until thick.&lt;/li&gt;
&lt;li&gt;Let cool and refrigerate, or put into canning jars immediately and let cool on the counter.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Again, you&apos;ll find that the taste is tart, compared to sweet, but the balance of apples and onions and celery in the mix is very nice. You can always add a bit more sugar during the simmer process if you want yours sweeter, or a little more water to give things time too cook. The recipe is very flexible that way. I typically get rid of the membrane and seeds to reduce the heat, but if you&apos;re family enjoys the spice, keep it all in!&lt;/p&gt;
&lt;p&gt;Enjoy and let me know if you try it out!&lt;/p&gt;
</content:encoded></item><item><title>Give Thanksgiving Its Due A Pseudo Rant Repost</title><link>https://dillieo.me/posts/growth/2011-11-19-give-thanksgiving-its-due-a-pseudo-rant-repost/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-11-19-give-thanksgiving-its-due-a-pseudo-rant-repost/</guid><description>ThanksgivingTable</description><pubDate>Sat, 19 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, I didn&apos;t think I&apos;d feel like doing it, but I&apos;m re-posting this a good week before I posted it last year, and I probably could have done it a few days before...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/give-thanksgiving-its-due-a-pseudo-rant&quot;&gt;Give Thanksgiving its due&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Give Thanksgiving Its Dueandhellip A Pseudo Rant Repost</title><link>https://dillieo.me/posts/growth/2011-11-19-give-thanksgiving-its-dueandhellip-a-pseudo-rant-repost/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-11-19-give-thanksgiving-its-dueandhellip-a-pseudo-rant-repost/</guid><description>ThanksgivingTable</description><pubDate>Sat, 19 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, I didn&apos;t think I&apos;d feel like doing it, but I&apos;m re-posting this a good week before I posted it last year, and I probably could have done it a few days before...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/give-thanksgiving-its-due-a-pseudo-rant&quot;&gt;Give Thanksgiving its due&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Mahna Mahna By The Muppets</title><link>https://dillieo.me/posts/development/2011-11-18-song-of-the-week-mahna-mahna-by-the-muppets/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-18-song-of-the-week-mahna-mahna-by-the-muppets/</guid><description>Mahnamahna</description><pubDate>Fri, 18 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In honor of the upcoming movie, you get a song AND a movie!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It get&apos;s stuck in your head, but it is OH SO FUN!!! The &lt;a href=&quot;http://en.wikipedia.org/wiki/Mah_N%C3%A0_Mah_N%C3%A0&quot;&gt;history of the song&lt;/a&gt; is actually pretty interesting.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;P.S. I apologize now (well sort of anyway) for getting this song stuck in your head 8^D&lt;/p&gt;
&lt;p&gt;http://youtu.be/8N_tupPBtWQ&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Conclusion</title><link>https://dillieo.me/posts/development/2011-11-15-lifestyle-management-reloaded-conclusion/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-15-lifestyle-management-reloaded-conclusion/</guid><description>Lifestyle Management</description><pubDate>Tue, 15 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So here we are at the end of our &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;quest&lt;/a&gt; to find the &quot;one tool&quot; or tools to help with &quot;lifestyle management&quot;. I hope this has given you a few ideas on some apps you can use. Maybe it even gave you some ideas for something you&apos;ve never tried before, aggregating all your social communications into a single place.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Verdict: LiveGo / Feedly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So after bouncing around for nearly two weeks now between all the various options I&apos;ve listed, I&apos;ve come to the best solution for me right now. That is a combination of &lt;a href=&quot;http://livego.com&quot;&gt;LiveGo&lt;/a&gt; for all my mail / social networking and &lt;a href=&quot;http://feedly.com&quot;&gt;Feedly&lt;/a&gt; for my RSS reading. LiveGo is doing a pretty decent job at aggregating my e-mail and social networking together. There is still a bit I&apos;d like to see changed, but I have yet to hear from the developers on if they are continuing the project or not. Feedly has been a welcome surprise. I&apos;ve had a small adjustment to their interface over Netvibes, but all in all I&apos;ve really enjoyed the reading experience, my blogs don&apos;t feel quite as cluttered, and it&apos;s easy to do a &quot;bulk read&quot; option when I just want to clear it out. I&apos;m getting more familiar with the keyboard commands and I&apos;m sure I&apos;ll love things even more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trillian: Surprisingly Useful&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another app I&apos;ve been using even more lately is &lt;a href=&quot;http://www.trillian.im&quot;&gt;Trillian&lt;/a&gt;, primarily for it&apos;s notification features, interestingly enough. Trillian already does great with allowing you access to all your IM features. My wife is on Yahoo messenger for work, a good friend uses Google Talk, and we use Google Apps for our work stuff. I&apos;m connected to all three clients (plus my ICQ and MSN for kicks) using one application and I can do all my basic conversations that way. What&apos;s better is that Trillian just released some basic integration with Skype, so I can keep those work contacts in touch as well. I&apos;m still mixed about the social networking integration in Trillian. I&apos;d love to see the Facebook/Twitter/Foursquare feeds mixed, so for now I only glance at it occasionally. I also have my e-mail accounts integrated, so I can easily see (and preview) my incoming messages, which has been a huge help.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What about Google+ ?!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been using Google+ since the first few betas leaked out. It&apos;s nice, but I haven&apos;t seen a lot of migration towards it. To some degree I think there is a higher level of communication, thanks to how circles work, but it is still looking for widespread adoption. The stuff I&apos;d like to post I want to cross post over to Facebook and Twitter as well. So far the only plugin that allows me to do this is &lt;a href=&quot;http://sgplus.me/&quot;&gt;SGPlus&lt;/a&gt;, but reading my Facebook and Twitter stream is still very primitive through the plugin and buggy. At this point I&apos;m on the fence with Google+ I&apos;d love to see it integrated more into apps, so I have one less tab open, but I&apos;m not ready to simply drop it yet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;...and homegrown?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yeah, it sounds tasty, and I might have to put some time together to make it happen, but who knows when and where that will occur. Maybe a &lt;a href=&quot;http://www.kickstarter.com/&quot;&gt;kickstarter&lt;/a&gt; project would get stuff going for that. 8^D&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Interestingly enough the technology is ALWAYS changing, and something may come out tomorrow that eliminates all of this. That said, it&apos;s nice to have a comfortable ground for handling all of this craziness of e-mail, social networking, news, and more. Hopefully I&apos;ve given you some ideas to work with, and we&apos;ll what next &quot;killer app&quot; comes to the table.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Homegrown</title><link>https://dillieo.me/posts/development/2011-11-14-lifestyle-management-reloaded-homegrown/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-14-lifestyle-management-reloaded-homegrown/</guid><description>Homegrown</description><pubDate>Mon, 14 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As we continue on our &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;quest&lt;/a&gt; to find the &quot;one tool&quot; or tools to help my &quot;lifestyle management&quot;, I must admit that it&apos;s been difficult because there really hasn&apos;t been anything that perfectly fits the gap. So let&apos;s stop for a moment and think, what about building it myself?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Yep, that&apos;s right. Why not simply home grow my own communications management platform and get everything I want and put it in one place. I can do a few advanced things like threaded conversations (one thing highly desired in Threadsy) and maybe even work out a lightweight RSS reader into the mix. I was never a huge fan of the web based IM, so that can go by the wayside. The scary thing is that with HTML5 and mobile platforms hitting into some big strides, it is feasible to make mobile versions of the same client with minimal duplication of code, simply presentation aspects. In addition, there are plenty of APIs out there that allow me to be more of a &quot;data ambassador&quot; than blaze any new frontiers here. I simply make sure everybody talks nice and proper to each other and we&apos;re rolling! Plus I can finally try out the MVC/Razor engine I&apos;ve heard such good things about.&lt;/p&gt;
&lt;p&gt;But at the same time, things start to get a little crazy with a lot of AJAX calls, and formatting issues. Often enough the little things wind up being the biggest of all, so it&apos;s not really a &quot;toss it together in a weekend&quot; kind of application. Security is a big concern, and there need to be items in place to accommodate that. I think maintaining the activity list will be the trickiest part, making sure not to duplicate the new items, especially if a user is browsing down a list or something. There&apos;s a lot more work than what appears on the surface.&lt;/p&gt;
&lt;p&gt;But that said, I&apos;ve got enough interest in it that I just might have to take the plunge and try to make something happen. It would be pretty cool regardless, even if I used it just for myself. 8^D&lt;/p&gt;
&lt;p&gt;Tomorrow I&apos;ll wrap all this up, but I&apos;m still looking for solutions if you want to toss some my way!&lt;/p&gt;
</content:encoded></item><item><title>On This Veterans Day</title><link>https://dillieo.me/posts/growth/2011-11-11-on-this-veterans-day/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-11-11-on-this-veterans-day/</guid><description>Veterans Day 2011</description><pubDate>Fri, 11 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;‎&quot;Mom? What soldiers?&quot; &quot;They are people who protect us from bad guys and help keep us safe.&quot; &quot;Oh!&quot; Haylee&apos;s face lights up, &quot;They are knights!&quot; &quot;Yes, Haylee, they are knights!&quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;From our family to you, Thank you, Knights for your sacrifice, your faith, strength, love, and service. It is because of you that we can sleep well.&lt;/p&gt;
&lt;p&gt;Thank you to your family for sacrificing time with you, so that you can keep us all safe.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Tweetdeck Trillian Hootsuite And Others</title><link>https://dillieo.me/posts/development/2011-11-10-lifestyle-management-reloaded-tweetdeck-trillian-hootsuite-and-others/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-10-lifestyle-management-reloaded-tweetdeck-trillian-hootsuite-and-others/</guid><description>Lifestyle Management</description><pubDate>Thu, 10 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As we continue on our &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;quest&lt;/a&gt; to find the &quot;one tool&quot; or tools to help my &quot;lifestyle management&quot;, I&apos;ve come across several options that don&apos;t necessarily fit all of my needs, but have some great features that might pair nicely together to fit my needs. We&apos;ll take a look at those now.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TweetDeck/HootSuite&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Both &lt;a href=&quot;http://tweetdeck.com&quot;&gt;TweetDeck&lt;/a&gt; and &lt;a href=&quot;http://hootsuite.com&quot;&gt;HootSuite&lt;/a&gt; were originally designed as &quot;power tools&quot; for Twitter, but they&apos;ve expanded themselves a bit into other social networking areas. What both applications do is give you a series of columns or tabs in which to lay out your social networks with . You can have specific twitter searches, hash tags, direct messages, all in various columns, with a single column that has the main twitter feed of your followers. Both applications provide Facebook integration, but TweetDeck also provides an &quot;aggregated feed&quot; that displays both your Facebook news feed and Twitter feed together.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-tweetdeckhome.png&quot; alt=&quot;TweeDeck Home&quot; title=&quot;TweetDeck Home&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-hootsuitehome.png&quot; alt=&quot;HootSuite Home&quot; title=&quot;HootSuite Home&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trillian&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been a long time on and off user of &lt;a href=&quot;http://www.trillian.im&quot;&gt;Trillian&lt;/a&gt;, which served as a nice way to log in to all of my instant messengers in one application. What I was surprised to find is that Trillian has a nice social networking component as well. Once logged in to Twitter or Facebook, you can hover over your name to see the news feed. You can then detach that window to see them all the time. There are different sections for direct messages and events. You can register your e-mail accounts and get notified when new messages come in, including a preview of them. Clicking the message sends you directly into the message in Hotmail/Gmail, something the Netvibes widget doesn&apos;t offer.&lt;/p&gt;
&lt;p&gt;Trillian is a client based application, and the features on their Mac and Web versions aren&apos;t nearly as robust as the Windows version. So when it comes to swapping between my machines, or checking things on the go, I would need to look to other options. That said, Trillian has been impressing me more and more since I loaded it up again and you should give it a try if you do a lot of IM or want to Facebook chat without having the whole page open.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-trillianhome.png&quot; alt=&quot;Trillian Home&quot; title=&quot;Trillian Home&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NewsBlur&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NewsBlur is a very streamlined news reader. It gives you a very smart presentation and nagivation layout for your posts. One thing that is nice is that it will show your news posts on the original site, instead of just displaying the text. This is helpful if you like to read articles and participate in their discussions. You can also go back to the basic text format if you want too. NewsBlur gives you about 60 feeds in their free version, and unlimited if you use their paid account, very reasonably priced. If you&apos;re looking for an updated approach to news feed reading, definitely give NewsBlur a peek. It&apos;ll import your Google Reader subscriptions for you.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-newsblurhome.png&quot; alt=&quot;NewsBlur Home&quot; title=&quot;NewsBlur Home&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Feedly</title><link>https://dillieo.me/posts/development/2011-11-09-lifestyle-management-reloaded-feedly/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-09-lifestyle-management-reloaded-feedly/</guid><description>Feedly Logo</description><pubDate>Wed, 09 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;earlier&lt;/a&gt;, I&apos;m on a hunt to find the &quot;one tool&quot; or tools to help my &quot;lifestyle management&quot; of being able to check e-mail, facebook, twitter, and more without having tons of applications or browser windows open. The next stop is another long term player, &lt;a href=&quot;http://feedly.com&quot;&gt;Feedly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Feedly has been around for quite a while now, and I even considered it during my original lifestyle management hunt. Feedly describes themselves as &quot;...a news reader for creative minds, a simple and elegant way to read and share the content of your favorite sites&quot;. If you&apos;re already a Google Reader user (as I believe most folks are based on some recent articles I read), Feedly will take your existing subscriptions and organize them into a nice magazine style format:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-feedlyhome.png&quot; alt=&quot;Feedly Home Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Compared to the initial layout of Netvibes and most readers, Feedly may seem a little out of place. However, once you take a few moments to inspect it&apos;s layout, it is very intuitive and friendly. Feedly creates a &quot;My Feedly&quot; section which serves as front page, hilighting a few articles from your featured blogs and then giving you the latest news from all of your categories. At first it is confusing what is considered a &quot;featured&quot; blog. The solution is to go to your &quot;organize contents&quot; section and then mark which blogs you want as your favorites within each category (click the pencil). From there Feedly reorganizes things for you. This provides a great way to always see what is happening in your favorite blogs, even if they aren&apos;t updating posts daily.&lt;/p&gt;
&lt;p&gt;If you&apos;re not into the magazine style view, Feedly also provides several different layouts, including a timeline view to organize feeds by time, and a minimalist view that gives you simply the titles of the articles to allow for quick browsing and reading. What is really nice is that Feedly will allow you to organize each category uniquely, so my &quot;aggregators&quot; category, which pulls tons of articles hourly from Hacker News and DZone can remain in minimalist mode, while I can continue to read my friend&apos;s blogs in the magazine style mode.&lt;/p&gt;
&lt;p&gt;While it took me a little bit to find, there are some hotkeys embedded into Feedly to help with navigation and do a few tricks. The j and k keys allows you to move to the next and previous article, while the v key will open the article on the original website in a new tab. There&apos;s lots more and as I work with them more, the more I like it.&lt;/p&gt;
&lt;p&gt;Quick Tip: Use the ? key after loading Feedly to show all the hotkey options available.&lt;/p&gt;
&lt;p&gt;Feedly is also available on nearly every platform. There are plugins for Chrome, Safarik, and Firefox. They also have an iOS and Android version. I really like the fact I can read some articles during the day at work, and then browse a few more at night on Fiver or Whistler and not have to sift through the articles I already read. Oh, I should mention they make it easy to share articles on Twitter/Facebook/Google+ as well.&lt;/p&gt;
&lt;p&gt;While most folks say that RSS feeds are a thing of the past, I think they are still very useful today and Feedly makes for a wonderful resource to read them. They&apos;ve really fine tuned the reading process and I highly recommend it to anybody reading news.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Livego</title><link>https://dillieo.me/posts/development/2011-11-08-lifestyle-management-reloaded-livego/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-08-lifestyle-management-reloaded-livego/</guid><description>LiveGo Logo</description><pubDate>Tue, 08 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in my &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;earlier&lt;/a&gt;, I&apos;m on a hunt to find the &quot;one tool&quot; or tools to help my &quot;lifestyle management&quot; of being able to check e-mail, facebook, twitter, and more without having tons of applications or browser windows open. The next tool I found seems to be the most promising so far: &lt;a href=&quot;http://livego.com&quot;&gt;LiveGo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;LiveGo is still in beta, and says on their website &quot;Collect, Organize, Simplify, Share&quot;. If you take a peek at their demo page, it looks something like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-livegohome.png&quot; alt=&quot;LiveGo Home Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is probably the closest thing to the Threadsy interface I&apos;ve seen to date. What is really nice is how the Twitter and Facebook feeds are merged together below your mail Inbox. You can even reply or like/share directly within the feed. Images that are attached to a post can be viewed full sized (or at least larger) by simply hovering the mouse over the image. If you do need to get more in depth social interaction, you can click on the appropriate option on the sidebar and dig in. This feature provides something that Threadsy didn&apos;t have, and I like how I can dig into my Facebook or Twitter stream on occasion. I can also view just my Hotmail/Gmail as I please. This merge/separation option is VERY helpful.&lt;/p&gt;
&lt;p&gt;LiveGo also features integration with the various instant messenger clients. As part of logging in to your Hotmail account, you&apos;re also logged in to your MSN chat client, so you can chat with your friends without launching another application. This applies to GMail, Facebook, and Yahoo messenger as well. The chat client is simple, but gives you new windows for each person you&apos;re chatting with and the option to &quot;minimize&quot; them to a small box within the web page to focus on other things.&lt;/p&gt;
&lt;p&gt;There are a few problems surrounding LiveGo that still makes me a smidge hesitant about it. While I have no qualms about using beta software these days, the LiveGo blog hasn&apos;t been updated in about a year. LiveGo also features an iPhone app on their home page, and I wonder if they abandoned the web product in favor of the mobile one. From what I can see the mobile app doesn&apos;t support mail, so that option is currently out for me. My concern is that the lack of feedback on their blog, as well as anywhere else, might mean they&apos;ve abandoned things and the bugs won&apos;t get fixed. There are bugs there too. I can&apos;t seem to remove Facebook messages in my Inbox and the site access seems glitchy. Some days I can get on the site and some days I can&apos;t. I also think that some of my e-mail read/unread/delete status aren&apos;t propagating back to the server, since I&apos;ll log into Hotmail and see everything that was deleted in LiveGo. This could be due to Hotmail access though (it still goes over POP by default) and I can live with that for now.&lt;/p&gt;
&lt;p&gt;The instant messenger feature seems to be an &quot;all or nothing&quot; type factor. I don&apos;t do a whole lot of IM these days, but I still prefer &lt;a href=&quot;http://www.trillian.im&quot;&gt;Trillian&lt;/a&gt; for all of my instant messaging needs. If I choose to &quot;sign out of messengers&quot; within LiveGo, I run into problems with my Hotmail, or even my chat client for Yahoo, since both are pretty strict about being logged in to a single location. So my solution is typically to log into LiveGo, then start up Trillian. LiveGo will notify me about MSN and Y! logging on at a different location/client, but everything continues as normal.&lt;/p&gt;
&lt;p&gt;Some of the layout could change a little as well in my opinion. The chat windows aren&apos;t able to &quot;escape&quot; their parent frame, so if you have an ongoing conversation, you&apos;ll have to minimize it to read your incoming mail. The layout also chose to have your mail and social network stream all in one scrollable window. So if you scroll to check your social news, you&apos;ll lose seeing your e-mail until your scroll back up. This is a little awkward at times for me, but nothing critical.&lt;/p&gt;
&lt;p&gt;The more I dig into LiveGo, the more I&apos;m excited, and the more I hope that I don&apos;t get disappointed by a drop in support or a sudden loss in service. LiveGo has all the Threadsy features, plus a few more, and I&apos;m still exploring it, which is a good sign.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Mobilecloud Aside</title><link>https://dillieo.me/posts/development/2011-11-07-lifestyle-management-reloaded-mobilecloud-aside/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-07-lifestyle-management-reloaded-mobilecloud-aside/</guid><description>Mobile Devices</description><pubDate>Mon, 07 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m still on my quest for my &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;one tool&lt;/a&gt; to handle &quot;lifestyle management&quot; online, but I wanted to take a moment to cover a couple of topics that have jumped out at me that I wasn&apos;t necessarily expecting: The Could, and Mobile Devices.&amp;lt;!--more--&amp;gt;Don&apos;t get me wrong. I&apos;m fully aware that these factors are out there. I&apos;ve recently become an &lt;a href=&quot;/what-cool-things-can-i-do-with-my-droid&quot;&gt;Android owner&lt;/a&gt; and a while ago I blogged about how the &lt;a href=&quot;/life-in-the-cloud&quot;&gt;cloud &lt;/a&gt;can really be your &quot;digital home&quot; for things. However, as I&apos;ve been looking through various options, I noticed that nearly all of them have a mobile version available. &lt;a href=&quot;http://netvibes.com&quot;&gt;Netvibes&lt;/a&gt; has a very responsive and compact mobile version of their site available, no installation required. Google has mobile apps for everything they provide (reader, mail, plus, etc.), but even have mobile optimized versions of their sites to. I was surprised at how much I had been using all of these too! I have a laptop, but even then a &quot;quick&quot; e-mail update called for running into the bedroom, getting the laptop out of sleep mode, firing up the... whoops, commercial break is over. Now I just pull out Whistler (my iPod Touch) or Fiver (my Droid) and I look for notifications and proceed if I want. Afterwards I can start some hot chocolate for me and the Mrs. and be back in plenty of time.&lt;/p&gt;
&lt;p&gt;I&apos;ll admit I have more geekish tendencies that a lot of people I know, but to some degree I think I&apos;ve been behind the timeline on the mobile component, so I&apos;m sure this angle has been used by people a lot longer than I have. Aside from the &quot;heavy lifting apps&quot; for compiling code, gaming, or doing heavy graphics work, I don&apos;t think there are many apps out there that don&apos;t have a mobile component if they want to be successful.&lt;/p&gt;
&lt;p&gt;The other angle that caught me even more by surprise is the cloud angle. While commiserating with some other folks online about our loss of Threadsy, one person recommended a client based program that seemed to have the same functionality I was looking for. However, my body cringed internally at the thought that I&apos;ve installed another program on my computer. Too many apps installed and uninstalled starts to make the system a little slower, oddly enough. On top of that, I&apos;ve been through enough system reformats that the fewer applications I have to reinstall (not counting simply replacing the system image) the better. Most importantly though is the data backup angle. I&apos;ll admit that I need to have a physical copy of of all my photos/e-mails/etc., but I think to some degree I&apos;ve become accustomed to having them saved online, and being able to reboot between systems (Mac and PC) and having all the same e-mails there without the hassle. Also I can be on the road, want to show a friend a picture (say of the recent snow) and have it right there. Incredibly convenient. To some degree I didn&apos;t realize how dependent I&apos;ve become on the cloud.&lt;/p&gt;
&lt;p&gt;These factors are definitely playing a factor in the search of lifestyle management apps, and they weren&apos;t mainstream enough before to consider. Such is the new digital age we live in. What about you? How do mobile devices and the cloud play into your life on a day to day basis?&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Imperial March Leviathan Mix</title><link>https://dillieo.me/posts/development/2011-11-04-song-of-the-week-imperial-march-leviathan-mix/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-04-song-of-the-week-imperial-march-leviathan-mix/</guid><description>Darth Vader - Punk Style</description><pubDate>Fri, 04 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s Star Wars!!! It&apos;s Darth Vader&apos;s theme song!!! It&apos;s got a nice industrial/metal edge to it!!!! There&apos;s really nothing more to say!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;A long time ago &lt;em&gt;[yes... in a galaxy far, far away]&lt;/em&gt; there was a great game called Force Commander. It was a venture into the Starcraft style games. One of their features was some storyline involved (you go from working for the Imperials to the Rebels). They also hyped up some new 3D graphics (this was still big) that allowed you to zoom in and rotate around your army. I&apos;ll admit is was really cool to zoom in on an AT-AT and see it walking around in the game, shooting things down.&lt;/p&gt;
&lt;p&gt;An added bonus to the game, there was a soundtrack to it, with some remixed versions of the Star Wars classics. My favorite (and the feature of the game) was the Imperial March - Leviathan Mix. All the stuff you love about the song, with the &quot;edge&quot; of the remix.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_26565&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Igoogle</title><link>https://dillieo.me/posts/development/2011-11-03-lifestyle-management-reloaded-igoogle/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-03-lifestyle-management-reloaded-igoogle/</guid><description>iGoogle Logo</description><pubDate>Thu, 03 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in my &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;earlier&lt;/a&gt;, I&apos;m on a hunt to find the &quot;one tool&quot; or tools to help my &quot;lifestyle management&quot; of being able to check e-mail, facebook, twitter, and more without having tons of applications or browser windows open. The next stop is one of those oldies but goodies, &lt;a href=&quot;http://igoogle.com&quot;&gt;iGoogle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I believe iGoogle hit the scenes around the time Netvibes and a couple other sites of a similar nature were hitting the scene. iGoogle is designed to be &quot;your personal Google page&quot; and they provide a wide variety of gadgets to customize your page. For instance, here&apos;s what a new page looks like if you let Google design it for you:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-igooglehome.png&quot; alt=&quot;iGoogle Home&quot; /&gt;&lt;/p&gt;
&lt;p&gt;True to Google&apos;s form there isn&apos;t necessarily the most visual design, but the design itself is clean and very functional. You can add a wide variety of gadets, which will also read RSS feeds, similar to Netvibes. One added benefit is that there is a gadget for Google Reader, which will display the most recent items for you. Just like Netvibes, there are gadgets for nearly everything out there, from some of your favorite news sources, to your favorite diversions (&lt;a href=&quot;http://icanhascheezburger.com&quot;&gt;LOL Cats&lt;/a&gt; anyone?). Probably the most notable gadgets are those that tie directly into Google applications (Gmail, Documents, etc) because they work the best with iGoogle. You can even respond and create e-mail messages directly within the GMail gadget. Unfortunately at this point Google+ doesn&apos;t have a gadget, but I&apos;m not sure if that is because they are moving some aspects of Google Reader (such as sharing links/posts) into Google+ instead.&lt;/p&gt;
&lt;p&gt;Another nice feature, if you&apos;re deep into the Google ecosystem, is that you have links across the top of the page to get to all of your main stopping points, such as Gmail, Reader, Plus, and Documents. While this doesn&apos;t give you &quot;everything on one page&quot;, it does provide for simple navigation without having a lot of bookmarks. All in all iGoogle and the Google ecosystem is a simple, but solid bet. I&apos;m sure there are tons of integration hooks out there that I haven&apos;t discovered, since Google is known for providing APIs for a lot of things. All in all if you need something stable, and like the Google ecosystem, then you can&apos;t go wrong with it.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded Netvibes</title><link>https://dillieo.me/posts/development/2011-11-02-lifestyle-management-reloaded-netvibes/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-02-lifestyle-management-reloaded-netvibes/</guid><description>Netvibes</description><pubDate>Wed, 02 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in my &lt;a href=&quot;/lifestyle-management-reloaded&quot;&gt;previous post&lt;/a&gt;, I&apos;m on a hunt to find the &quot;one tool&quot; or tools to help my &quot;lifestyle management&quot; of being able to check e-mail, facebook, twitter, and more without having tons of applications or browser windows open. The first stop in my hunt is a tool I&apos;m very familiar with, &lt;a href=&quot;http://netvibes.com&quot;&gt;Netvibes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Netvibes has the motto &quot;Dashboard Everything&quot; and they live up to that promise. If you go to the site right now, and sample their default dashboard, you get something like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-11-netvibeshome.png&quot; alt=&quot;Netvibes dashboard home&quot; /&gt; It&apos;s really slick. This is the tip of the iceberg. There are widgets for nearly everything out there, from some of your favorite news sources, to your favorite diversions (&lt;a href=&quot;http://icanhascheezburger.com&quot;&gt;LOL Cats&lt;/a&gt; anyone?). There are lots of ways to customize the layout as well. You can have up to 4 columns of varying widths/layouts and each widget comes with various presentation formats, from a simple list to a magazine style.&lt;/p&gt;
&lt;p&gt;In addition to the widget layout you see above, Netvibes also features a &quot;Reader Mode&quot; which functions a lot like some of the classic RSS readers you may be familiar with. I&apos;ve actually been using Netvibes in reader mode for a long time now. It provides a great way to see what is recent, allows me to view all the posts for a given category, or for an individual blog. There are handy links to view the article on the original site, and to mark all posts as read. The site updates automatically and quickly. I can easily rack my unread articles up to 3000+ if unattended for a day, and Netvibes doesn&apos;t blink.&lt;/p&gt;
&lt;p&gt;When it comes to Mail/Facebook/Twitter integration, there are widgets to cover those too. Both the Facebook and Twitter widgets allow you to respond to direct messages and like/dislike without having to log in itself. I chalk this up to the benefits of having an API. The mail widgets only serve only to show you what is in your Inbox. Clicking an e-mail link sends you on to your e-mail provider of choice for you to view/interact with. You can get a preview of the e-mail, depending on your provider. Gmail provides a preview, Hotmail doesn&apos;t. There may be more &quot;official&quot; widgets in Netvibes that has more features, but I haven&apos;t found them yet.&lt;/p&gt;
&lt;p&gt;My initial impressions are very favorable with Netvibes. I still like the &quot;reader mode&quot;, but viewing all the feeds in &quot;widget mode&quot; sometimes looks a little overwhelming, no to mention organizing all the widget boxes to have the layout I want. There is currently a bug that does not refresh any tabs except for the current one, but I know they are working on it. At the moment the biggest hangup for me is not being able to directly interact with the e-mails, but that could just be me being spoiled. Having a combined Twitter and Facebook feed would really be nice, and there might be one out there. There&apos;s still a little more digging to do in their &quot;ecosystem&quot;.&lt;/p&gt;
&lt;p&gt;If you&apos;re looking for an all purpose system, it&apos;s hard to beat Netvibes. You should give it a peek sometime.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Management Reloaded</title><link>https://dillieo.me/posts/development/2011-11-01-lifestyle-management-reloaded/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-11-01-lifestyle-management-reloaded/</guid><description>Lifestyle Management</description><pubDate>Tue, 01 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple of years back, I wrote &lt;a href=&quot;/lifestyle-data-management-conclusion&quot;&gt;a blog series&lt;/a&gt; about how to do &quot;lifestyle management&quot; online. Sadly my long time management source &lt;a href=&quot;http://threadsy.com&quot;&gt;Threadsy&lt;/a&gt; (I will miss you severely) is closing it&apos;s doors tomorrow, so it&apos;s time to tackle this issue anew.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s the problem. While I believe I have more &quot;geekish tendentices&quot; than most folks, I think most of us out there have a Facebook account, dabble a little in Twitter, have one (or more) e-mail accounts, and probably follow a few blogs of their friends (or news makers) and use some kind of RSS reader to handle that. The tricky part is how to handle all of this without having 8 web pages open on a daily basis. Way back in time, I was using an e-mail client for my Hotmail account, Firefox to read my Gmail online, a client based Feed reader for my news sources, and of course a couple more browser windows to access Twitter and Facebook. If I ever wasn&apos;t on my main computer, I&apos;d lose access to one of these features. It wasn&apos;t the end of the world, but each source of information is important to me in different ways, and I like to be able to see it.&lt;/p&gt;
&lt;p&gt;Currently I&apos;m using a combination of &lt;a href=&quot;http://threadsy.com&quot;&gt;Threadsy&lt;/a&gt; for e-mail/social networking and &lt;a href=&quot;http://netvibes.com&quot;&gt;Netvibes&lt;/a&gt; (in &quot;Reader Mode&quot;). Now that Threadsy is &lt;a href=&quot;http://blog.threadsy.com/2011/10/19/threadsy-will-be-shutting-down-on-november-2-2011/&quot;&gt;closing it&apos;s doors&lt;/a&gt;, it&apos;s time to find something to fill it&apos;s place. However, I think instead of simply finding something to fill it&apos;s shoes, it&apos;s time to take a fresh look at everything. Technology is a jack rabbit hyped up on coffee, and moves insanely fast. 2 years ago Twitter was still pretty new to the game in terms of recognition, and adoption. Facebook was becoming a well known name, and the Chrome browser was only about a year old. Smart phones were not as prevalent as they are now, and people never had even heard of HTML 5. I point all of this out to say that the playing field, and environment in which to leverage technology in, is quite a bit different. I think all but 2 of the solutions I looked at 2 years ago closed their doors.&lt;/p&gt;
&lt;p&gt;So let&apos;s start from scratch here. What do you use for your own &quot;lifestyle management&quot;? I&apos;m sure I&apos;m missing something great out there and want to know about it! I&apos;ll show you what I&apos;ve found over the next few days and hopefully there will be something worthwhile.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Halloween Trance By The Dance Chapel</title><link>https://dillieo.me/posts/development/2011-10-28-song-of-the-week-halloween-trance-by-the-dance-chapel/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-10-28-song-of-the-week-halloween-trance-by-the-dance-chapel/</guid><description>Pumkin by Mike Crug</description><pubDate>Fri, 28 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In honor of the upcoming holiday, I thought I&apos;d spread some &quot;spooky&quot; cheer, provided by the guy who got me into the house/trance scene, Carey Jarvis of &lt;a href=&quot;http://dancechapel.wordpress.com&quot;&gt;The Dance Chapel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s a great mix, and he even shared it on SoundCloud a while back.&lt;/p&gt;
&lt;p&gt;Enjoy and Happy Halloween!!!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Dont Get Around Much Anymore By Duke Ellington And Louie Armstrong</title><link>https://dillieo.me/posts/development/2011-10-21-song-of-the-week-dont-get-around-much-anymore-by-duke-ellington-and-louie-armstrong/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-10-21-song-of-the-week-dont-get-around-much-anymore-by-duke-ellington-and-louie-armstrong/</guid><description>Duke Ellington and Louie Armstrong</description><pubDate>Fri, 21 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s another one of those &quot;when two legends collaborate&quot; type song for this week.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;As you&apos;re already aware, Duke Ellington is my all time favorite jazz musician/composer. Louie Armstrong ranks right up there in the ranks as well. Most people know Louie for his singing voice (What a Wonderful World), but he&apos;s also an amazing trumpet player as well!&lt;/p&gt;
&lt;p&gt;Needless to say, I about fell over when I stumbled across this album one day. I also discovered later on that in the &lt;a href=&quot;http://open.spotify.com/album/1Fquufzod0wEcCXt6oYnCJ&quot;&gt;deluxe edition&lt;/a&gt;, you get a second disc with all the &quot;in studio&quot; edits. It feels like stepping into a time machine. I would have loved to have been a fly on that wall.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_44696&lt;/p&gt;
</content:encoded></item><item><title>The Tale Of The Pumpkin Mouse As Told By Rylee And Haylee</title><link>https://dillieo.me/posts/growth/2011-10-20-the-tale-of-the-pumpkin-mouse-as-told-by-rylee-and-haylee/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-10-20-the-tale-of-the-pumpkin-mouse-as-told-by-rylee-and-haylee/</guid><description>The Pumpkin Mouse</description><pubDate>Thu, 20 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The mouse was finding a home, because he was soaking wet. And it was raining. Then the sun came out. Then it started snowing. Then it started getting cold. It was Autumn.&lt;/p&gt;
&lt;p&gt;Then he found a cheese ax and chopped some wood. Then he ate the ax. Then the sun came out and he saw a pumpkin. Then he ate a hole in the top of the pumpkin. Then he ate inside. Then he had mouse friends to have a sleep over.&lt;/p&gt;
&lt;p&gt;They played and had games. They all got cheese axes and chopped ever piece of wood. Then they were so hungry they ate their axes. Then they had a pot. Then their mother mouse came.&lt;/p&gt;
&lt;p&gt;Then they lived happily ever after.&lt;/p&gt;
&lt;p&gt;The End.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Simple Iphoneipad Layout Changes In Phonegap</title><link>https://dillieo.me/posts/development/2011-10-19-quick-tip-simple-iphoneipad-layout-changes-in-phonegap/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-10-19-quick-tip-simple-iphoneipad-layout-changes-in-phonegap/</guid><description>Quick Tip Simple Iphoneipad Layout Changes In Phonegap</description><pubDate>Wed, 19 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So my sort of deep dark secret is that I &lt;a href=&quot;http://itunes.apple.com/us/app/l5r-honor-counter/id447910476?mt=8&quot;&gt;have one application&lt;/a&gt; in the iTunes App Store. It&apos;s a simple little counter for the &lt;a href=&quot;http://www.l5r.com/&quot;&gt;L5R CCG&lt;/a&gt; that I play with some friends. While there are performance issues going between pages, all in all I think it&apos;s a great and simple little app that shows off some great artwork from the game. I used &lt;a href=&quot;http://www.phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt; to put the application together quickly to be both compatible for iPhone and iPad, but there was one little trick to overcome along the way.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;What you probably already know is that when you start a new application, PhoneGap puts in a reference for two CSS files using CSS selectors, one for ipad.css and the other for iphone.css. Using CSS selectors to test for dimensions, the proper CSS is loaded for the device. If your layout is relatively simple, you can use this to leverage the exact same framework, but tweak it for each device. For instance, my clan logo is only 100px wide/high in the iPhone version, but with the added screen space I can make it 300px on the iPad version. No need for additional files or crazy logic, I simply create my &quot;honor box&quot; like this with HTML&lt;/p&gt;
&lt;p&gt;&amp;lt;fieldset id=&quot;BothMyHonorBox&quot; class=&quot;ui-grid-a&quot;&amp;gt; &amp;lt;div class=&quot;ui-block-a&quot;&amp;gt; &amp;lt;img id=&quot;BothMySeal&quot; src=&quot;L5R_Seal_Spider.png&quot; /&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;ui-block-b&quot;&amp;gt; &amp;lt;div id=&quot;BothMyHonorValueBox&quot;&amp;gt; &amp;lt;span id=&quot;BothMyHonorValue&quot;&amp;gt;0&amp;lt;/span&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/fieldset&amp;gt;&lt;/p&gt;
&lt;p&gt;and then I can format differently depending on my platform:&lt;/p&gt;
&lt;p&gt;In iphone.css&lt;/p&gt;
&lt;p&gt;#BothMyHonorBox { position: relative; top: 10px; }&lt;/p&gt;
&lt;p&gt;#BothMyHonorValueBox { position: absolute; top: 0px; right: 30px; text-align: center; background-image: url(&apos;L5R_Splatter.png&apos;); background-repeat: no-repeat; background-size: 100% 100%; width: 100px; height: 100px; }&lt;/p&gt;
&lt;p&gt;#BothMySeal { width: 100px; height: 100px; }&lt;/p&gt;
&lt;p&gt;...and in ipad.css&lt;/p&gt;
&lt;p&gt;#BothMyHonorBox { position: relative; top: 40px; }&lt;/p&gt;
&lt;p&gt;#BothMyHonorValueBox { position: absolute; top: 0px; right: 30px; text-align: center; background-image: url(&apos;L5R_Splatter.png&apos;); background-repeat: no-repeat; background-size: 100% 100%; width: 300px; height: 300px; }&lt;/p&gt;
&lt;p&gt;#BothMySeal { width: 300px; height: 300px; }&lt;/p&gt;
&lt;p&gt;One other thing you can do is to show/hide items for each layout. For instance, on this same page, I have a reset button along with a couple others all in a single line. In the iPad version of this, I have plenty of space. But due to width restrictions, I wanted my reset button to simply say &quot;R&quot; on the iPhone version. Instead of using some fancy JavaScript, to rewrite the button text depending on the version, I simply created two buttons:&lt;/p&gt;
&lt;p&gt;and then set the display in the appropriate CSS files.&lt;/p&gt;
&lt;p&gt;iphone.css&lt;/p&gt;
&lt;p&gt;#btnBothResetMyHonorLarge { display: none; }&lt;/p&gt;
&lt;p&gt;#btnBothResetMyHonor { display: inherit; }&lt;/p&gt;
&lt;p&gt;and ipad.css&lt;/p&gt;
&lt;p&gt;#btnBothResetMyHonor { display: none; }&lt;/p&gt;
&lt;p&gt;#btnBothResetMyHonorLarge { display: inherit; position: relative; right: 50px; }&lt;/p&gt;
&lt;p&gt;...and that&apos;s all there is to it!&lt;/p&gt;
&lt;p&gt;PhoneGap really is a great platform and small tricks like this make for rapid deployment across multiple platforms nice and easy. Now it&apos;s time to tackle Android!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Shameless Plug: You know, if you like L5R, or just want to toss 99 cents to &lt;a href=&quot;http://www.thedelightgroup.com/&quot;&gt;some guys&lt;/a&gt; to help them in their endeavors and get a nice counter in the process, why not &lt;a href=&quot;http://itunes.apple.com/us/app/l5r-honor-counter/id447910476?mt=8&quot;&gt;purchase a copy&lt;/a&gt; for yourself?!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: I no longer work for &lt;a href=&quot;http://www.thedelightgroup.com/&quot;&gt;The Delight Group&lt;/a&gt;, but am the author of the application.&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>What Cool Things Can I Do With My Droid</title><link>https://dillieo.me/posts/development/2011-10-13-what-cool-things-can-i-do-with-my-droid/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-10-13-what-cool-things-can-i-do-with-my-droid/</guid><description>Me with Fiver</description><pubDate>Thu, 13 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday we took the big step into the smartphone world. There&apos;s me with &quot;Fiver&quot; (named after a notable droid in the Star Wars NJO books) since I don&apos;t feel it proper to name it &quot;Artoo&quot; unless it really was one. 8^D&lt;/p&gt;
&lt;p&gt;Anyway, I&apos;m already getting my feet wet with some cool things on the Droid but am still really new to this. This is where I need your help.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Fiver is an &lt;a href=&quot;http://www.phonearena.com/phones/HTC-ThunderBolt_id4985&quot;&gt;HTC Thunderbolt&lt;/a&gt; and so far it has been living up to the hype. It feels only a little bit heavier than my iPod touch and I love the 8 megapixel camera on it for those random events in life. I&apos;ve always been a fan of the Sense UI that HTC provides, and I like how I can tweak out &quot;scenes&quot; so that when I go on my next work trip, I can swap over to the work scene and have easy access to two clocks (time zone changes), maps and other things. Plus I don&apos;t use &lt;a href=&quot;http://www.tripit.com/&quot;&gt;TripIt&lt;/a&gt; or other apps except for those times. Oddly enough, the flashlight is already a big help, especially since it uses the flash built into the camera to give better resolution.&lt;/p&gt;
&lt;p&gt;Outside of some of the &quot;standard fare&quot; apps (Kindle, Facebook, G+, etc.) here are the apps I&apos;ve discovered or installed from previous use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/oadboiipflhobonjjffjbfekfjcgkhco&quot;&gt;Chome to Phone&lt;/a&gt; - A friend ran this and I fell in love, find a recipe, zap it over to the phone to look at while cooking.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.google.com/mobile/skymap/&quot;&gt;Google Sky Map&lt;/a&gt; - Sadly it won&apos;t show me the &lt;a href=&quot;http://spacequest.wikia.com/wiki/Monolith_Burger&quot;&gt;Monolith Burger&lt;/a&gt; or the &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Restaurant_at_the_End_of_the_Universe&quot;&gt;Restaurant at the End of the Universe&lt;/a&gt;, but I love the night sky overlay for planets and constellations. I need to get me a telescope!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wordfeud.com/&quot;&gt;WordFeud&lt;/a&gt; - Started playing with some old work friends and now my wife and I can play. It&apos;s your typical scrabble, but far less invasive than Words with Friends.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/android&quot;&gt;Flickr&lt;/a&gt; - Sadly there&apos;s no Instagram for Android, but Flickr&apos;s app does a similar thing. I need to find a landing spot (Flickr, G+, Facebook) for my &quot;Filed under L for Life&quot; type photos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I know I&apos;m just hitting the tip of the iceberg with this stuff here, so I need your help!&lt;/p&gt;
&lt;p&gt;What kind of apps or cool things are you doing with your Droid? Do you know any cool tricks for the SenseUI itself? I&apos;d love to know!&lt;/p&gt;
&lt;p&gt;Many thanks in advance!&lt;/p&gt;
</content:encoded></item><item><title>Automatic User And Time Stamping In Entity Framework 4</title><link>https://dillieo.me/posts/development/2011-10-12-automatic-user-and-time-stamping-in-entity-framework-4/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-10-12-automatic-user-and-time-stamping-in-entity-framework-4/</guid><description>Computer Code</description><pubDate>Wed, 12 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I&apos;ve had the opportunity to really dig deep with &lt;a href=&quot;http://msdn.microsoft.com/en-us/data/aa937723&quot;&gt;Entity Framework 4&lt;/a&gt;. While I&apos;m not utilizing the &quot;Code First&quot; approach, I&apos;m still quite happy with now nice the Entity Model can take my existing database and build practically everything I need for my application&apos;s data layer, and most of my business layer. The one tricky thing to resolve still is automating the user/time stamping that we use to track changes in the application.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s a brief background. In most (if not all) of our database tables, we have the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;creator_id&lt;/li&gt;
&lt;li&gt;created_at&lt;/li&gt;
&lt;li&gt;updater_id&lt;/li&gt;
&lt;li&gt;updated_at&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&apos;ve probably seen this pattern before. I&apos;ve seen &quot;created_by&quot; as well that stores a string. Having these fields allows us to do some row auditing behind the scenes to see when a row was created, when it was last updated, and who performed such actions. In the past, I&apos;ve been able to automatically set these values to the current date/time and the user logged into the database, because we had impersonation setup for our applications. This was great because you could simply run your INSERT/UPDATE statements and ignore auditing, it was handled automatically.&lt;/p&gt;
&lt;p&gt;Let&apos;s flash forward now a little into Entity Framework, and our &quot;creator_id&quot; feature. With this new application, our auditing columns were set to reference a user Id. This does make things a bit easier to track backwards (via Foreign Key or other method) and users can update their user name without conflict. However, since we&apos;re not using impersonation with our application (and even if we did we couldn&apos;t impersonate an Id properly), being able to set this field automatically becomes a problem. When looking at the entity model generated, there exists a property within each field called &quot;StoredGeneratedPattern&quot; that you can change to &quot;Computed.&quot; If you do this, you tell the Framework not to worry about the field (even if it&apos;s required) because the database will auto compute this field for you. You can also set it to &quot;Identity&quot; in cases when you&apos;re working with auto incrementing type fields.&lt;/p&gt;
&lt;p&gt;This can solve our problem with our created/updated at fields, but it still doesn&apos;t solve our creator/updater id fields. In addition, there&apos;s apparently a bug in the EF4 entity designer that doesn&apos;t set your StoredGeneratedPattern field properly in the underlying XML. This might have been fixed by now (haven&apos;t found a definitive answer yet) and you have to manually code the XML yourself. This was a bit of a concern for me since every time you add a new table, you&apos;d have to recode the changes, and there are a good dozen or more tables that we use these auditing field with. After digging around StackOverflow and the MSDN sites a bit, I finally pieced together a solution that worked the best for our scenario.&lt;/p&gt;
&lt;p&gt;The key to the solution is that with the update to Entity Framework 4, a lot of the methods built into the ObjectContext can now be overridden. Since .Net allows us to do partial classes, we can extend our Entity Data Context and provide the necessary logic to set our values before the the database calls are made to insert or update the logic is done. To do this, we want to overwrite the context_SavingChanges method that exists in the for the context. Within this method, we can inspect which objects have been modified, and we can even figure out the type of entity being modified. For instance, you could iterate through the entities as such:&lt;/p&gt;
&lt;p&gt;It is as simple as that. We can automatically update our fields that we need. However, I have about a dozen tables, and potentially more, that I&apos;m going to need to modify the creator/updater fields for. Looking at my code above, I&apos;m going to have do a lot of type testing and custom logic for each type. However, the Entity Framework provides some powerful methods that allow us to dig into our entities without necessarily knowing what types they are. We make the assumption (or design) that any entity that has auditing that we need will have the columns in it that we listed above.&lt;/p&gt;
&lt;p&gt;With that design in place, and the added filtering that Entity Framework does to only give us the entities that have been modified or added, we can abstract our logic further. With that in mind, my solution was to create a partial class for our entity context class and register a method to overwrite the SavingChanges for the entity class. That method checks for our audit fields and sets the default values. The final code looked like this:&lt;/p&gt;
&lt;p&gt;using System; using System.Collections.Generic; using System.Data; using System.Data.Objects; using System.Web; using MyApp.BLL;&lt;/p&gt;
&lt;p&gt;namespace MyApp.DAL { public partial class AppEntities { partial void OnContextCreated() { this.SavingChanges += new EventHandler(context_SavingChanges); }&lt;/p&gt;
&lt;p&gt;private static void context_SavingChanges(object sender, EventArgs e) { // Find any new or modified entities using our user/timestampting // fields and update them accordingly. foreach (ObjectStateEntry entry in ((ObjectContext)sender).ObjectStateManager .GetObjectStateEntries (EntityState.Added | EntityState.Modified)) { // Only work with entities that have our user/timestamp records in them. if (!entry.IsRelationship) { CurrentValueRecord entryValues = entry.CurrentValues; if (entryValues.GetOrdinal(&quot;updater_id&quot;) &amp;gt; 0) { HttpContext currContext = HttpContext.Current; int userId = 0; DateTime now = DateTime.Now;&lt;/p&gt;
&lt;p&gt;if (currContext.User.Identity.IsAuthenticated) { if (currContext.Session[&quot;userId&quot;] != null) { userId = (int)currContext.Session[&quot;userId&quot;]; } else { // Call custom moethod to retrieve User ID userId = Security.GetUserId(currContext.User.Identity.Name); } }&lt;/p&gt;
&lt;p&gt;entryValues.SetInt32(entryValues.GetOrdinal(&quot;updater_id&quot;), userId); entryValues.SetDateTime(entryValues.GetOrdinal(&quot;updated_at&quot;), now);&lt;/p&gt;
&lt;p&gt;if (entry.State == EntityState.Added) { entryValues.SetInt32(entryValues.GetOrdinal(&quot;creator_id&quot;), userId); entryValues.SetDateTime(entryValues.GetOrdinal(&quot;created_at&quot;), now); } } } } } } }&lt;/p&gt;
&lt;p&gt;As long as I make sure all my database fields continue to use the fields listed above in our method, then it&apos;ll automatically update for any new tables that are placed into the entity model as well. If for some reason there are other columns or unique tables, I can customize things for those specific cases.&lt;/p&gt;
&lt;p&gt;I hope this helps. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Handy Sort Arrows In Your Gridview Without Css Or Graphics</title><link>https://dillieo.me/posts/development/2011-10-07-quick-tip-handy-sort-arrows-in-your-gridview-without-css-or-graphics/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-10-07-quick-tip-handy-sort-arrows-in-your-gridview-without-css-or-graphics/</guid><description>GridView with Arrows</description><pubDate>Fri, 07 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The nice thing about the GridView in .Net is that there is a plethora of built in controls that simply need enabling. One of them is Sorting. Simply set the AllowSorting property to &quot;true&quot; in your and then make sure to write up some code for the Sorting event to adjust your data source, and you&apos;re set.&lt;/p&gt;
&lt;p&gt;However, one tricky thing to work with is providing a friendly way to indicate which field is being sorted, and in which direction. I&apos;ve found a simple trick that uses no CSS or images whatsoever.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;They key here is that there is an extended ASCII character for both the up (▲) and down (▼) arrows that are readable by most, if not all, modern browsers. More importantly, they have their HTML friendly counterparts (&amp;amp; #9650;) and (&amp;amp; #9660;) available as well. Go ahead, you can copy and paste those somewhere for a quick reference. 8^D&lt;/p&gt;
&lt;p&gt;All we have to do at this point, is add the proper icon next to the column we&apos;re sorting as we&apos;re rendering the GridView. We do this in the RowDataBound event. Here&apos;s what my code looks like, and I&apos;ll explain it below:&lt;/p&gt;
&lt;p&gt;protected void gvVersions_RowDataBound(object sender, GridViewRowEventArgs e) {&lt;/p&gt;
&lt;p&gt;/* GridView Row has following column layout * 0 - Actions (Edit) * 1 - Revision * 2 - Updated By * 3 - Updated At * 4 - Field Changed * 5 - Old Value * 6 - New Value */&lt;/p&gt;
&lt;p&gt;if (e.Row.RowType == DataControlRowType.Header) { LinkButton sortLink; string sortBy = Session[&quot;sortColumn&quot;].ToString(); string sortDir = Session[&quot;sortDirection&quot;].ToString();&lt;/p&gt;
&lt;p&gt;// Use the HTML safe codes for the up arrow ▲ and down arrow ▼. string sortArrow = sortDir == &quot;ASC&quot; ? &quot;&amp;amp; #9650;&quot; : &quot;&amp;amp; #9660;&quot;;&lt;/p&gt;
&lt;p&gt;// GridView rows with sortable columns will have a linkbutton // generated. Compare to the CommandArgument since this is what // we set our sortColumn based on. foreach (System.Web.UI.WebControls.TableCell currCell in e.Row.Cells) { if (currCell.HasControls()) { sortLink = ((LinkButton) currCell.Controls[0]); if (sortLink.CommandArgument == sortBy) { sortLink.Text = sortLink.Text + &quot; &quot; + sortArrow; } } } }&lt;/p&gt;
&lt;p&gt;if (e.Row.RowType == DataControlRowType.DataRow) { VersionLog versionLog = (VersionLog) e.Row.DataItem; e.Row.Cells[1].Text = versionLog.version.ToString(); e.Row.Cells[2].Text = versionLog.updatedBy; e.Row.Cells[3].Text = versionLog.updatedAt.ToString(&quot;MM/dd/yyyy hh:mm:ss tt&quot;); e.Row.Cells[4].Text = versionLog.fieldChanged;&lt;/p&gt;
&lt;p&gt;if (versionLog.oldValue != null) { e.Row.Cells[5].Text = versionLog.oldValue; }&lt;/p&gt;
&lt;p&gt;if (versionLog.newValue != null) { e.Row.Cells[6].Text = versionLog.newValue; } } }&lt;/p&gt;
&lt;p&gt;So let&apos;s take a quick peek at what&apos;s going on here. If we&apos;re dealing with our header row, we pull the sorting column and direction out of some session variables that are stored. Sadly the GridView doesn&apos;t handle sorting by direction well when you do your own custom binding, so the session works best. Next we set our arrow code based on the direction of the sort. I use the HTML based codes so that it will render nice in the browser. Some browsers may not recognize the ASCII, so its best to use the HTML.&lt;/p&gt;
&lt;p&gt;For each column in our GridView, if the column has a SortExpression value assigned to it, a LinkButton control is created to handle it. In our case, we want to check the CommandArgument value of the LinkButton created, and not the text, because I often use friendly names for the text, such as &quot;Updated By&quot; when the underlying data field is &quot;updated_by&quot; or something else. In cells where we have a control, I grab the first (and typically only) control, and look at it&apos;s CommandArgument. If it matches the current sorting column, I simply append the arrow to the text and move along. Our DataRows do their typical binding of values from our DataItem.&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it! If you click the image at the top of the page, you&apos;ll see a simple GridView, with a nice arrow sitting next to it to indicate the sort direction, without the use of CSS manipulation or even additional graphics.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: In the text and example above, there is a space between the &amp;amp; and the #9650; values since putting them together will render the arrow again on the page instead of the code. Make sure to close that gap again in your own code. 8^D&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Never Alone Acoustic By Barlowgirl</title><link>https://dillieo.me/posts/development/2011-09-30-song-of-the-week-never-alone-acoustic-by-barlowgirl/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-09-30-song-of-the-week-never-alone-acoustic-by-barlowgirl/</guid><description>Another Journal Entry Cover</description><pubDate>Fri, 30 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not much to say this week, great vocals, powerful lyrics, wonderful acoustic blend. Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_77583&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Bedrock Anthem By Weird Al Yankovic</title><link>https://dillieo.me/posts/development/2011-09-23-song-of-the-week-bedrock-anthem-by-weird-al-yankovic/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-09-23-song-of-the-week-bedrock-anthem-by-weird-al-yankovic/</guid><description>Weird Al - Alapalooza</description><pubDate>Fri, 23 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes I wonder what is better, a really good song, or a really good parody of that song. Weird Al has been the king of parody since I was just a kid.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;He truly amazes me with how he stays on top of pop culture and music and makes hilarious parodies of things. He also has a knack for playing the accordion extremely well and writing his own songs. While there are TONS of parodies in his library, this one is still one of my all time favorites. It&apos;s a parody of two Red Hot Chili Pepper songs (&lt;em&gt;Under the Bridge&lt;/em&gt; and &lt;em&gt;Give it Away&lt;/em&gt;), but done with a Flintstones theme in mind.&lt;/p&gt;
&lt;p&gt;Get your Al on and enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_61542&lt;/p&gt;
</content:encoded></item><item><title>The Softwire Series By Pj Haarsma Go Read It Now</title><link>https://dillieo.me/posts/growth/2011-09-21-the-softwire-series-by-pj-haarsma-go-read-it-now/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-09-21-the-softwire-series-by-pj-haarsma-go-read-it-now/</guid><description>Softwire Series</description><pubDate>Wed, 21 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ll admit that my speed reading days for books left me in college. Even with my fun books that I read, it can take me a several days to finish one off. So when I go through a four book series in roughly a week (not counting the shipping time or waiting time at the library, you know it&apos;s got to be amazing.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Oddly enough, I have to thank &lt;a href=&quot;http://twitter.com/NathanFillion&quot;&gt;Nathon Filion&lt;/a&gt; for tweeting a link for a free digital copy of the first book (Virus on Orbis 1). Nathan, if you&apos;re ever in Prescott, AZ, I owe you a drink! The brief synopsis from &lt;a href=&quot;http://www.pjhaarsma.com/&quot;&gt;P.J. Haarsma&apos;s site&lt;/a&gt; (the author) really hooked me in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Thirteen-year-old Johnny Turnbull has always known there was something different about him, even before he and two hundred other kids landed on the first ring of Orbis. But once their spaceship lands, he is identified as the first-ever &quot;softwire&quot; -- a human with the ability to enter and communicate with computers through his mind -- and becomes the focus of intergalactic intrigue. Johnny and the rest of the refugee orphans are put to work in alien factories, and very quickly things go very wrong. When the all-knowing, all-controlling, and technologically &quot;perfect&quot; central computer starts malfunctioning, suspicious eyes turn to Johnny. Is he the one responsible? This action-packed, fast-paced sci-fi novel will keep kids on the edge of their seats.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For this computer geek, the direct interface into a computer hooked me in instantly. Shoot, I would love to have something like that! I wonder how fast I could sling out web apps that way?! Through the first book you&apos;re introduced to this amazing new world, with aliens that have been around forever, a few factions within them. The book takes you on a very fun adventure, and really captures the mystery and adjustment to a world completely different than your own.&lt;/p&gt;
&lt;p&gt;But by the end of Book 1, you realize that everything isn&apos;t quite as Utopian as you would like them to be. Through the next 3 books, you&apos;re taken deeper and deeper into the Rings of Orbis, its deep history, and how Johnny (JT) and his sister play into it. You&apos;re also taken into a lot of turmoil and grief that the &quot;knudnicks&quot; on Orbis are subjected to. The entire series does a great job at working through the struggles of class divisions between the elite and the poor.&lt;/p&gt;
&lt;p&gt;On top of this is the transformation of JT himself. Starting out as a bright eyed, energetic 15 year old, he&apos;s quickly given a large amount of responsibility because of his talents. He also has the entire universe looking over his shoulder, which causes a lot of struggles. But JT&apos;s struggles go even deeper, dealing with free will vs. fate, sacrifice, and a whole range of emotions. There was so much going on by the fourth installment that I wasn&apos;t sure how Haarsma would resolve it all, and do it in a manner that stuck with the whole of the story, but he did it amazingly well. There was even a small amount of romance and tragedy mixed in to the whole story that fit perfectly.&lt;/p&gt;
&lt;p&gt;I&apos;ll admit that this is a rather abbreviated and scattered review of the book, but my mind is still racing from all of the tech, adventure, and thought provoking things this book brought out. I also don&apos;t want to spoil the surprises that occur along the way! I should also point out that the book is initially targeted for the 10 year old range, but it is written so well that adults (or really big geeky kids like me) will enjoy it thoroughly. If you still aren&apos;t convinced, and have a Kindle, I believe I can even use the loan feature to let you borrow mine for a couple of weeks, and then you&apos;ll have to get the rest for yourself. 8^D&lt;/p&gt;
&lt;p&gt;Mr. Haarsma, if you&apos;re ever in Prescott, I owe you a couple of drinks, and maybe a little discussion on the series as well!&lt;/p&gt;
</content:encoded></item><item><title>Farewell Grandma</title><link>https://dillieo.me/posts/growth/2011-09-16-farewell-grandma/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-09-16-farewell-grandma/</guid><description>Grandma and Family</description><pubDate>Fri, 16 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The way we see it, my Grandma decided to leave this world on Sunday that way she could spend her 86th birthday in heaven with the Lord, my Grandpa, and my Dad.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;While I think my &lt;a href=&quot;/old-age-is-not-for-sissies&quot;&gt;Grandfather&apos;s passing&lt;/a&gt; was a lot more unexpected than Grandma&apos;s, hers was a lot more of a relief. She had been suffering from dementia for a while, so there was a lot of people she didn&apos;t recognize anymore, and the stroke that she had had 15 years ago finally caught up to her. But as an old friend of her&apos;s said over the phone, &quot;The Lord is Merciful.&quot; and he certainly is. She went peacefully, and my mom and the pastor were there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-09-img_1037.jpg&quot; alt=&quot;Grandma and Grandpa&quot; title=&quot;Grandma and Grandpa&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was hard to narrow down some specific memories about Grandma that were my favorite, but one of them was that she loved to hear me play the piano. I considered it a special treat when I got to come over and read through some of her music books, and she would give me some pointers along the way. Music was a big thing for her and I was able to be a part of this family tradition as well.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-09-img_1038.jpg&quot; alt=&quot;Me and Grandma&quot; title=&quot;Me and Grandma&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The second was that she taught me needlepoint. Yep, needlepoint isn&apos;t supposed to be &quot;manly&quot; or anything, but I&apos;ll admit I made quite a few gifts by hand over the years thanks to it and it was another thing my Grandma loved to do. She&apos;d be happy to know that my brother recently took 3rd place in a county fair with some of his work, all thanks to Grandma.&lt;/p&gt;
&lt;p&gt;The final one was a more recent one from a few years back. Grandma&apos;s speech had been going down hill and some days she would speak and some days she wouldn&apos;t. We had come out for a visit as the entire family and the girls were about 3. They always kept books with them and one of their favorites was a cardboard book that had a bunch of farm animals in it. Rylee had brought it over to Grandma to read. We put Rylee in her lap and with the best voice she could muster at the time, she read the book to Rylee. Grandma&apos;s voice was a little slow and crackly at times, but she read the whole book to her, and my heart melted. Not too many people these days have the blessing of growing up next door to their grandparents, and even rarer is some quality time with their great grandparents. I&apos;m quite fortunate that both of these have happened in my life.&lt;/p&gt;
&lt;p&gt;On Wednesday, her 86th birthday, we had a small service at her church. There weren&apos;t a lot of people there, but it was a small and sweet service. Amidst some tears we celebrated grandma&apos;s life, and the new life she has now. I was able to hear some crazy and wonderful stories from people that knew her a lot longer than I&apos;ve been alive. I got to see some family, and it was a good time. Farewell Grandma. I&apos;ll miss you since you&apos;re not here, but I&apos;m happy that you&apos;re in a far better place and that I&apos;ll see you again.&lt;/p&gt;
&lt;p&gt;On a lighter note, this visit did bring a few additional smiles.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-09-img_1065.jpg&quot; alt=&quot;Kona the Kitten&quot; title=&quot;Kona the Kitten&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-09-img_1066.jpg&quot; alt=&quot;Patterson 3.0&quot; title=&quot;Patterson 3.0&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I think my cousin Maria put it best when she reflected in an e-mail...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Life is eternal, and love is immortal, and death is only a horizon; and a horizon is nothing save the limit of our sight.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Why Do You Work How Do You Work</title><link>https://dillieo.me/posts/growth/2011-09-08-why-do-you-work-how-do-you-work/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-09-08-why-do-you-work-how-do-you-work/</guid><description>Old Work Boots</description><pubDate>Thu, 08 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chuck Colson did a &lt;a href=&quot;http://www.breakpoint.org/bpcommentaries/entry/13/17762&quot;&gt;Breakpoint Commentary&lt;/a&gt; at the beginning of the week that I didn&apos;t get a chance to listen to until this morning. He gave some really good insight on work and how we should view it. Take a couple minutes out to give this a listen. It&apos;s very thought provoking.&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_80652&lt;/p&gt;
</content:encoded></item><item><title>The Remote Worker Three Months In</title><link>https://dillieo.me/posts/growth/2011-09-06-the-remote-worker-three-months-in/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-09-06-the-remote-worker-three-months-in/</guid><description>My home office</description><pubDate>Tue, 06 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So in the blink of an eye, I&apos;ve started up with my third months now working for &lt;a href=&quot;http://freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt;. While I&apos;m not planning on giving a month to month report on the live of a telecommuter, I did have some more notable experiences I thought was worth sharing...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The office has been &quot;updated&quot; a bit more to include some bookshelves as we reorgainzed Jen&apos;s office to make room for Tony.&lt;/li&gt;
&lt;li&gt;I helped push out two major site updates over the past month.&lt;/li&gt;
&lt;li&gt;I missed a deadline, and I missed it bad. That&apos;s worth another blog post about lessons learned.&lt;/li&gt;
&lt;li&gt;I&apos;ve gotten plugged in a bit with the PyroCMS community and my student module has garnered some good lessons learned a few thanks along the way.&lt;/li&gt;
&lt;li&gt;I figured out a trick to generate a timeline based report doing some count analysis that runs on SQL Server.&lt;/li&gt;
&lt;li&gt;I&apos;m still struggling to find the right profile setup for my Virtual Machine. Sometimes I can get a really bad slowdown if I don&apos;t do things right.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m rather excited with myself and the ability to swap languages on the fly. One late afternoon, after pounding through PHP/MySQL land for the day, the reporting issue (mentioned above) came up and I had to jump into my SQL Server mode. It wasn&apos;t the largest change in the world, but it still required some mental shifting that I hadn&apos;t done much of before.&lt;/p&gt;
&lt;p&gt;Fresh has really turned out to be a great place to work for and I&apos;m glad I made the switch. There are those nights where things have been a little crazy and I&apos;m up until midnight, but hey, that&apos;s what most folks go through, right? I have a lot more flexibility, I get to work with some new technology and build solutions for some really good clients out there. My fellow programmer and I get along great, and haven&apos;t had any major issues when trying to debug a situation, which is a huge benefit. I&apos;m excited to be up here to do some face to face work with the team before heading back.&lt;/p&gt;
&lt;p&gt;Though probably the most important think I learned came from this morning and the value of a good face to face video chat with the family. It was good to see them all and amazing how something as simple as turning your laptop upside down and pretending to be hanging on for dear life can make kids laugh so hard. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Linus And Lucy By Vince Guraldi</title><link>https://dillieo.me/posts/life/2011-09-02-song-of-the-week-linus-and-lucy-by-vince-guraldi/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2011-09-02-song-of-the-week-linus-and-lucy-by-vince-guraldi/</guid><description>Snoopy</description><pubDate>Fri, 02 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In honor of my wife&apos;s birthday, I thought I&apos;d toss in a family favorite song, especially since it was in one of the cards she received too...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Nothing much else to say other than this song is a classic.&lt;/p&gt;
&lt;p&gt;I love you honnie! Happy Birthday!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_88250&lt;/p&gt;
&lt;p&gt;Don&apos;t forget the Snoopy dance!!!&lt;/p&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=hUQX2B67KL4]&lt;/p&gt;
</content:encoded></item><item><title>Our Newest Family Member Tony</title><link>https://dillieo.me/posts/growth/2011-08-29-our-newest-family-member-tony/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-29-our-newest-family-member-tony/</guid><description>Big Family</description><pubDate>Mon, 29 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Over the weekend we invited somebody new into our family for the year. Meet Tony! A 17 year old student from Taiwan!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Tony is part of the foreign exchange program that I&apos;m sure you&apos;ve heard about somewhere at sometime. We were nervous at first about having somebody new in the house, but we were able to meet Tony a couple of times beforehand and fell in love with him instantly. He&apos;s very friendly, gets along with the girls wonderfully, and VERY helpful around the house with the dishes and cleaning. He expressed an interest in learning to cook and bake, so he helped make some &quot;Smashed Potato Soup&quot; and &quot;No bake chocolate cookies&quot; over the weekend.&lt;/p&gt;
&lt;p&gt;We&apos;re excited about the opportunity we can give Tony. The family he was staying at previously was living in Skull Valley, which was about 30 minutes out of town. A lot of the opportunities available to him weren&apos;t feasible, due to the long drives times. Now he&apos;s 2 minutes from the bus stop, and we live about 10 minutes away from the High School. On Friday he was able to stay late to go to the football game, then we picked him up and took him home.&lt;/p&gt;
&lt;p&gt;We look forward to what we can learn from him and his culture, as well as being able to &quot;pay it forward.&quot; I remember back in college when I was able to spend a couple of summers in France doing volunteer work with a missions organization. I had such a wonderful time and learned so much. However, I wouldn&apos;t have been able to do it without a family warm enough to open up their home to me.&lt;/p&gt;
&lt;p&gt;So here&apos;s to Tony and all the new adventures our family will have!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-08-big-family-silly.jpg&quot; alt=&quot;Silly Family Shot&quot; title=&quot;Big Family Silly&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-08-big-family-artsy.jpg&quot; alt=&quot;Big Family Artsy&quot; title=&quot;Big Family Artsy&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Red Light Blue Light By Harry Connick Jr</title><link>https://dillieo.me/posts/development/2011-08-26-song-of-the-week-red-light-blue-light-by-harry-connick-jr/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-26-song-of-the-week-red-light-blue-light-by-harry-connick-jr/</guid><description>Red Light, Blue Light</description><pubDate>Fri, 26 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I truly think that Harry Connick Jr. is the Frank Sinatra of my generation (or maybe tecnically a generation ahead 8^D). He has such a smooth voice, but lots of style, and can puts his own New Orleans flair on a lot of songs he does. Here&apos;s the very first song I heard by him, and it made me fall immediately in love with him.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It was a late night after a youth group outing and we were all waiting for our parents to pick us up. I was just getting into jazz music, and had heard instrumental stuff, but nothing vocal yet. So late at night, watching the stars in the hatchback trunk of my friend&apos;s car, he put on this album. First I&apos;m greeted with some nice mellow swing, followed by a screaming trumpet &lt;em&gt;[AMAZING]&lt;/em&gt;, then a smooth voice, and the rest was history.&lt;/p&gt;
&lt;p&gt;Harry has put out a LOT of albums since then, and I own quite a few of them, and it is great to see how his style has progressed, but stil kept that &quot;classic&quot; feel.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_88070&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Generating A Time Interval Based Count Report In Tsql</title><link>https://dillieo.me/posts/development/2011-08-25-soup-to-nuts-generating-a-time-interval-based-count-report-in-tsql/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-25-soup-to-nuts-generating-a-time-interval-based-count-report-in-tsql/</guid><description>Soup to Nuts - The Complete Package</description><pubDate>Thu, 25 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;At the beginning of the week I was tasked with generating a count based report of various records. The tricky part to this was that the report needed to be based over a certain period of time and in a 30 minute time interval. In other words, they wanted to see a report that looked something like.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Time Count 0:00:00 1 0:30:00 1 1:00:00 5 1:30:00 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;...and so on.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The other little caveat to this was that ideally I needed to do this without having to create any tables in the database, since we wanted to keep as little a footprint as possible against the actual data in the system. Since we&apos;re using SQL Server 2005 in this case, we can leverage table variables and be able to dynamically generate data we need to join with without physically creating a table in the system. It also allows us a little more flexibility with our interval and date ranges.&lt;/p&gt;
&lt;p&gt;We create a procedure that returns a table as its result set so we can easily call an INSERT INTO against the procedure to generate our data. It looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(@start DATETIME, @end DATETIME, @interval INT) AS

DECLARE @dt DATETIME, @dtEnd DATETIME, @dtnext DATETIME DECLARE @results TABLE(timeinterval DATETIME)

SET @dt = @start SET @dtEnd = @end SET @dtnext = @start

WHILE @dtnext &amp;amp;lt;= @end BEGIN INSERT INTO @results(timeinterval) VALUES(@dtnext) SET @dtnext = dateadd(minute, @interval, @dtnext) END

SELECT \* FROM @results

Since we need our report to be generated in time intervals, we need a function that will be able to round our datetime values as needed.

(@Time DATETIME, @RoundTo FLOAT) RETURNS DATETIME AS

BEGIN DECLARE @RoundedTime smalldatetime DECLARE @Multiplier float

SET @Multiplier = 24.0 / @RoundTo

SET @RoundedTime= ROUND(CAST(CAST(CONVERT(VARCHAR, @Time, 121) AS DATETIME) AS FLOAT) \* @Multiplier, 0) / @Multiplier RETURN @RoundedTime END
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wow, that&apos;s a lot of cast manipulation there!!! Yes it is. We need to convert our passed in date into the canoncial yyyy-mm-dd hh:mi:ss.mmm style format so that we can convert it into a float format in order to do the proper rounding. It&apos;s crazy, but I dug into a few resources to make sure it work.&lt;/p&gt;
&lt;p&gt;In our reports, we&apos;re looking at taking counts of records that were created or updated within our date range. Since we need to do the rounding against our date values, and we&apos;re grouping our results based on the time interval, there&apos;s no easy way to grab every column I need in a single query. Instead, I had to create a procedure for each column I was looking at and process the value. However, for my final results, I CAN group them based off the column name as well, so for each column I have a procedure that looks like this.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(@start DATETIME, @end DATETIME) AS

SELECT Z.rounded_time, COUNT(\*) AS round_count, &apos;applications_created_at&apos; AS column_name FROM ( SELECT dbo.RoundTime(created_at, .5) AS rounded_time FROM applications ) AS Z WHERE rounded_time BETWEEN @start AND @end GROUP BY z.rounded_time ORDER BY rounded_time DESC

I have a second procedure to handle the updated column.

Finally, we put our procedures and functions together to generate the report.

(@start DATETIME, @end DATETIME, @interval INT) AS

DECLARE @TimeIntervals TABLE(timeinterval DATETIME) DECLARE @UpdateCounts TABLE(rounded_time DATETIME, roundcount INT, column_name VARCHAR(200))

INSERT INTO @TimeIntervals EXEC dbo.TimeIntervalTable @start, @end, @interval

INSERT INTO @UpdateCounts EXEC dbo.GetApplicationsCreatedAtCounts @start, @end INSERT INTO @UpdateCounts EXEC dbo.GetApplicationsUpdatedAtCounts @start, @end

SELECT t.timeinterval AS time_slot, CASE WHEN u.roundcount IS NULL THEN 0 ELSE u.roundcount END AS update_count, CASE WHEN u.roundcount IS NULL THEN &apos;None&apos; ELSE u.column_name END AS column_name FROM @TimeIntervals t LEFT OUTER JOIN @UpdateCounts u ON u.rounded_time = t.timeinterval ORDER BY t.timeinterval ASC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&apos;s take a peek at what we&apos;re doing here. First we declare our time interval table and our update counts tables. We fill our time interval table based on the parameters we&apos;ve specified when we called the procedure. Then we fill our UpdateCounts table using our custom generated procedures. Note that each procedure will insert a time (rounded), a count, and the column name we pulled it from. We could continue this for as many columns as we need, provided we keep the format going. Then we join these two tables together to provide our final report. We do a little bit of &quot;prettifying&quot; the procedure by setting our count value to 0 and our column name to &apos;None&apos; when we encounter a NULL value (occurs from our GetXCount procedure).&lt;/p&gt;
&lt;p&gt;Running the procedure, and taking a snapshot of some of the results, we see something like that.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2011-08-04 09:00:00.0 0 None 
2011-08-04 09:30:00.0 0 None 
2011-08-04 10:00:00.0 0 None 
2011-08-04 10:30:00.0 0 None 
2011-08-04 11:00:00.0 1 created_at 
2011-08-04 11:30:00.0 29 updated_at 
2011-08-04 11:30:00.0 18 created_at 
2011-08-04 12:00:00.0 2 updated_at 
2011-08-04 12:30:00.0 0 None 
2011-08-04 13:00:00.0 1 created_at 
2011-08-04 13:30:00.0 1 created_at 
2011-08-04 13:30:00.0 2 updated_at
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can see that the results are nice and clean. It would be great to &quot;pivot&quot; the results in some manner, so that you have each column_name as a separate column with the count, but it is easy enough to transition that over to some final results, or even and excel spreadsheet. There&apos;s definitely some room for improvement. Ideally it would be nice to have procedure that would dynamically specify a column to get a count for, but I believe using a column name as a variable is something that can&apos;t be done in SQL Server (or others for that matter). In addition, if there was a way to split the column_name field into its own column when generating the results, you can quickly make a nice spreadsheet presentation with your results.&lt;/p&gt;
&lt;p&gt;That said, this report setup has been used by us twice now, and had done a great job and being able to send diagnostic information off to our clients about activity in their database. There&apos;s a &lt;a href=&quot;https://github.com/Dillie-O/SQLServer-TimeInterval-Reports&quot;&gt;github repository&lt;/a&gt; setup for you if you want to download or contribute to the code. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>First Day Of Kindergarten</title><link>https://dillieo.me/posts/growth/2011-08-24-first-day-of-kindergarten/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-24-first-day-of-kindergarten/</guid><description>Girls on Doorstep</description><pubDate>Wed, 24 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday was the girls&apos; first day of Kindergarten. Needless to say, there was a wide range of emotions involved in the day.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;It started out with nerves for me. We had this whole routine in place to make sure they were dressed, had their chores done (making their beds, letting the ducks out, checking for eggs, brushing teeth, etc.) and I was worried we wouldn&apos;t get everything done in time. I also was frantic because I made oatmeal for breakfast, and the last thing we needed was a spill on the pretty dresses they were wearing! There was one small spill, but it was easily remedied, and all my worries were for naught. We got out on time, showed up at school earlier than expected, and got to see the playground and the teacher a bit before the opening ceremony started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-08-img_0825-e1314207573626.jpg&quot; alt=&quot;Mommy and her Kindergarten Girls&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Mommy and her Kindergarten Girls&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-08-img_08261-e1314208223122.jpg&quot; alt=&quot;Family off to Kindergarten&quot; title=&quot;Family off to Kindergarten&quot; /&gt;&lt;/p&gt;
&lt;p&gt;To some degree, I felt like it was school all over again for me too. There were some boys over by a tree throwing around the fruits, typical type antics. Some returning kids were catching up on the summer with their friends. There were kids of all ages running around the playground and as I followed my daughters around, I wondered how many of them they would meet and be friends with. I wonder which ones would say &quot;hi&quot; back when they greeted them? How many kids have such friendly souls as my girls, eager to meet new people? What a HUGE world they are entering into! School has it&apos;s own &quot;world&quot; and they were jumping right into it. It felt a little overwhelming.&lt;/p&gt;
&lt;p&gt;Eventually we finished the opening ceremonies, we went back to their classroom, and after a little song and poem, we left the girls to continue on their day, and I was immensely excited for them. There&apos;s so much for them to learn and discover, and now they&apos;ll have a new venue in which to learn, outside of what we do with them throughout the day. I always loved school, and still love to learn, and hopefully this excitement and thirst for knowledge will pass on to them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-08-img_0839.jpg&quot; alt=&quot;Rylee Getting up from her Table&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Rylee Getting up from her Table&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-08-img_0838.jpg&quot; alt=&quot;Haylee at her Table&quot; title=&quot;Haylee at her Table&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What amazing times!&lt;/p&gt;
</content:encoded></item><item><title>Fixed Thickbox Not Working With Multiple Images</title><link>https://dillieo.me/posts/development/2011-08-22-fixed-thickbox-not-working-with-multiple-images/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-22-fixed-thickbox-not-working-with-multiple-images/</guid><description>jQuery Logo</description><pubDate>Mon, 22 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is really a triple Hat Tip (HT to my wife for dealing with this issue, HT to &lt;a href=&quot;http://websitedesign.websitesinaflash.com/2009/07/jquery-thickbox-gallery-images-not-working/&quot;&gt;Websites in a Flash&lt;/a&gt; where the solution was found, HT to &lt;a href=&quot;http://www.stuffbysarah.net/2009/02/16/thickbox-and-jquery-131/&quot;&gt;Stuff by Sarah&lt;/a&gt; where the original solution was found), but it bears repeating again.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My wife is using &lt;a href=&quot;http://jquery.com/demo/thickbox/&quot;&gt;Thickbox&lt;/a&gt; to display some magazine article scans on a page she maintains for a client. Even though Thickbox is no longer supported, it is still a great library and it&apos;s hard to find something that does things in a similar fashion so quickly and easily.&lt;/p&gt;
&lt;p&gt;That said, for some reason the gallery implementation of images was not working. The way it works is that you can have multiple image links grouped together using the &quot;rel&quot; tag in your links and Thickbox will grab all of the related images and put them together. That way when you click to view the englarged image, you have a nice &quot;previous&quot; and &quot;next&quot; navigation control built in to view the related items.&lt;/p&gt;
&lt;p&gt;This wasn&apos;t working. The image loader would appear, but nothing would happen, and there was much weeping and gnashing of teeth to ensue.&lt;/p&gt;
&lt;p&gt;Fortunately the solution was a simple, but nuanced in finding it.&lt;/p&gt;
&lt;p&gt;From jQuery 1.3.1 and beyond, the way the selector works was slightly changed. You used to have to use the @ symbol as part of your selector for the rel tag, but that is no longer necessary. So with Thickbox, if you have the &quot;standard&quot; formatted file, simply drop down to line 79 and change:&lt;/p&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;p&gt;If you&apos;re using a &quot;minified&quot; version of Thickbox (everything is super compressed and has a lot of 1 letter variables, do a search within the file and change&lt;/p&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;p&gt;and you&apos;re all set!&lt;/p&gt;
&lt;p&gt;Hopefully you&apos;ll stumble across this before many hours of headaches ensue. Thanks again to the folks above for making my wife&apos;s misery go away!!!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Summer Camp Romance By Everybodyduck</title><link>https://dillieo.me/posts/growth/2011-08-19-song-of-the-week-summer-camp-romance-by-everybodyduck/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-19-song-of-the-week-summer-camp-romance-by-everybodyduck/</guid><description>Everybodyduck 8 Seconds on a Holy Cow</description><pubDate>Fri, 19 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I spent nearly every summer since the 4th grade through college going to church camp for a weekend. It was a great time. Meeting new people, doing crazy things (capture the flag under the moonlight) and being in the mountains (flee the desert heat!). My senior year in high school, the band that was playing at camp was named everybodyduck. I fell in love with them immediately. They had some very fun and quirky songs, but it always came around in the end with a very poignant and applicable statement that the song was getting at.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Case in point, the song &lt;em&gt;Summer Camp Romance&lt;/em&gt;. This song actually came out by the time I was in college, and had the privilege of being a camp counselor. Being on the other end of the &quot;camp scene&quot; really opened up my eyes to all the shenanigans we &quot;kids&quot; went through, and the song captures the entire &quot;summer love in a week&quot; scenario perfectly. Take for instance some of the following lyrics in the song:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;well your friends said that my friends said you said I said I had kissed you well I didn&apos;t and I haven&apos;t but I wish &apos;cause you&apos;re a fox so I passed your friends a note I wrote I hope that it gets to you. I wrote, &quot;If you want to go steady, sugar, please just check that box.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;or even the chorus...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I don&apos;t want to hear you have a boy(girl)friend back at home please don&apos;t tell me you want to be friends you&apos;re the only (boy/girl) that I could love this week so come on baby please give love a chance it&apos;s clear to me this year you&apos;ll be my summer camp romance&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and of course the epic end of the week...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(guy) bags all packed we come too soon to our final farewell (girl) we&apos;re both tempted to lie and say we&apos;ll write (guy) instead I say, &quot;I hate you&quot; (girl) so then I say that you smell (both) There&apos;s nothing more memorable than that last day break-up fight.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But the BEST part of the song is the end, where it all gets tied together to the more important things in life. I&apos;ll let you take a listen to get that part.&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_88817&lt;/p&gt;
&lt;p&gt;P.S. Oh yeah, then I found out that the bass player is a pastor at the church I go to... 8^D&lt;/p&gt;
</content:encoded></item><item><title>Integrating The Nivo Slider Into A Codeigniter Site</title><link>https://dillieo.me/posts/development/2011-08-18-integrating-the-nivo-slider-into-a-codeigniter-site/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-18-integrating-the-nivo-slider-into-a-codeigniter-site/</guid><description>Soup to Nuts - The Complete Package</description><pubDate>Thu, 18 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday&apos;s adventure in coding involved getting a slider type control integrated into the site we&apos;re redesigning. We&apos;re taking the old system that was PHP based with its own &quot;templating&quot; sytem and putting into &lt;a href=&quot;http://codeigniter.com&quot;&gt;CodeIgniter&lt;/a&gt;, which is the MVC framework that &lt;a href=&quot;http://pyrocms.com&quot;&gt;PyroCMS&lt;/a&gt; is based off of (if you remember &lt;a href=&quot;/soup-to-nuts-extending-the-user-module-in-pyrocms&quot;&gt;my post from last week&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;This new site features a lot of video, and there is a &quot;slider&quot; on the front of the page that cycles through the recent videos available. The current slider we have is functional, but out of date, and since we have &lt;a href=&quot;http://jquery.com&quot;&gt;jQuery&lt;/a&gt; at our disposal with the new site, I figured getting an existing solution that was easy to integrate and modify was in order.&lt;/p&gt;
&lt;p&gt;Enter the &lt;a href=&quot;http://nivo.dev7studios.com/&quot;&gt;Nivo Slider&lt;/a&gt;. I&apos;ve worked with this slider at my old job, and really liked how you could get a basic slider off the ground really quick, but also had a lot of easy ways to extend and customize it, by using your own stylesheets or even writing your own Javascript code through some triggered events, such as when a new slide came in.&lt;/p&gt;
&lt;p&gt;In order to make this MVC friendly to go with CodeIgniter, then plan is to create a View that has our slider HTML code in it. We can then use our video model to retrieve the videos we need. The controller on which our page resides simply needs to retrieve the desired videos and put them in the template data. Since our video objects have lots of details in them, and our image code needs a few indexing keywords in it, I decided to create a helper class that would do the &quot;processing&quot; of our videos in order to generate the appropriate image and caption content. That way if we needed to do some extra manipulation down the road, we only have to worry about the helper and not anything else.&lt;/p&gt;
&lt;p&gt;Off to the code!!!!&lt;/p&gt;
&lt;p&gt;So the meat of all of this lies in the view and the helper. Our view contains our slider code, like this:&lt;/p&gt;
&lt;p&gt;&amp;lt;?php $this-&amp;gt;load-&amp;gt;helper(&apos;slider&apos;); ?&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- Load slider resources --&amp;gt; &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;/css/nivo-slider.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&amp;gt; &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;/css/nivo-slider-my-style.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&amp;gt; &amp;lt;script src=&quot;/js/jquery.nivo.slider.pack.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;slider-wrapper&quot;&amp;gt; &amp;lt;div id=&quot;slider&quot;&amp;gt; &amp;lt;?php foreach(get_video_image_code($slider_videos) as $image) { echo($image); } ?&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;?php foreach(get_video_caption_code($slider_videos) as $caption) { echo($caption); } ?&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt; $(window).load(function() { $(&apos;#slider&apos;).nivoSlider({ effect:&apos;fold&apos;, // Specify sets like: &apos;fold,fade,sliceDown&apos; slices:15, // For slice animations boxCols: 8, // For box animations boxRows: 4, // For box animations animSpeed:500, // Slide transition speed pauseTime:6000, // How long each slide will show startSlide:0, // Set starting Slide (0 index) directionNav:true, // Next &amp;amp; Prev navigation directionNavHide:true, // Only show on hover controlNav:true, // 1,2,3... navigation controlNavThumbs:false, // Use thumbnails for Control Nav controlNavThumbsFromRel:false, // Use image rel for thumbs controlNavThumbsSearch: &apos;.jpg&apos;, // Replace this with... controlNavThumbsReplace: &apos;_thumb.jpg&apos;, // ...this in thumb Image src keyboardNav:true, // Use left &amp;amp; right arrows pauseOnHover:true, // Stop animation while hovering manualAdvance:false, // Force manual transitions captionOpacity:0.8, // Universal caption opacity prevText: &apos;Prev&apos;, // Prev directionNav text nextText: &apos;Next&apos;, // Next directionNav text beforeChange: function(){}, // Triggers before a slide transition afterChange: function(){}, // Triggers after a slide transition slideshowEnd: function(){}, // Triggers after all slides have been shown lastSlide: function(){}, // Triggers when last slide is shown afterLoad: function(){} // Triggers when slider has loaded }); }); &amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;This is pretty much the standard way the Nivo slider is setup. I&apos;ve chosen to take all the &quot;default&quot; styling required to make things work and put them into a separate stylesheet for easier maintenance. I&apos;ve also replaced the image and content sections with some PHP code that calls our helper method. Let&apos;s take a look at that now.&lt;/p&gt;
&lt;p&gt;function get_video_image_code($videos) { $results = array(); $caption_count = 0;&lt;/p&gt;
&lt;p&gt;foreach($videos as $video) { $image_code = &apos;&apos;; $img_path = $_SERVER[&apos;DOCUMENT_ROOT&apos;] . &apos;/images/videos/&apos; . $video-&amp;gt;id . &apos;.jpg&apos;;&lt;/p&gt;
&lt;p&gt;if ($video-&amp;gt;imageid == 0 || !file_exists($img_path)) { $img_path = &apos;/images/videos/default_video.jpg&apos;; } else { $img_path = &apos;/images/videos/&apos; . $video-&amp;gt;id . &apos;.jpg&apos;; }&lt;/p&gt;
&lt;p&gt;$image_code .= &apos;&amp;lt;a href=&quot;/videos/&apos; . $video-&amp;gt;id . &apos;&quot;&amp;gt; &amp;lt;img src=&quot;&apos; . $img_path . &apos;&quot; alt=&quot;&quot; title=&quot;#caption&apos; . $caption_count . &apos;&quot; /&amp;gt; &amp;lt;/a&amp;gt;&apos;;&lt;/p&gt;
&lt;p&gt;$results[] = $image_code; $caption_count++; }&lt;/p&gt;
&lt;p&gt;return $results; }&lt;/p&gt;
&lt;p&gt;function get_video_caption_code($videos) { $results = array(); $caption_count = 0;&lt;/p&gt;
&lt;p&gt;foreach($videos as $video) { $caption_code = &apos;&amp;lt;div id=&quot;caption&apos; . $caption_count . &apos;&quot; class=&quot;nivo-html-caption&quot;&amp;gt; &amp;lt;span class=&quot;CaptionTitle&quot;&amp;gt;&apos; . $video-&amp;gt;title_billboard . &apos;&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;span class=&quot;CaptionDescription&quot;&amp;gt;&apos; . nl2br($video-&amp;gt;description) . &apos;&amp;lt;/span&amp;gt; &amp;lt;/div&amp;gt; &apos;;&lt;/p&gt;
&lt;p&gt;$results[] = $caption_code; $caption_count++; }&lt;/p&gt;
&lt;p&gt;return $results; }&lt;/p&gt;
&lt;p&gt;You&apos;ll notice that both methods have a caption count, which allows us to make sure our captions line up with our video images. You&apos;ll also notice that the helpers take an array of videos as its input, because if we did our data query here, we risk the chance of a new video slipping in between method calls and then things are out of sync.&lt;/p&gt;
&lt;p&gt;In our video model here, our slider images are named with the same Id as the video Id itself. In the event that our video images folder doesn&apos;t have the image, or our Id specified is 0, we fall back to our default video image. One word of note. CodeIgniter&apos;s application folder is locked out to the public, so you need to make sure that all of your CSS, Javascript, and image files reside under your public_html folder. Because of this issue, I like to use the server&apos;s DocumentRoot property when building the file path for me to check. All the image references themselves can remain relative to the public_html folder.&lt;/p&gt;
&lt;p&gt;In our video model, we&apos;re using the caption field to display both the title and the description of the video they can link to. I wanted to be able to customize these a bit further than what would typically be seen, so I went ahead and wrapped each section up in a SPAN tag and gave them the class of CaptionTitle and CaptionDescription. Then in the &quot;my-style&quot; CSS file I can design this out a bit further.&lt;/p&gt;
&lt;p&gt;Within our controller, we load the videos we need and call the View to render it.&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;load-&amp;gt;model(&apos;video_model&apos;); $this-&amp;gt;template_data[&apos;slider_videos&apos;] = $this-&amp;gt;video_model-&amp;gt;get_recent_videos(5);&lt;/p&gt;
&lt;p&gt;For those of you not familiar with CodeIgniter (I&apos;m still fresh to it myself) the template_data array is what is passed down and parsed to the View for it to do its presentation with. That is why in the View code at the top it passes in the variable $slider_videos in order to process. It&apos;s a simple &quot;hand me down&quot; type process, but very handy because the template_data is flushed out on every page load (preventing old data from lingering around) and handled automatically.&lt;/p&gt;
&lt;p&gt;That&apos;s how it all works! I wish I could put an entire &quot;soup to nuts&quot; functional solution here for you, but that would involved getting a lot of CodeIgniter stuff in place. However, I am including my view, helper, and the supporting image/slider files here so you should be able to modify and get this going on your own site pretty quickly. Code will be coming soon.&lt;/p&gt;
&lt;p&gt;Enjoy!!!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Lonely Man By Audio Adrenaline</title><link>https://dillieo.me/posts/development/2011-08-12-song-of-the-week-lonely-man-by-audio-adrenaline/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-12-song-of-the-week-lonely-man-by-audio-adrenaline/</guid><description>Lift Album by Audio Adrenaline</description><pubDate>Fri, 12 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes you need some good old fashioned audio intense rock to finish off. Audio Adrenaline always does the job nicely.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s the Lonely Man song, featuring an interlude by I think T-Bone, but I could be wrong.&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_88660&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Extending The User Module In Pyrocms</title><link>https://dillieo.me/posts/development/2011-08-11-soup-to-nuts-extending-the-user-module-in-pyrocms/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-11-soup-to-nuts-extending-the-user-module-in-pyrocms/</guid><description>Soup to Nuts - The Complete Package</description><pubDate>Thu, 11 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been helping get a new site off the ground that uses the &lt;a href=&quot;http://pyrocms.com&quot;&gt;PyroCMS&lt;/a&gt; system. If you haven&apos;t heard of it, it is a CMS (content management system) that is built on top of the &lt;a href=&quot;http://codeigniter.com/&quot;&gt;CodeIgniter&lt;/a&gt; PHP framework. Having recently gone back into PHP and starting fresh with the &lt;a href=&quot;http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&quot;&gt;MVC&lt;/a&gt; approach to web development, I&apos;ve been quite impressed with how easy I&apos;ve been able to get things up and running.&lt;/p&gt;
&lt;p&gt;That said, I ran into one hurdle with our new site. We needed students to register on the site and track some additional information about them. I did a little digging in the forums and online, and the general recommendation was not to override the user module built into the system, because future updates might overwrite your changes or cause some incompatibilities. The preferred solution is to create your own module to store your student related data, and tie into the user module as needed.&lt;/p&gt;
&lt;p&gt;Since there is a lot of flexibility available with MVC, this approach was easy to implement. What makes things really nice is that we can use the existing user module built into the PyroCMS system, which allows us to simply strip out the duplicate references (no need to rewrite the user model) and work from there. I like this &quot;learn from an existing&quot; model approach to things, because you can see how the code is supposed to generally flow within the framework.&lt;/p&gt;
&lt;p&gt;That said, I dug down to the public/system/pyrocms/modules/users folder and copied it to a separate location for me to work with. The first thing to do was to load up the details.php file in the root of the folder and modify the basic details. It also allows you to specify an install and uninstall method, which we can leverage to create the necessary tables we need:&lt;/p&gt;
&lt;p&gt;public function install()&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Create student tables and add student category to user groups.&lt;/p&gt;
&lt;p&gt;$sql = &apos;CREATE TABLE IF NOT EXISTS &apos; . $this-&amp;gt;db-&amp;gt;dbprefix(&apos;student&apos;) . &apos;&lt;/p&gt;
&lt;p&gt;(&lt;/p&gt;
&lt;p&gt;id int NOT NULL AUTO_INCREMENT,&lt;/p&gt;
&lt;p&gt;user_id int NOT NULL,&lt;/p&gt;
&lt;p&gt;age int NOT NULL,&lt;/p&gt;
&lt;p&gt;grade_level int NOT NULL,&lt;/p&gt;
&lt;p&gt;gender char NOT NULL,&lt;/p&gt;
&lt;p&gt;esl char NOT NULL,&lt;/p&gt;
&lt;p&gt;sport_id int NOT NULL,&lt;/p&gt;
&lt;p&gt;sport_level_id int NOT NULL,&lt;/p&gt;
&lt;p&gt;created datetime NOT NULL,&lt;/p&gt;
&lt;p&gt;modified datetime NOT NULL,&lt;/p&gt;
&lt;p&gt;PRIMARY KEY (id)&lt;/p&gt;
&lt;p&gt;)&lt;/p&gt;
&lt;p&gt;&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;$sql = &apos;CREATE TABLE IF NOT EXISTS &apos; . $this-&amp;gt;db-&amp;gt;dbprefix(&apos;student_secondary_sport&apos;) . &apos;&lt;/p&gt;
&lt;p&gt;(&lt;/p&gt;
&lt;p&gt;id int NOT NULL AUTO_INCREMENT,&lt;/p&gt;
&lt;p&gt;student_id int NOT NULL,&lt;/p&gt;
&lt;p&gt;sport_id int NOT NULL,&lt;/p&gt;
&lt;p&gt;created datetime NOT NULL,&lt;/p&gt;
&lt;p&gt;modified datetime NOT NULL,&lt;/p&gt;
&lt;p&gt;PRIMARY KEY (id)&lt;/p&gt;
&lt;p&gt;)&lt;/p&gt;
&lt;p&gt;&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;$sql = &apos;INSERT INTO &apos; . $this-&amp;gt;db-&amp;gt;dbprefix(&apos;groups&apos;) . &apos; (name, description)&lt;/p&gt;
&lt;p&gt;VALUES (\&apos;student\&apos;, \&apos;Students\&apos;)&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;return TRUE;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;public function uninstall()&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Remove student related data and module settings&lt;/p&gt;
&lt;p&gt;$sql = &apos;DELETE FROM &apos;. $this-&amp;gt;db-&amp;gt;dbprefix(&apos;groups&apos;) . &apos; WHERE name = \&apos;student\&apos;&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;$sql = &apos;DROP TABLE &apos;. $this-&amp;gt;db-&amp;gt;dbprefix(&apos;student_secondary_sport&apos;);&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;$sql = &apos;DROP TABLE &apos;. $this-&amp;gt;db-&amp;gt;dbprefix(&apos;student&apos;);&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;$sql = &apos;DELETE FROM &apos;. $this-&amp;gt;db-&amp;gt;dbprefix(&apos;modules&apos;) . &apos; WHERE name = \&apos;student\&apos;&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;return TRUE;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Since we can call the appropriate user models and helpers, there&apos;s no need to keep this code, so we remove a lot of files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;config/ion_auth.php&lt;/li&gt;
&lt;li&gt;controllers/profile.php&lt;/li&gt;
&lt;li&gt;language/* - leave the english folder, since you&apos;ll want to update a few of your tags. Keep other languages if you plan on translate&lt;/li&gt;
&lt;li&gt;libraries/*&lt;/li&gt;
&lt;li&gt;models/profiles_m.php&lt;/li&gt;
&lt;li&gt;models/ion_auth_model.php&lt;/li&gt;
&lt;li&gt;flush most of your views, except for the register.php view and the admin, email, and settings subfolders&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After removing the extra files, the next step is to go in and rename all of your user type files to student, or whatever you want to call them. You&apos;ll want to go through the remaining files and weed out the methods that aren&apos;t needed, such as login, since those are covered by the user model. After this, you need to inject the appropriate code into the appropriate methods. For instance, in the student controller, I need to retrieve all of the student related data from my view and insert that into the proper tables after a successful user insertion. The register method winds up looking like this:&lt;/p&gt;
&lt;p&gt;/**&lt;/p&gt;
&lt;p&gt;* Method to register a new student&lt;/p&gt;
&lt;p&gt;* @access public&lt;/p&gt;
&lt;p&gt;* @return void&lt;/p&gt;
&lt;p&gt;*/&lt;/p&gt;
&lt;p&gt;public function register()&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Validation rules&lt;/p&gt;
&lt;p&gt;$validation = array(&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;first_name&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_first_name_label&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|utf8&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;last_name&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_last_name_label&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|utf8&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;email&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_email_label&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|valid_email&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;password&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_password_label&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;min_length[6]|max_length[20]&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;confirm_password&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_password_confirm_label&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;matches[password]&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;username&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_username&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|alphanumeric|min_length[3]|max_length[20]&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;display_name&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_display_name&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;alphanumeric|min_length[3]|max_length[50]&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;active&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:user_active_label&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;age&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:student_age&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|integer&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;grade_level&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:student_grade_level&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|integer&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;gender&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:student_gender&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|alpha&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;esl&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:student_esl&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|alpha&apos;&lt;/p&gt;
&lt;p&gt;),&lt;/p&gt;
&lt;p&gt;array(&lt;/p&gt;
&lt;p&gt;&apos;field&apos; =&amp;gt; &apos;sport_id&apos;,&lt;/p&gt;
&lt;p&gt;&apos;label&apos; =&amp;gt; &apos;lang:student_sport&apos;,&lt;/p&gt;
&lt;p&gt;&apos;rules&apos; =&amp;gt; &apos;required|numeric&apos;&lt;/p&gt;
&lt;p&gt;)&lt;/p&gt;
&lt;p&gt;);&lt;/p&gt;
&lt;p&gt;// Set the validation rules&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;form_validation-&amp;gt;set_rules($validation);&lt;/p&gt;
&lt;p&gt;$email = $this-&amp;gt;input-&amp;gt;post(&apos;email&apos;);&lt;/p&gt;
&lt;p&gt;$password = $this-&amp;gt;input-&amp;gt;post(&apos;password&apos;);&lt;/p&gt;
&lt;p&gt;$username = $this-&amp;gt;input-&amp;gt;post(&apos;username&apos;);&lt;/p&gt;
&lt;p&gt;$group_id = (int)$this-&amp;gt;input-&amp;gt;post(&apos;group_id&apos;);&lt;/p&gt;
&lt;p&gt;$age = (int)$this-&amp;gt;input-&amp;gt;post(&apos;age&apos;);&lt;/p&gt;
&lt;p&gt;$grade_level = (int)$this-&amp;gt;input-&amp;gt;post(&apos;grade_level&apos;);&lt;/p&gt;
&lt;p&gt;$gender = $this-&amp;gt;input-&amp;gt;post(&apos;gender&apos;);&lt;/p&gt;
&lt;p&gt;$esl = $this-&amp;gt;input-&amp;gt;post(&apos;esl&apos;);&lt;/p&gt;
&lt;p&gt;$sport_id = (int)$this-&amp;gt;input-&amp;gt;post(&apos;sport_id&apos;);&lt;/p&gt;
&lt;p&gt;$sport_level_id = (int)$this-&amp;gt;input-&amp;gt;post(&apos;sport_level_id&apos;);&lt;/p&gt;
&lt;p&gt;$secondary_sport_ids = array();&lt;/p&gt;
&lt;p&gt;$sports = get_sports();&lt;/p&gt;
&lt;p&gt;$sportids = array_keys($sports);&lt;/p&gt;
&lt;p&gt;foreach ($sportids as $id)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;$secondaryid = &apos;secondary_sport_&apos; . $id;&lt;/p&gt;
&lt;p&gt;if($this-&amp;gt;input-&amp;gt;post($secondaryid))&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;$secondary_sport_ids[] = $id;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;$user_data_array = array(&lt;/p&gt;
&lt;p&gt;&apos;first_name&apos; =&amp;gt; $this-&amp;gt;input-&amp;gt;post(&apos;first_name&apos;),&lt;/p&gt;
&lt;p&gt;&apos;last_name&apos; =&amp;gt; $this-&amp;gt;input-&amp;gt;post(&apos;last_name&apos;),&lt;/p&gt;
&lt;p&gt;&apos;display_name&apos; =&amp;gt; $this-&amp;gt;input-&amp;gt;post(&apos;display_name&apos;),&lt;/p&gt;
&lt;p&gt;&apos;group_id&apos; =&amp;gt; (int)$this-&amp;gt;input-&amp;gt;post(&apos;group_id&apos;),&lt;/p&gt;
&lt;p&gt;&apos;age&apos; =&amp;gt; (int)$this-&amp;gt;input-&amp;gt;post(&apos;age&apos;),&lt;/p&gt;
&lt;p&gt;&apos;grade_level&apos; =&amp;gt; (int)$this-&amp;gt;input-&amp;gt;post(&apos;grade_level&apos;),&lt;/p&gt;
&lt;p&gt;&apos;gender&apos; =&amp;gt; $this-&amp;gt;input-&amp;gt;post(&apos;gender&apos;),&lt;/p&gt;
&lt;p&gt;&apos;esl&apos; =&amp;gt; $this-&amp;gt;input-&amp;gt;post(&apos;esl&apos;),&lt;/p&gt;
&lt;p&gt;&apos;sport_id&apos; =&amp;gt; (int)$this-&amp;gt;input-&amp;gt;post(&apos;sport_id&apos;),&lt;/p&gt;
&lt;p&gt;&apos;sport_level_id&apos; =&amp;gt; (int)$this-&amp;gt;input-&amp;gt;post(&apos;sport_level_id&apos;),&lt;/p&gt;
&lt;p&gt;&apos;secondary_sport_ids&apos; =&amp;gt; $secondary_sport_ids&lt;/p&gt;
&lt;p&gt;);&lt;/p&gt;
&lt;p&gt;// Convert the array to an object&lt;/p&gt;
&lt;p&gt;$user_data = new stdClass();&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;first_name = $user_data_array[&apos;first_name&apos;];&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;last_name = $user_data_array[&apos;last_name&apos;];&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;display_name = $user_data_array[&apos;display_name&apos;];&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;username = $username;&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;email = $email;&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;password = $password;&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;confirm_email = $this-&amp;gt;input-&amp;gt;post(&apos;confirm_email&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;group_id = (int)$this-&amp;gt;input-&amp;gt;post(&apos;group_id&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;age = (int)$this-&amp;gt;input-&amp;gt;post(&apos;age&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;grade_level = (int)$this-&amp;gt;input-&amp;gt;post(&apos;grade_level&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;gender = $this-&amp;gt;input-&amp;gt;post(&apos;gender&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;esl = $this-&amp;gt;input-&amp;gt;post(&apos;esl&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;sport_id = (int)$this-&amp;gt;input-&amp;gt;post(&apos;sport_id&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;sport_level_id = (int)$this-&amp;gt;input-&amp;gt;post(&apos;sport_level_id&apos;);&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;secondary_sport_ids = $secondary_sport_ids;&lt;/p&gt;
&lt;p&gt;if ($this-&amp;gt;form_validation-&amp;gt;run())&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;$group = $this-&amp;gt;group_m-&amp;gt;get($this-&amp;gt;input-&amp;gt;post(&apos;group_id&apos;));&lt;/p&gt;
&lt;p&gt;// Try to create the user&lt;/p&gt;
&lt;p&gt;if ($id = $this-&amp;gt;ion_auth-&amp;gt;register($username, $password, $email, $user_data_array, $group-&amp;gt;name))&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Insert the student information to the proper table and add it to the user data object.&lt;/p&gt;
&lt;p&gt;$sql = &apos;INSERT INTO student (user_id, age, grade_level, gender, esl, sport_id, sport_level_id, created, modified)&lt;/p&gt;
&lt;p&gt;VALUES (&apos; . $this-&amp;gt;db-&amp;gt;escape($id) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($age) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($grade_level) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($gender) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($esl) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($sport_id) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($sport_level_id) . &apos;,&lt;/p&gt;
&lt;p&gt;NOW(),&lt;/p&gt;
&lt;p&gt;NOW()&lt;/p&gt;
&lt;p&gt;)&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;$student_id = $this-&amp;gt;db-&amp;gt;insert_id();&lt;/p&gt;
&lt;p&gt;$user_data-&amp;gt;student_id = $student_id;&lt;/p&gt;
&lt;p&gt;// Insert any secondary sports for the student.&lt;/p&gt;
&lt;p&gt;if (isset($secondary_sport_ids) &amp;amp;&amp;amp; count($secondary_sport_ids &amp;gt; 0))&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;foreach ($secondary_sport_ids as $sportid)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;$sql = &apos;INSERT INTO student_secondary_sport (student_id, sport_id, created, modified)&lt;/p&gt;
&lt;p&gt;VALUES (&apos; . $this-&amp;gt;db-&amp;gt;escape($student_id) . &apos;, &apos;&lt;/p&gt;
&lt;p&gt;. $this-&amp;gt;db-&amp;gt;escape($sportid) . &apos;,&lt;/p&gt;
&lt;p&gt;NOW(),&lt;/p&gt;
&lt;p&gt;NOW()&lt;/p&gt;
&lt;p&gt;)&apos;;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;db-&amp;gt;query($sql);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;session-&amp;gt;set_flashdata(array(&apos;notice&apos; =&amp;gt; $this-&amp;gt;ion_auth-&amp;gt;messages()));&lt;/p&gt;
&lt;p&gt;redirect(&apos;/users/activate&apos;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// Can&apos;t create the user, show why&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;data-&amp;gt;error_string = $this-&amp;gt;ion_auth-&amp;gt;errors();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Return the validation error&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;data-&amp;gt;error_string = $this-&amp;gt;form_validation-&amp;gt;error_string();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;data-&amp;gt;user_data =&amp;amp; $user_data;&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;template-&amp;gt;title(lang(&apos;student_register_title&apos;));&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;template-&amp;gt;build(&apos;register&apos;, $this-&amp;gt;data);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Obviously there&apos;s a lot more to process, but it&apos;s a lot simpler than it looks. It&apos;s just tricky to piece things together, at least if you&apos;re not too familiar with CodeIgniter, PyroCMS, or MVC in general. However, I made it through it and you can too!&lt;/p&gt;
&lt;p&gt;Once you get your module code complete, you can copy it into your addons/modules folder and then login to your site. In your Add-Ons section you should see where you can install the module, which will create your tables and get you going. PyroCMS makes it really nice this way to plug new stuff in to your site. Students can register using the proper path of /students/register, and standard users can still register using the path of /register or /users/register. In addition, with the latest 1.3 release of PyroCMS, there is an event model that has been updated. With the new event model, you could detect a user login, and then do some additional processing, such as grab the student information and add it to the $this-&amp;gt;user object that is available in the system.&lt;/p&gt;
&lt;p&gt;The next step for this, is to be able to abstract the module more, so that you could create custom fields for as many groups as you need. Then you could share these properties across multiple groups. For instance, you may have a property called &quot;School&quot; that would be needed by teachers and students, but only the &quot;primary sport&quot; property would be needed by the students.&lt;/p&gt;
&lt;p&gt;I&apos;ve gone ahead and attached the module code I&apos;ve written, in hopes of helping you get off the ground with extending the user model in PyroCMS to meet your own needs. This code is functional on our site, but I&apos;m sure there&apos;s always a few tweaks or updates that would make things nicer. Please feel free to drop me a line if you see any of those.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Dillie-O/PyroCMS-Student-Module&quot;&gt;Donwload&lt;/a&gt; the module from the git repository.&lt;/p&gt;
</content:encoded></item><item><title>Redundant</title><link>https://dillieo.me/posts/growth/2011-08-09-redundant/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-09-redundant/</guid><description>Redundant</description><pubDate>Tue, 09 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;[:: Random Insight of the Minute ::] It&apos;s redundant! It&apos;s redundant! - R. E. Dundant&lt;/p&gt;
&lt;p&gt;[:: Random Insight of the Minute ::] It&apos;s redundant! It&apos;s redundant! - R. E. Dundant&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Mono Synth By Joy Electric</title><link>https://dillieo.me/posts/development/2011-08-05-song-of-the-week-mono-synth-by-joy-electric/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-08-05-song-of-the-week-mono-synth-by-joy-electric/</guid><description>Joy Electric</description><pubDate>Fri, 05 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You never know when you&apos;ll stumble across something completely random to you, and yet completely wonderful with music. Such was the case with me and Joy Electric.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I had gotten into the dance/house scene late in high school, early in college, so I already had an affinity for more of the &quot;digital&quot; side of music, with heavy use of beat tracks, digital edits, and the like. However, when it comes to Joy Electric, they took a slightly different approach and went to the analog side of the electronic music scheme, which allows you to do some really amazing things.&lt;/p&gt;
&lt;p&gt;Here&apos;s one of their tracks off of a sampler that shows a lot of the different effects in action. Enjoy!!!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_672_15012762&lt;/p&gt;
</content:encoded></item><item><title>Life Is Like Jazz</title><link>https://dillieo.me/posts/growth/2011-08-04-life-is-like-jazz/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-04-life-is-like-jazz/</guid><description>Life Is Like Jazz</description><pubDate>Thu, 04 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;[:: Random Insight of the Minute ::] Life is like Jazz, it should be improvised.&lt;/p&gt;
&lt;p&gt;[:: Random Insight of the Minute ::] Life is like Jazz, it should be improvised.&lt;/p&gt;
</content:encoded></item><item><title>Users</title><link>https://dillieo.me/posts/growth/2011-08-03-users/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-03-users/</guid><description>Users</description><pubDate>Wed, 03 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;[:: Random Insight of the Minute ::] Users: Keep them dry and don&apos;t feed them after midnight.&lt;/p&gt;
&lt;p&gt;[:: Random Insight of the Minute ::] Users: Keep them dry and don&apos;t feed them after midnight.&lt;/p&gt;
</content:encoded></item><item><title>In The Trench</title><link>https://dillieo.me/posts/growth/2011-08-02-in-the-trench/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-08-02-in-the-trench/</guid><description>Trench Digging</description><pubDate>Tue, 02 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A lot of times I think that the biggest moments in life happen when you win that big game, or have the big showdown with a person, or write that one &quot;killer app&quot; that gets you noticed or sells a million a copies.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Then I remember about this time in high school when there was an open work day at our church. We were finally adding on a gymnasium/office/youth room and everybody was pitching in to help get things finalized. A lot of folks inside the structure of the building, going up on the rafters to hand a few features, or going out to the store making a few purchases, you know the &quot;cool&quot; things to do for a kid. I wound up being just outside the building with a guy, digging a trench against a small hill that we&apos;d use for drainage when it rains. It was pretty hard work, but we had the best time in the world simply digging, laughing, and even talking about some of the bigger things in life, all in a trench.&lt;/p&gt;
&lt;p&gt;It was that day I realized a lot of the biggest moments in life happen in the &quot;smallest&quot; situations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Those random, unplanned trips with your friends to nowhere special where you wind up talking all night.&lt;/li&gt;
&lt;li&gt;Those bus trips to competitions where you played cards and talked the whole time while playing cards.&lt;/li&gt;
&lt;li&gt;A late night coffee run with somebody simply because you couldn&apos;t sleep anyway.&lt;/li&gt;
&lt;li&gt;Sitting on your deck, listening to the rain, watching the sunset, and reading books with your children.&lt;/li&gt;
&lt;li&gt;Having somebody come by for dinner at the last minute because they had a really rough day.&lt;/li&gt;
&lt;li&gt;Sitting in a card shop late at night, and hearing the life story of the guy who works there.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We often forget these things, or miss the significance of simply &quot;doing life&quot; with somebody, where the most significant things wind up happening.&lt;/p&gt;
</content:encoded></item><item><title>Guest Post At Fresh Consulting</title><link>https://dillieo.me/posts/development/2011-07-29-guest-post-at-fresh-consulting/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-07-29-guest-post-at-fresh-consulting/</guid><description>Time to Learn</description><pubDate>Fri, 29 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Fresh Consulting (a.k.a. my awesome job) asked me to share some tips about setting up a good development environment, and here they are!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://freshconsulting.com/10-development-tips-for-building-a-solid-foundation/&quot;&gt;http://freshconsulting.com/10-development-tips-for-building-a-solid-foundation/&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why I Love Programming</title><link>https://dillieo.me/posts/development/2011-07-26-why-i-love-programming/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-07-26-why-i-love-programming/</guid><description>Computer Code</description><pubDate>Tue, 26 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My coworker / mentor sent me a quote last night that outlines all the the things I love about programming. It was such a great quote I had to add it here, just in case somebody asks me what I love hacking the matrix so much:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why is programming fun? What delights may its practitioner expect as his reward?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;First is the sheer joy of making things. As the child delights in his first mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God’s delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.&lt;/p&gt;
&lt;p&gt;Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child’s first clay pencil holder “for Daddy’s office.”&lt;/p&gt;
&lt;p&gt;Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.&lt;/p&gt;
&lt;p&gt;Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something; sometimes practical, sometimes theoretical, and sometimes both.&lt;/p&gt;
&lt;p&gt;Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. (As we shall see later, this very tractability has its own problems.)&lt;/p&gt;
&lt;p&gt;Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard and a display screen comes to life, showing things that never were nor could be.&lt;/p&gt;
&lt;p&gt;Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.&lt;/p&gt;
&lt;p&gt;~ The Mythical Man-Month, Frederick P. Brooks, Jr., Addison-Wesley Professional:1995. 7-8.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Song Of The Week The Slurpee Set Care Of Spotify</title><link>https://dillieo.me/posts/development/2011-07-22-song-of-the-week-the-slurpee-set-care-of-spotify/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-07-22-song-of-the-week-the-slurpee-set-care-of-spotify/</guid><description>Slurpee Set Cover</description><pubDate>Fri, 22 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s the middle of summer, which means two things, slurpees and music to get you through the day. This week I figured I&apos;d share a whopping 13 songs with you, and do it through a old/new music service out there: Spotify.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;A good five years or so back, when I was still living in Las Vegas, 7-11 was running &quot;specials&quot; where if you bought a Slurpee, you found a code on the bottom of the cup to get a free song from iTunes. Given the fact that I&apos;m a Slurpee junkie, and I had some random songs I wanted to piece together, it was the perfect setup for me!&lt;/p&gt;
&lt;p&gt;So after a summer of lots of Slurpees (and I think a few promos later on) I acquired the following &quot;mix&quot; of songs that entail &quot;The Slurpee Set&quot; (in no particular order)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Hamster Dance Song&lt;/li&gt;
&lt;li&gt;Gonna Make You Sweat (Everybody Dance Now) - C+C Music Factory&lt;/li&gt;
&lt;li&gt;Things That Make You Go Hmmmmmm - C+C Music Factory&lt;/li&gt;
&lt;li&gt;Magic Carpet Ride - Steppenwolf&lt;/li&gt;
&lt;li&gt;Bohemian Rhapsody - Queen&lt;/li&gt;
&lt;li&gt;Rock the Party Off the Hook - P.O.D.&lt;/li&gt;
&lt;li&gt;Big House - Audio Adrenaline&lt;/li&gt;
&lt;li&gt;Walkin&apos; On The Sun - Smash Mouth&lt;/li&gt;
&lt;li&gt;Never Alone - Barlowgirl&lt;/li&gt;
&lt;li&gt;Hey Hey - Superchick&lt;/li&gt;
&lt;li&gt;A Little Less Conversation (JXL Remix) - Elvis vs. JXL&lt;/li&gt;
&lt;li&gt;Thank You - Dido&lt;/li&gt;
&lt;li&gt;Kryptonite (Live) - 3 Doors Down&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To get the entire song set, I&apos;ve published a public playlist on &lt;a href=&quot;http://spotify.com&quot;&gt;Spotify&lt;/a&gt;. Spotify is a music service that has been in the UK for a while now and is now showing up in the US. You can get a free account which gives you unlimited access to all the songs they have online. They have a HUGE amount of music available. Remember that &lt;a href=&quot;/song-of-the-week-serena-by-fold-zandura&quot;&gt;Fold Zandura song I had a couple of weeks ago&lt;/a&gt;? I was able to find one of their albums online and listen to it! I&apos;m a big fan of Paul Van Dyk, but never had any of his albums. I spent an afternoon listening to all of his music too. It really is amazing. They also have an iPhone/Android app, which allows me to sync all the music I own, or to listen to music online.&lt;/p&gt;
&lt;p&gt;You can upgrade to a premium account and get access to all of your music offline as well. This includes the music you don&apos;t own, but exists in Spotify&apos;s library. It&apos;s similar to the Zune Pass Microsoft did with their player. I&apos;m starting to really like this idea. I can&apos;t afford to go buy new music all the time, but for a few bucks, getting access to all of this seems really attractive, especially with more and more things moving to the &quot;cloud&quot; these days.&lt;/p&gt;
&lt;p&gt;To view the playlist, you have a couple of options. First, if you already know me from Facebook, turn on your Facebook integration and you should see me in your &quot;People&quot; sidebar and you can check out the list that way. If you don&apos;t know me via Facebook, there&apos;s no need to friend me, simple type in &quot;spotify:user:dillie-o&quot; into the search bar and you&apos;ll see my profile,with the public link. I&apos;d love to see your playlist too!&lt;/p&gt;
&lt;p&gt;They are still doing limited Spotify accounts, so if you&apos;re interested, drop me a comment (or e-mail) and I&apos;ll see how many I can give out. Or, if you&apos;re using Klout at all, they are giving free accounts for some folks, which you can check out through &lt;a href=&quot;http://klout.com/perk/Spotify/SpotifyFreeAccounts&quot;&gt;this link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy Friday and Enjoy!!!&lt;/p&gt;
</content:encoded></item><item><title>Review The Book Of Css3</title><link>https://dillieo.me/posts/development/2011-07-21-review-the-book-of-css3/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-07-21-review-the-book-of-css3/</guid><description>Book of CSS3 Cover</description><pubDate>Thu, 21 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been slowly working on my &quot;front end&quot; web development for a while and the critical piece to this is being able to leverage CSS better. With the ability to write mobile compatible applications as well, making CSS work for you is even more important. Fortunately, &lt;em&gt;The Book of CSS3&lt;/em&gt; by Peter Gasston gives you a deep and complete view of the CSS3 specification and how to make it work on your sites.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The author is quick to point out that a lot of the new hype that HTML5 demonstrations show isn&apos;t really attributed to the HTML5 specification at all, it&apos;s due to the features that CSS3 provides and that browsers are finally starting to implement. This is a key point and springboards the book into a lot of examples covering all the concepts you need when working with CSS: fonts, selectors, box effects, animations, and a lot more.&lt;/p&gt;
&lt;p&gt;This definitely an advanced book. I consider myself an intermediate front end developer, and some of the examples involved were a little beyond my scope of knowledge. There are some assumptions the author makes (you know the difference between a div and a span, but also between bold and strong), so I had to do a little bit of digging at times to get to a fuller understanding of what is going on. However, this isn&apos;t that large of an obstacle to tackle and the additional work was worth it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Book of CSS3&lt;/em&gt; gives you a great book in which to familiarize yourself with CSS3. It&apos;s examples are great starters to implement in your own sites, and all the topics you need are covered. I highly recommend it to add to your bookshelf of web development books.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://oreilly.com/catalog/9781593272869/&quot;&gt;http://oreilly.com/catalog/9781593272869/&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Biblical Sanctuary</title><link>https://dillieo.me/posts/growth/2011-07-14-biblical-sanctuary/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-07-14-biblical-sanctuary/</guid><description>Sanctuary A Place of Refuge</description><pubDate>Thu, 14 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday during my &quot;God Time&quot; (as I tell the girls) I came across the following passage:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Remind them to be submissive to rulers and authorities, to be obedient, to be ready for every good work, to speak evil of no one, to avoid quarreling, to be gentle, and to show perfect courtesy toward all people. For we ourselves were once foolish, disobedient, led astray, slaves to various passions and pleasures, passing our days in malice and envy, hated by others and hating one another. But when the goodness and loving kindness of God our Savior appeared, he saved us, not because of works done by us in righteousness, but according to his own mercy, by the washing of regeneration and renewal of the Holy Spirit, whom he poured out on us richly through Jesus Christ our Savior, so that being justified by his grace we might become heirs according to the hope of eternal life. ~ Titus 3:1-7 (ESV)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The words &lt;em&gt;avoid quarreling, to be gentle, and to show perfect courtesy toward all people&lt;/em&gt; made me think of what this would look like in practice. They sound like great basic principles on living a good, true, and beautiful life. As I looked off my deck to the mountains in the distance, the trees not too far from my gaze, and the sound of the birds and my ducks scattered about, my mind changed gears and thought about how in a lot of ways our home was a sanctuary: A place of refuge.&lt;/p&gt;
&lt;p&gt;To some degree, we&apos;ve always sought to create a sanctuary out of our home for others. It started when we were first married and out of college. We had a fair share of college students in our apartment complex and made a point of having one or two of them down for dinner at least once a week. Most of them weren&apos;t keen on cooking, nor had the money to do so, so this little bit went a long way. It also gave them a break from the routine places (class, home, library to study, etc.) to go and gave them a place to breathe and relax.&lt;/p&gt;
&lt;p&gt;This has carried over as we have moved from house to house. We generally have a policy to give us 10 minutes notice before coming over, that way we can clean all the disastrous stuff off the floor 8^D. If all you need is to sit on the deck and enjoy the breeze, we won&apos;t bother you. If all you need is an ear to vent on, we won&apos;t make any judgements. Typically we try and make you come over near a meal so we can feed you as well, and maybe chat over a glass of wine.&lt;/p&gt;
&lt;p&gt;All of the sudden things came back around to the original passage. Providing a sanctuary for others is a good way to live those principles out. It also reminds me of what is more important in life. Our small 1/3 of an acre piece of land, complete with a small garden, 5 ducks, 2 dogs, a tank of fish, twin girls, and a wood stove could be that place others seek and find rest, comfort, and some encouragement. In some way this plumber that reads Plato might make a little dent for the kingdom.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Serena By Fold Zandura</title><link>https://dillieo.me/posts/development/2011-07-08-song-of-the-week-serena-by-fold-zandura/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-07-08-song-of-the-week-serena-by-fold-zandura/</guid><description>Fold Zandura Cover</description><pubDate>Fri, 08 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I started college, I was going through an expansion in my musical preferences. Fortunately for a poor college student, a lot of Christian labels would release &quot;demo&quot; albums that easily featured 20 songs by 10 of their artists, and sold them for about $2.99 each. They hoped you would find somebody to buy a complete album of, and I got some new music for cheap.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;On one of these particular albums I stumbled across the song &quot;Serena&quot; by a group named Fold Zandura. It&apos;s still hard to describe precisely what keeps me coming back to this song, even a good 15 years later, but there&apos;s a combination of electronics, lyrics, melody, and a slow beat, that is almost haunting in a good way with the song.&lt;/p&gt;
&lt;p&gt;Sadly I can&apos;t seem to come across any of their albums anymore, so if you know where I can find them. Let me know. Enjoy!!!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_672_91591080&lt;/p&gt;
</content:encoded></item><item><title>The Remote Worker One Month In</title><link>https://dillieo.me/posts/development/2011-07-05-the-remote-worker-one-month-in/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-07-05-the-remote-worker-one-month-in/</guid><description>My home office</description><pubDate>Tue, 05 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The 1st of the month was my 1 month anniversary working for &lt;a href=&quot;http://freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt;. There been a whole lot of crazy and a whole lot of good things that have happened within 1 month of working here:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pushed out a new site using a brand new CMS in 2 days.&lt;/li&gt;
&lt;li&gt;Built configurable RSS for existing content for video and text content.&lt;/li&gt;
&lt;li&gt;Implemented the haversine formula into an application to &lt;a href=&quot;/sorting-latitudelongitude-positions-by-distance-in-sql&quot;&gt;properly sort results&lt;/a&gt; by distance.&lt;/li&gt;
&lt;li&gt;Mastered (well better yet got REALLY familiar) with running SVN from the command prompt.&lt;/li&gt;
&lt;li&gt;...and a few other things along the way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wow, Through all of this, I spent probably 90% of my time in PHP, where .Net is really my stronger language at the time, so everything has been lots of learning on the fly. It&apos;s been humbling (needing to turn to quite a bit of help and research) and it&apos;s been a lot of fun too! Never stop learning I always say. I&apos;ve also been part of a team brainstorming some ideas for a new site for a client, and working with some online collaboration tools has been really slick too.&lt;/p&gt;
&lt;p&gt;The transition process has been a bit more difficult than I had planned. I think that&apos;s more due to the unexpected nature of the work I was getting into than anything else. Priorities shift a lot more than I was used to and for the first couple of weeks it was a little crazy to keep up. Fortunately I remembered my faithful Kanban board from before and after a little digging stumbled across &lt;a href=&quot;http://kanbanery.com&quot;&gt;Kanbanery&lt;/a&gt;, which allows me to have a Kanban board that is shared with my fellow developer AND can be updated via iPod Touch.&lt;/p&gt;
&lt;p&gt;After this things got a lot easier to keep dibs on, especially since we pull our tasks from a couple different management tools. I also was able to refine a few of my internal processes a bit more to handle changes a bit quicker. There is a lot more communication going on between me and my fellow programmer, and with screen sharing available through Skype and a few other methods, he&apos;s been able to point me in the right direction on issues I&apos;ve encountered quickly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-07-photo-jun-19-3-29-07-pm.jpg&quot; alt=&quot;The front door view of the office.&quot; title=&quot;Office Front View&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-07-photo-jun-19-3-29-20-pm.jpg&quot; alt=&quot;Office Death Star&quot; title=&quot;Office Death Star&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In addition, we went ahead and converted the downstairs area from a storage area to an office. There&apos;s still some tidy up work to do, but I&apos;m really happy being down here and the kids can come down and visit off and on. Besides, every office needs their own Lego Death Star next to their coffee pot. 8^D We&apos;re getting a weatherproof door and tapping into the AC/Heater line in the next week or so to properly heat/cool it during the extreme times of the year&lt;/p&gt;
&lt;p&gt;Ultimately I&apos;ve learned to be even more flexible than I thought I was, which really wasn&apos;t much. I&apos;m really enjoying the technology shifts on the fly and it&apos;s helping me solidify my knowledge in each language. I get to brainstorm some of the bigger picture concepts for other projects as well. I&apos;m also figuring out how to balance the family time within things, so that I&apos;m not taking too much time out from work to be around the house or vice versa.&lt;/p&gt;
&lt;p&gt;There&apos;s a plethora of things I&apos;m sure I&apos;m missing here, so feel free to ask if you&apos;re curious, but after 1 month in I&apos;m finding my work from home environment very exciting, rewarding, challenging, and the opportunity of a lifetime!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Dj Jazzy Jeff And The Fresh Prince Megamix</title><link>https://dillieo.me/posts/growth/2011-07-01-song-of-the-week-dj-jazzy-jeff-and-the-fresh-prince-megamix/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-07-01-song-of-the-week-dj-jazzy-jeff-and-the-fresh-prince-megamix/</guid><description>DJ Jazzy Jeff and the Fresh Prince Greatest Hits</description><pubDate>Fri, 01 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In honor of my brother&apos;s birthday today, I figured I&apos;d toss one out from some of the old music we listened to.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Yep, that&apos;s Will Smith. Long before his amazing movie career he was bustin&apos; rhymes with his buddy DJ Jazzy Jeff and had a spot on a TV show &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/The_Fresh_Prince_of_Bel-Air&quot;&gt;The Fresh Prince of Bell-Air&lt;/a&gt;&quot;. It was a great show, and a lot of his music was a lot of fun, and &quot;rebellious&quot; at times (&quot;Parents Just Don&apos;t Understand&quot; ring a bell?).&lt;/p&gt;
&lt;p&gt;Enjoy a flashback and Happy Birthday brother! I love ya!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87161&lt;/p&gt;
</content:encoded></item><item><title>Girls First Fishing Trip</title><link>https://dillieo.me/posts/growth/2011-06-26-girls-first-fishing-trip/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-06-26-girls-first-fishing-trip/</guid><description>Girls First Fishing Trip</description><pubDate>Sun, 26 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/64495188@N02/sets/72157626927113343/&quot;&gt;Girls&apos; First Fishing Trip&lt;/a&gt;, a set on Flickr.&lt;/p&gt;
&lt;p&gt;Here are some pics from our first fishing trip with the girls and Opa! We didn&apos;t catch a thing but had a blast.&lt;/p&gt;
</content:encoded></item><item><title>Generating Random Signature Taglines In Mac Osx</title><link>https://dillieo.me/posts/development/2011-06-22-generating-random-signature-taglines-in-mac-osx/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-06-22-generating-random-signature-taglines-in-mac-osx/</guid><description>Generating Random Signature Taglines In Mac Osx</description><pubDate>Wed, 22 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the things I miss most from my old job was my tag line generating program I had. Oddly enough, all of these old QWK Mail BBS tag lines I had randomly inserted into my e-mails made a lot of people happy. Then I&apos;d post some of them on Facebook Twitter and get a few more chuckles, or looks of bewilderment (yes, you CAN feel those through the matrix when you&apos;ve been around as long as I have).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;So here I am on a Mac wondering how I can get this to happen since most of my e-mail is done on the web now (still lots of love goes to &lt;a href=&quot;http://threadsy.com&quot;&gt;Threadsy&lt;/a&gt;) and even the program I used to use went on the fritz when Win7 came out and the security got tighter.&lt;/p&gt;
&lt;p&gt;Fortunately for me, Mac has a Linux base (Free BSD, whatever) and you have easy access to your shell scripts. And waaaaaaay back in my Tandem (then Compaq, now HP) days I got to live on a Unix machine for a while and had a few things creep in, thanks to the Internet.&lt;/p&gt;
&lt;p&gt;The first step is to create a simple shell script type application that will read my tagline file (just a simple text file with one line per tag) and grab a line at random for me. After some digging, I found and tweaked the following code to make it my own:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh

LINES=\`wc -l $1 | awk &apos;{ print ($1 + 1) }&apos;\` RANDSEED=\`date &apos;+%S%M%I&apos;\` LINE=\`cat $1 | awk -v COUNT=$LINES -v SEED=$RANDSEED &apos;BEGIN { srand(SEED); \\ i=int(rand()\*COUNT) } FNR==i { print $0 }&apos;\` echo $LINE | pbcopy echo $LINE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you&apos;ll notice that second to last line echos the line and pipes it into the pbcopy command. I discovered this is the default clipboard app that is running on the Mac, and all I had to do was pipe the text to there. I do a second echo command so that I could see what the tagline was, in case I wanted to generate another.&lt;/p&gt;
&lt;p&gt;I saved this little script to a file called randline.sh in the home directory of my profile. Now I needed a simple way to run this command on demand. The script above takes a file an input parameter (in case I want to use a different file later) and I didn&apos;t want to have to type a lot of stuff every time. This is where the profile script comes to the rescue! I didn&apos;t have one yet, so I created a simple file called .bash_profile in my home directory and gave it an edit. I added the following line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias tag=&quot;~/randline.sh ~/Documents/UltimateTagList.txt&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can put your tag file anywhere really. Start up your terminal again, which will reload the profile, and simply type in &quot;tag&quot; to see what random item you get. I love it. I combine this with a couple signature designs I whipped up in &lt;a href=&quot;http://www.wisestamp.com/&quot;&gt;WiseStamp&lt;/a&gt; and life is good! I just paste the tag into my placeholder in my signature and things are done in a matter of seconds.&lt;/p&gt;
&lt;p&gt;Eventually I&apos;ll try to get around to writing (or finding) and app that will simply import my tags and generate my random signatures, but this was great fun for me, as sick as it sounds. If you&apos;re interested in getting your own started, use the code above at the &quot;ultimate tag line list&quot; I threw together and enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Play That Funky Music By Wild Cherry</title><link>https://dillieo.me/posts/growth/2011-06-17-song-of-the-week-play-that-funky-music-by-wild-cherry/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-06-17-song-of-the-week-play-that-funky-music-by-wild-cherry/</guid><description>Song Of The Week Play That Funky Music By Wild Cherry</description><pubDate>Fri, 17 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you can&apos;t half laugh at yourself and half get a groove on, then you need some funk in your life...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Here it is, my own &quot;personal anthem&quot; for a while now, play that funky music. Complete with funk, crazy lyrics, and some good &apos;ol fashion groove!&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87163&lt;/p&gt;
</content:encoded></item><item><title>Sorting Latitudelongitude Positions By Distance In Sql</title><link>https://dillieo.me/posts/development/2011-06-16-sorting-latitudelongitude-positions-by-distance-in-sql/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-06-16-sorting-latitudelongitude-positions-by-distance-in-sql/</guid><description>Map Points</description><pubDate>Thu, 16 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My recent project involved a database with lots of &quot;location points&quot; that were based on latitude and longitude. A user would be able to specify some pertinent information (such as address, state, or even county) and the location points would be displayed for the user. The results from this search came back in a relatively random order, but what we needed was a way to sort our search results in relation to the center point in our map &quot;view box&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;In our scenario, the end user would put in a basic search (address, zip code, county, etc.) into our form parameters and we&apos;d send this to the &lt;a href=&quot;http://code.google.com/apis/maps/index.html&quot;&gt;Google Maps API&lt;/a&gt; to update our &quot;view box.&quot; Using the &quot;box&quot; coordinates generated by the API, we then would go into our own database to grab which location points were within the bounds of the view, dynamically put points on the map, and then display a list below the map that the user could interact with further. We wanted this list to be sorted according to the distance, which hadn&apos;t been done before.&lt;/p&gt;
&lt;p&gt;Fortunately, all of the hard work has been done, it is just a matter of piecing things together. When calculating distances, it is important to remember that the earth is a curve, so doing straight line comparisons don&apos;t work. What you need to calculate is the &lt;a href=&quot;http://en.wikipedia.org/wiki/Haversine_formula&quot;&gt;haversine&lt;/a&gt; length between two points, which includes the curvature of the earth in this. There was a great overview of how to calculate haversine distances (as well as how to optimize it) in a &lt;a href=&quot;http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL&quot;&gt;presentation&lt;/a&gt; by one of the MySQL gurus.&lt;/p&gt;
&lt;p&gt;Generally speaking, if you have a couple of variables (say MyLat and MyLon) and you have a table called &quot;location&quot; with the &quot;lat&quot; and &quot;lon&quot; columns accordingly, you&apos;d query your locations and their distance with the following query:&lt;/p&gt;
&lt;p&gt;SELECT *,&lt;/p&gt;
&lt;p&gt;3956 * 2 * ASIN(SQRT(POWER(SIN((@MyLat - location.lat) * pi()/180 / 2), 2) + COS(@MyLat * pi()/180) * COS(location.lat * pi()/180) * POWER(SIN((@MyLon - location.lon) * pi()/180 / 2), 2))) AS Distance&lt;/p&gt;
&lt;p&gt;The only glitch with this example to our scenario was that the examples relied upon a single point to calculate distance from. The scenario outlined in the examples were for showing the closest hotels from your location, or something similar. In our case, we were getting the Southwestern and Northeastern points in which we could display a box with for our view. What I needed to do was to find the midpoint of these two points, which would identify the center of our box and allow us to do the calculations with. Fortunately, Stack Overflow came to the rescue (yet again) and gave me a nice formula on &lt;a href=&quot;http://stackoverflow.com/questions/4656802/midpoint-between-two-latitude-and-longitude&quot;&gt;finding the midpoint of two latitude/longitude coordinates&lt;/a&gt;. The answer was written in Java, but it was easy enough to convert to SQL code.&lt;/p&gt;
&lt;p&gt;With all this in place, I was able to create the following stored procedure:&lt;/p&gt;
&lt;p&gt;CREATE PROCEDURE [dbo].[GetLocations] ( @latsw float, @lonsw float, @latne float, @lonne float, @type nvarchar(20), @status nvarchar(7), @county nvarchar(20) ) AS&lt;/p&gt;
&lt;p&gt;BEGIN&lt;/p&gt;
&lt;p&gt;SET NOCOUNT ON&lt;/p&gt;
&lt;p&gt;DECLARE @dLon float DECLARE @radLat1 float DECLARE @radLon1 float DECLARE @radLat2 float DECLARE @radLon2 float DECLARE @radMidLat float DECLARE @radMidLon float DECLARE @degMidLat float DECLARE @degMidLon float DECLARE @Bx float DECLARE @By float&lt;/p&gt;
&lt;p&gt;-- Since we are given the coordinates of the outer corner points of the -- box, we need to calculate the midpoint of these coordinates in order -- to do the proper distance calculation. SET @dLon = RADIANS(@lonne - @lonsw) SET @radLat1 = RADIANS(@latsw) SET @radLon1 = RADIANS(@lonsw) SET @radLat2 = RADIANS(@latne) SET @radLon2 = RADIANS(@lonne) SET @Bx = COS(@radLat1) * COS(@dLon) SET @By = COS(@radLat2) * SIN(@dLon) SET @radMidLat = ATN2(SIN(@radLat1) + SIN(@radLat2), SQRT((COS(@radLat1) + @Bx) * (COS(@radLat1) + @Bx) + @By * @By)) SET @radMidLon = @radLon1 + ATN2(@By, COS(@radLat1) + @Bx) SET @degMidLat = DEGREES(@radMidLat) SET @degMidLon = DEGREES(@radMidLon)&lt;/p&gt;
&lt;p&gt;-- The distance is calculated from the midpoint using the haversine formula&lt;/p&gt;
&lt;p&gt;SELECT [site_id], [site_name], [lat], [lon], [city], 3956 * 2 * ASIN(SQRT(POWER(SIN((@degMidLat - sm_sites.lat) * pi()/180 / 2), 2) + COS(@degMidLat * pi()/180) * COS(sm_sites.lat * pi()/180) * POWER(SIN((@degMidLon- sm_sites.lon) * pi()/180 / 2), 2))) AS Distance&lt;/p&gt;
&lt;p&gt;FROM [location] WHERE [Lat] BETWEEN @Latsw AND @LatNE AND [Lon] BETWEEN @LonSW AND @LonNE ORDER BY Distance ASC&lt;/p&gt;
&lt;p&gt;END&lt;/p&gt;
&lt;p&gt;When I did a search on something with a small recordset that has records I have knowledge of (like Yavapai County), I got the following results back before the sort was in place:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;No. Name                     City/State/Postal Code
1 Prescott Water District    Prescott Valley, AZ 86303
2 Quality Inn                Prescott, AZ 86301
3 Roadrunner Rentals         Camp Verde, AZ 86322
4 Davidsons                  Prescott, AZ 86301
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Assuming we have the center of Yavapai county targetted (which we did) having Camp Verde in second to last wasn&apos; t accurate, it should have been the last, as well as our Prescott Valley reference.&lt;/p&gt;
&lt;p&gt;After the sorting algorithm was put into place, our results were much more fine tuned:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;No. Name                    City/State/Postal Code
1 Quality Inn               Prescott, AZ 86301 
2 Prescott Water District   Prescott Valley, AZ 86303
3 Davidsons                 Prescott, AZ 86301
4 Roadrunner Rentals        Camp Verde, AZ 86322
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice how our Camp Verde entry is down at the end (as it should be) and we have some better sorting on our Prescott/Prescott Valley entries. Since Prescott is a little oddly shaped, there is a chance that we&apos;d have a PV entry closer than from the center to another Prescott entry, which could be on the opposite end of town.&lt;/p&gt;
&lt;p&gt;Hopefully this gives you some code to work with if you have to do your own geospatial calculations. The nice thing is that this can all be done in the database, so you can leverage its processing on that side of things. You may need to optimize your query more based on how many records your entire database has (ours is relatively small) but one of the &quot;MySQL Guru&quot; link will help you out with that.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Si La Vie Demande Ca By Native</title><link>https://dillieo.me/posts/growth/2011-06-10-song-of-the-week-si-la-vie-demande-ca-by-native/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-06-10-song-of-the-week-si-la-vie-demande-ca-by-native/</guid><description>Native</description><pubDate>Fri, 10 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had the privilege of spending a couple of summers in France back in college and while I didn&apos;t listen to too much radio out there (I should have) one group a friend a friend got me hooked on was a duo named Native.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The one song that kept playing over and over was &quot;Si la vie demand ça&quot; or &quot;If life demands it&quot; Catchy tune, and the lyrics where rather interesting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ton sourire habite toujours chez moi Sur les murs et les coins de ma vie, il me torture ou bien il me ravit. Je le garderai volontiers sur moi Car jamais il ne m&apos;a trahie, ici, il sera toujours à l&apos;abri.Si j&apos;ai la haine, ça n&apos;en vaut pas la peine C&apos;est inutile, si l&apos;amour est un dilemme, c&apos;est aussi pour ça qu&apos;on l&apos;aime !&lt;/p&gt;
&lt;p&gt;Si la vie demande ça Je peux la comprendre, jamais je ne voudrais la décevoir. C&apos;est la vie qui veut ça. Et elle devra l&apos;apprendre, je suis prête à me battre encore pour toi Encore pour toi.&lt;/p&gt;
&lt;p&gt;Ce n&apos;est qu&apos;un souvenir à présent, trop beau et je nous en veux tellement Qu&apos;un si tendre amour devienne un tourment. Je vais oublier les portes qui claquent Les sauts de nos humeurs un peu fantasques Arrêter d&apos;être la flèche à ton arc. Si seulement la douceur de nos joies me suit Tout ce que je n&apos;ai jamais su te dire, dans mon coeur va rester enseveli.&lt;/p&gt;
&lt;p&gt;Si j&apos;ai la haine, ça n&apos;en vaut pas la peine C&apos;est inutile, si l&apos;amour est un dilemme, c&apos;est aussi pour ça qu&apos;on l&apos;aime !&lt;/p&gt;
&lt;p&gt;Si la vie demande ça Je peux la comprendre, jamais je ne voudrais la décevoir. C&apos;est la vie qui veut ça. Et elle devra l&apos;apprendre, je suis prête à me battre encore pour toi Encore pour toi.&lt;/p&gt;
&lt;p&gt;Oh oh yeah yeah... Oh oh oh oh...&lt;/p&gt;
&lt;p&gt;Si j&apos;ai la haine, ça n&apos;en vaut pas la peine C&apos;est inutile, si l&apos;amour est un dilemme, c&apos;est aussi pour ça qu&apos;on l&apos;aime !&lt;/p&gt;
&lt;p&gt;Si la vie demande ça Je peux la comprendre, jamais je ne voudrais la décevoir. C&apos;est la vie qui veut ça. Et elle devra l&apos;apprendre, je suis prête à me battre encore pour toi. Si la vie demande ça Je peux la comprendre, jamais je ne voudrais la décevoir. C&apos;est la vie qui veut ça. Et elle devra l&apos;apprendre, je suis prête à me battre encore pour toi Oui pour toi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or translated...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your smile still lives at my home On the walls and corners of my life, I torture or it delights me. I&apos;ll keep me happy on Because he never betrayed me, here, there will always be safe.If I hate, it is not worth the trouble It is useless, if love is a dilemma that is also why we love it!&lt;/p&gt;
&lt;p&gt;If life demand it I can understand, I never want to disappoint her. That&apos;s life who wants it. And she will learn it, I&apos;m ready to fight again for you Even for you.&lt;/p&gt;
&lt;p&gt;This is only a memory now, too beautiful and I want so much to us That a tender love becomes a torment. I&apos;ll forget the doors slamming Breaks our moods a bit whimsical Stop being the arrow to your bow. If only the sweetness of our joys is following me All I&apos;ve ever known to tell you in my heart will stay buried.&lt;/p&gt;
&lt;p&gt;If I hate, it is not worth the trouble It is useless, if love is a dilemma that is also why we love it!&lt;/p&gt;
&lt;p&gt;If life demand it I can understand, I never want to disappoint her. That&apos;s life who wants it. And she will learn it, I&apos;m ready to fight again for you Even for you.&lt;/p&gt;
&lt;p&gt;Oh yeah oh yeah ... Oh oh oh oh ...&lt;/p&gt;
&lt;p&gt;If I hate, it is not worth the trouble It is useless, if love is a dilemma that is also why we love it!&lt;/p&gt;
&lt;p&gt;If life demand it I can understand, I never want to disappoint her. That&apos;s life who wants it. And she will learn it, I&apos;m ready to fight again for you. If life demand it I can understand, I never want to disappoint her. That&apos;s life who wants it. And she will learn it, I&apos;m ready to fight again for you Yes to you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Google translate did a fair job, there&apos;s some more cultural references that could be expounded. Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87185&lt;/p&gt;
</content:encoded></item><item><title>This Whole Social Media Thing</title><link>https://dillieo.me/posts/growth/2011-06-06-this-whole-social-media-thing/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-06-06-this-whole-social-media-thing/</guid><description>Social Media Lunch</description><pubDate>Mon, 06 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was given a fabulous opportunity this past week to take part in the &lt;a href=&quot;http://socialmedia301.com/&quot;&gt;Social Media 301 conference&lt;/a&gt; put on by my new employer &lt;a href=&quot;http://www.freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt;. I&apos;ll admit I&apos;ve had limited to social media in the bigger picture. I do a bit of tweeting, I keep dibs on friends via Facebook, but that&apos;s really about the extent of my knowledge on the topic. This conference was entertaining and enlightening in ways I never knew.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;To some extent, I think a lot of folks get the wrong impression of social media in the business realm. Most likely they&apos;ve found a twitter feed of a company that is doing nothing but rehashing all of the news blurbs or commercials you can already see on their main page. Or they may have a Facebook page but with nothing really on it, or nobody to actually engage with you to discuss the product.&lt;/p&gt;
&lt;p&gt;Social Media 301 went into this to really help define what it means to be an effective business with a social media presence. The keynote speaker was &lt;a href=&quot;http://twitter.com/briansolis&quot;&gt;@briansolis&lt;/a&gt;, who is probably the leading authority on new media. But on top of this there was &lt;a href=&quot;http://twitter.com/coryedwards&quot;&gt;@coryedwards&lt;/a&gt;, the social director for Dell, &lt;a href=&quot;http://twitter.com/elhoust&quot;&gt;@elhoust&lt;/a&gt;, the global events social media manager for Cisco, &lt;a href=&quot;http://twitter.com/theclimbergirl&quot;&gt;@theclimbergirl&lt;/a&gt;, the social media specialist for REI, and a whole heap more. The &lt;a href=&quot;http://socialmedia301.com/speakers/&quot;&gt;entire list&lt;/a&gt; of speakers is very impressive indeed!&lt;/p&gt;
&lt;p&gt;Among the list of stories and tools used for social media, the underlying concept that was reiterated, surprisingly enough, was that nothing can top the face to face contact between company and user. Ultimately the person needs to be reached, and social media can help get them there. Did you know that Dell has a program where all the naysayers and trolls get to come in and vent their frustrations with a real life person?! They&apos;ve converted a couple of folks to come work with them that way. REI has some regional twitter accounts in hopes to get a more intimate connection with some of users it supports. Boeing took the hint and converted their site from being more investor oriented to being more informative and user friendly, posting some test videos of new braking systems where the wheels caught fire at the end, demonstrating how their emergency braking system preserved the plane from crashing. As the Boeing person explained, sure the person seeing this video can&apos;t afford to purchase a Boeing plane, but the next time that person is at the airport chatting with their airline representative and say, &quot; I really like Boeing&quot; then that connection is made and their brand is enhanced.&lt;/p&gt;
&lt;p&gt;Behind the scenes, so to speak, was the actual twitter feed going on for the conference. You could call it the &quot;meta conference&quot; if you&apos;d like. You can still view the archive of the event by checking out the #sm301 or #smc301 hash tags. To some extent this amazed me more than the presentations. As the conference is going, you have a good dozen or so folks tweeting good points the speaker makes, adding insightful questions, and re-tweeting insights by fellow members. The keynote speaker joked (or maybe not so much) that if you were looking up at him while he spoke, then he wasn&apos;t being effective. To some degree, listing, glancing at a slide, and then interacting with the speakers statements, and the other participants, was when a truly successful presentation was occuring. The photo above was taken during the lunch break, where a lot of folks folks (I&apos;m sure) got to meet for the first time (or a reunion) and chat in person, where the best connections occur.&lt;/p&gt;
&lt;p&gt;At one point during the conference, the #sm301 hash tag was invaded by spammers, looking to find the largest current trends and sucker some people into spam/virus/mayhem type sites. Without much effort, the group simply &quot;changed rooms&quot; by using the #smc301 hash tag for all of the conversations and things were back to business as usual. I even put in a request to twitter support to see if they could clean things up in there and by the late afternoon it was safe to swim in both waters for a while.&lt;/p&gt;
&lt;p&gt;At another point during the conference, it was announced that a guy had tickets to the U2 concert that was going on Saturday in town. Adding a social media angle to things, he wanted to bring people from four different generations (Millenialist, Baby Boomer, Traditionalist, Gen X) of twitter users to get to the concert together. There was one slot left and a gal in our group was interested. Without fail I think about half a dozen of us tweeted this guy and pointing to the gal that wanted to go and she got the ticket! Good deed done through the power of social media.&lt;/p&gt;
&lt;p&gt;This conference really helped show where social media can do things right, by being an extension to touch the people behind the twitter handles and facebook pages to do some good. To help them connect with other users of their product, or help them troubleshoot an issue. Sometimes just having a little bit of fun with your fellow users isn&apos;t too shabby either. While I&apos;m no business man myself, this conference exposed me to some really great things that can happen through social media.&lt;/p&gt;
</content:encoded></item><item><title>First Day On The Job</title><link>https://dillieo.me/posts/development/2011-06-01-first-day-on-the-job/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-06-01-first-day-on-the-job/</guid><description>Me at the Office</description><pubDate>Wed, 01 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;3:15 AM - I give my honnie and kids a kiss and head out the door. I&apos;ve got a bit of driving to do, and I don&apos;t know what the delay will be at the airport once I get there. I&apos;m excited for the new job today. I know it&apos;ll be a while before I actually hit the ground running, but that gives me some time to brush up on some reading on the plane I need to do for work. Jen&apos;s headlight went out last night and I needed to re-splice a plug on it since she&apos;s heading down to Phoenix tomorrow at night.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0169.jpg&quot; alt=&quot;Departure&quot; /&gt;&lt;/p&gt;
&lt;p&gt;5:30 AM - Security went a lot longer than I thought, so it was a good thing I got their earlier. I got worried because they had overbooked the flight. I was offered a $300 voucher if I wanted to wait until later, but I explained it was my first day on the job and I need to get their earlier rather than later. The ticket gal smiled and worked her magic to get me a boarding pass. Next time I&apos;m taking advantage of my web checkin options. 8^D&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0170.jpg&quot; alt=&quot;Rainy Hotel View&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After a battle with some traffic, I finally make it to my hotel. I figure it&apos;ll be better to check in there first since I know I&apos;m going to be slinging code and getting into things right away at work. Typical to Washington weather, it is abou 60 degrees with a light rain. Kind of nice change in pace for things. I like the change in weather.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0171.jpg&quot; alt=&quot;Rainy Feet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;However, THESE are the shoes I wore for the trip. I guess you really can&apos;t take the So. Cal. out of the boy after all. 8^D I have a pair of nicer shoes that will match my pants tomorrow for the meeting, but I guess I&apos;ll get my feet a little wet and give some folks a laugh. C&apos;est la vie.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0172.jpg&quot; alt=&quot;Teddy and Lion&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Of course, Rylee and Haylee gave me their special friends to keep me company on the trip. They&apos;ll watch over the hotel room. Time to get to work!!!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0174.jpg&quot; alt=&quot;Work Logo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hazzah! I step into the office and it&apos;s good to see some old/new friends again. I really bond well with the team here at Fresh. We exchange some greetings and it was like I never left. Steve is the lead developer and my guru, so we immediately sit down and start talking about the meetings we&apos;ll have over the next few days. Oh, and there&apos;s two meetings today with T-Mobile I didn&apos;t know about, so I gotta brush up on my skills quick! In the meantime, Jeff brings by a couple of bottles that are being given out at the social media conference they&apos;re hosting at Microsoft&apos;s campus on Friday:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0176.jpg&quot; alt=&quot;Fresh Soda&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Elisha our designer did some SWEET work with getting the logo&apos;s just right, and apparently Jones soda does promotions this way. We have green apple flavor and vanilla bean flavors. I&apos;d love to take these home on the plane, but security won&apos;t allow it. Maybe I&apos;l just have to drink them. For the record, that coffee cup has water in it, but I had a good sized straight up coffee BEFORE that.&lt;/p&gt;
&lt;p&gt;So now things move into a blur. I pull up my Win7 virtual machine to pull down the .Net project I had been doing side work for before I got the full job. I also need to get a few things installed on the primary Mac instance since there are another 3 PHP based sites I&apos;m gong to work on, and we want to make sure they&apos;re running locally on my computer before I leave on Friday. Steve is a shell guru and I&apos;m starting to pick up the power of the command prompt once again. I&apos;m learning cool things like the &quot;brew&quot; package installer for OSX and we&apos;re talking about setup and PHP glitches along the way.&lt;/p&gt;
&lt;p&gt;All of the sudden it&apos;s time to leave for the T-Mobile meetings. One of them has been rescheduled, so it&apos;s just the debug meeting. Apparently one of the sites that we recently pushed out is experiencing odd timeout behavior. After LOTS of command line mayhem, with simultaneous logins to the server to track the timing of things, it&apos;s really starting to look like there&apos;s a proxy server issue or something going on with the network traffic. Steve tells them he&apos;ll detail a message out for them on what to send to their IT folks and hopefully that will resolve things. Just another job well done.&lt;/p&gt;
&lt;p&gt;We get back to the office and spend the next few hours working on getting one of my other sites online. There are a lot of dependencies and unique configurations to customize, and stepping through all the glitches is a TREMENDOUS learning experience. Never stop learning right?! Eventually it gets to be about 6:30 and everybody is calling it quits for the night. I&apos;m going to meet Steve in the morning to talk about the client we meet with tomorrow before we head over. I&apos;m a morning person anyway, so I&apos;ll have some time in the morning to tweak up my sites a bit more on Kierkegaard (the laptop).&lt;/p&gt;
&lt;p&gt;I pick up a sandwich and get back to the hotel in time to talk with the girls via Skype before they go to bed. I think they&apos;ve grown a few months just in the day I&apos;ve not seen them. They&apos;re looking tired, so we make it a short call, and Jen says she&apos;ll call back later after they&apos;ve crashed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0178.jpg&quot; alt=&quot;Evening Shot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By evening/night the sky has cleared up. It is gorgeous up here with all the lush green land. Eventually it gets dark and the night skyline becomes visible. On the side here is the cityline, and on the back side from the hotel is the &quot;country line&quot;. Pretty amazing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-06-img_0179.jpg&quot; alt=&quot;Nightline&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Jen calls me back up and we enjoy a bit more of the night just catching up a bit while she works on &quot;Chadder&quot; for VBS. It truly is a marvel at how technology can keep people close like this. Sure we&apos;re not face to face, but video does so much more than a phone call for connecting. We&apos;re both pretty beat, so we call it a night. I&apos;ll talk to everybody in the morning again before I head out.&lt;/p&gt;
&lt;p&gt;All in all this day was busy and amazing. There&apos;s so much to do here at Fresh that it can be overwhelming at times. But the team is awesome and we have the tools we need to get things done. I&apos;m excited for the next few days ahead with the team and then continuing to work with them from home. I&apos;m extremely happy I&apos;ve made this change, and things can only go up!&lt;/p&gt;
</content:encoded></item><item><title>The New Developer Rig</title><link>https://dillieo.me/posts/development/2011-05-31-the-new-developer-rig/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-31-the-new-developer-rig/</guid><description>My development setup.</description><pubDate>Tue, 31 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tomorrow I start my new job at &lt;a href=&quot;http://freshconsulting.com&quot;&gt;Fresh Consulting&lt;/a&gt;, for which I&apos;m extremely excited. As part of the process, we both agreed that I should be ready to hit the ground running once I get up there and have my developer setup ready to roll. They have been VERY gracious in supporting me and here is the result!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;So what you&apos;re looking at here is the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MacBook Pro - For all my basic/mobile editing needs.&lt;/li&gt;
&lt;li&gt;Acer 23 inch monitor - Great for the dual screen setup you see.&lt;/li&gt;
&lt;li&gt;Microsoft Natural Keyboard Elite 4000 - I&apos;ve used these for about 5+ years now.&lt;/li&gt;
&lt;li&gt;Logitech Wireless Trackball M570 - You either love them or hate them, and I LOVE them!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But wait, you may notice there&apos;s a Windows 7 wallpaper showing up on the screen. In my role I&apos;m going to be developing on all fronts, and I need a solid .Net environment for me to work in. The solution? VMWare Fusion. I was able to get Windows 7 and Visual Studio 2008/2010 Express on there in no time, as well as SQL Server 2008 Express on there for any database work I need. I&apos;ve also have a Ubuntu install setup through Fusion as well just in case I need it. What I REALLY like about Fusion is that it gives me a &quot;Unity Mode&quot; where the &quot;box&quot; that the OS sits in goes away and I can work with the applications as native apps on the screen.&lt;/p&gt;
&lt;p&gt;My software rig is looking like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Text Wrangler - Basic code updates&lt;/li&gt;
&lt;li&gt;XCode / MonoDevelop / PhoneGap - Potential mobile solutions&lt;/li&gt;
&lt;li&gt;VMWare Fusion&lt;/li&gt;
&lt;li&gt;Kindle App for OSX - For my reference materials and the occasional fun read on the plane.&lt;/li&gt;
&lt;li&gt;SQL Server 2008 - For DB Work&lt;/li&gt;
&lt;li&gt;Visual Studio Express 2008 / 2010 - Apps for both .Net Frameworks&lt;/li&gt;
&lt;li&gt;TOAD for MySQL / SQL Server - Toad is the best DB explorer out there AND its free. Try it!&lt;/li&gt;
&lt;li&gt;...and I&apos;m sure there&apos;s other stuff I&apos;m forgetting about too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m quite excited because with this setup, I don&apos;t think there is anything I can&apos;t do, unless my twisted sense of imagination doesn&apos;t dream it up. For that I can only tip my hat to Fresh and say here I come and I won&apos;t let you down!&lt;/p&gt;
&lt;p&gt;Oh, you may notice a little black device off to the side of everything on the desk. That&apos;s Whister 2.0, my 32 GB iPod Touch 4th generation that was a congratulations / father&apos;s day / birthday gift from the family. I&apos;m VERY happy with Whistler and was touched my wife thought of me to make this happen. I&apos;m already doing tons of fun things (like photos from a hike with the girls) as well as tracking my flight information and rental stuff on it. We even tried out Skype on it once so the family can chat with me when I&apos;m gone on my trips up to Bellevue.&lt;/p&gt;
&lt;p&gt;And of course, you have to have a lightsaber next to you at all times. 8^D&lt;/p&gt;
</content:encoded></item><item><title>In Memorial Of Our Veterans</title><link>https://dillieo.me/posts/growth/2011-05-30-in-memorial-of-our-veterans/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-05-30-in-memorial-of-our-veterans/</guid><description>In honor of our veterans</description><pubDate>Mon, 30 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m not typically one who does the e-mail forward chain, but I found this one rather profound and fitting for today. To all veterans out there, I salute you and cannot thank you enough for your sacrifice for my freedom, and my family&apos;s. THANK YOU.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Suddenly By Superchick</title><link>https://dillieo.me/posts/growth/2011-05-27-song-of-the-week-suddenly-by-superchick/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-05-27-song-of-the-week-suddenly-by-superchick/</guid><description>Song Of The Week Suddenly By Superchick</description><pubDate>Fri, 27 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been a long road for my family over the past few years. Finances, health, family events, you name it. There&apos;s been a lot of prayer and a lot of sheer will power to keep things going at times, but I think things are finally at the end and a new chapter is coming.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My girls start kindergarten and we&apos;ve been blessed with money to pay for their entire tuition for the year. I start a new job soon that is everything and more that it&apos;s cracked up to be. I get to stay home while working. Minus a few teeth and the like, family is healthier. A new chapter is beginning.&lt;/p&gt;
&lt;p&gt;During those really hard nights or mornings, there would be prayer, and sometimes some music to remind me of where I&apos;m at and where I will be going one day. I know of a God that does not eliminate all pain, but transforms it. Eventually, or even suddenly (as it seems to have occurred with us) the clouds break.&lt;/p&gt;
&lt;p&gt;Enjoy the lyrics and the music.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Suddenly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;She feels lost in her own life Treading water just to keep from slipping under And she wonders if she’s where she’s supposed to be&lt;/p&gt;
&lt;p&gt;Tired of trying to do it right Her dreams are just to far away to see how steps she’s making Might be taking her to who she’ll be&lt;/p&gt;
&lt;p&gt;CHORUS&lt;/p&gt;
&lt;p&gt;And suddenly it isn’t what it used to be And after all this time it worked out just fine And suddenly I am where I’m supposed to be And after all the tears I was supposed to be here&lt;/p&gt;
&lt;p&gt;She feels locked in her own life Scared of what she might lose if she moves away from who she was And she’s afraid of being free&lt;/p&gt;
&lt;p&gt;There’s a way she knows is right She can’t feel the things she knows And so each step she’s taking is a step of faith toward who she’ll be…&lt;/p&gt;
&lt;p&gt;And here where the night is dark It’s black She feels the fear And the light is farthest back And through her tears She can’t see the dawn is coming Skies will clear And the light will find her where she’s always been…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87181&lt;/p&gt;
</content:encoded></item><item><title>Another Chapter</title><link>https://dillieo.me/posts/growth/2011-05-25-another-chapter/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-05-25-another-chapter/</guid><description>Graduation</description><pubDate>Wed, 25 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My girls graduated from Pre-School today. Man where does the time go?!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week The Smashup</title><link>https://dillieo.me/posts/development/2011-05-20-song-of-the-week-the-smashup/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-20-song-of-the-week-the-smashup/</guid><description>Smash-Ups Cover</description><pubDate>Fri, 20 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So what do you get when you take Audio Adrenaline, Steven Curtis Chapman, and Grits? A pretty kickin&apos; track, that&apos;s what!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;A long while back, I was avidly trying to complete my Audio Adrenaline archives and searching through the iTunes store and stumbled across this weird song that had AA, Steven Curtis Chapman AND Grits together. Thinking maybe it was some live album (and I had a free song download), I decided to give it a whirl. Instead of a live album, I got a really clever &quot;smash up&quot; of the music track and the lyric tracks from the three songs! It turns out they had a whole album of them and eventually I got all of the tracks.&lt;/p&gt;
&lt;p&gt;I only wish they made a follow-up album to it.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87167&lt;/p&gt;
</content:encoded></item><item><title>Unboxing</title><link>https://dillieo.me/posts/development/2011-05-19-unboxing/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-19-unboxing/</guid><description>unboxing</description><pubDate>Thu, 19 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, ya gotta hand it to Apple. They give you a nice unboxing experience...&lt;/p&gt;
&lt;p&gt;Oh, and mad props to the updated WP iOS app. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Sql 2005 Crud Templates</title><link>https://dillieo.me/posts/development/2011-05-16-sql-2005-crud-templates/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-16-sql-2005-crud-templates/</guid><description>Sql 2005 Crud Templates</description><pubDate>Mon, 16 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes it just handy to have a set of templates to use when you&apos;re cranking out new stored procedures in your database. Here are a set of &quot;templates&quot; I&apos;ve developed over time to make my life easier, and leverage a few tricks and features.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: These scripts work on most databases, but a few things (such as table variables) are SQL 2005 specific. You may have to modify a few things if you&apos;re going to use these elsewhere.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;These templates will query against a basic table called &quot;Team&quot; here&apos;s the script to create the table below:&lt;/p&gt;
&lt;p&gt;Notice we have a standard auto-incrementing Id and a nice little value called &quot;IsActive&quot; that will allow us to prevent a team from being visible in say a dropdown list, but also keep foreign key integrity. The other thing to notice are the last 4 columns. We use those columns for auditing purposes. You can keep dibs on when a record is created, and by putting in the proper code, you can track when a record was last updated. We default these values to the current date and current user logged in to make sure we have a value, even if none is specified in the stored procedures.&lt;/p&gt;
&lt;p&gt;On to the procedures. First up is a simple insert:&lt;/p&gt;
&lt;p&gt;( @vchName varchar(100), @vchDescription varchar(500), @vchEmail As varchar(100), @bitIsActive As bit, @vchCreatedBy varchar(50) ) AS SET NOCOUNT ON SET XACT_ABORT ON&lt;/p&gt;
&lt;p&gt;BEGIN TRAN&lt;/p&gt;
&lt;p&gt;IF @vchCreatedBy IS NULL SET @vchCreatedBy = suser_sname()&lt;/p&gt;
&lt;p&gt;INSERT INTO [dbo].[Team] ([Name], [Description], [Email], [IsActive], [CreatedBy], [UpdatedBy]) VALUES (@vchName, @vchDescription, @vchEmail, @bitIsActive, @vchCreatedBy, @vchCreatedBy)&lt;/p&gt;
&lt;p&gt;SELECT [Id] FROM [dbo].[Team] WHERE [Id] = SCOPE_IDENTITY()&lt;/p&gt;
&lt;p&gt;COMMIT TRAN GO GRANT EXECUTE ON [dbo].[usp_insTeam] TO [AppUser]; GO&lt;/p&gt;
&lt;p&gt;Pretty straight forward. You can potentially modify who is inserting the record, or let impersonation do its things. Notice I&apos;ve also granted an imaginary user (AppUser) execute on this procedure.&lt;/p&gt;
&lt;p&gt;Next up is the update:&lt;/p&gt;
&lt;p&gt;( @intId int, @vchName varchar(100), @vchDescription varchar(500), @vchEmail As varchar(100), @bitIsActive bit, @vchUpdatedBy varchar(50), @dtmUpdatedDate datetime ) AS DECLARE @dtmOriginalUpdatedDate datetime&lt;/p&gt;
&lt;p&gt;SET NOCOUNT ON SET XACT_ABORT ON&lt;/p&gt;
&lt;p&gt;BEGIN TRAN&lt;/p&gt;
&lt;p&gt;IF @vchUpdatedBy IS NULL SET @vchUpdatedBy = suser_sname()&lt;/p&gt;
&lt;p&gt;SELECT @dtmOriginalUpdatedDate = [UpdatedDate] FROM [dbo].[Team] WHERE [Id] = @intId&lt;/p&gt;
&lt;p&gt;IF @dtmOriginalUpdatedDate IS NULL BEGIN RAISERROR(&apos;CONCURRENCY ERROR: Original and Current UpdatedDate values do not match.&apos;, 16, 1) RETURN END&lt;/p&gt;
&lt;p&gt;IF DATEDIFF(s, @dtmOriginalUpdatedDate, @dtmUpdatedDate) &amp;gt; 1 OR DATEDIFF(s, @dtmOriginalUpdatedDate, @dtmUpdatedDate) &amp;lt; -1 BEGIN RAISERROR(&apos;CONCURRENCY ERROR: Original and Current UpdatedDate values do not match.&apos;, 16, 1) RETURN END ELSE BEGIN UPDATE [dbo].[Team] SET [Name] = @vchName, [Description] = @vchDescription, [Email] = @vchEmail, [IsActive] = @bitIsActive, [UpdatedBy] = @vchUpdatedBy, [UpdatedDate] = @dtmUpdatedDate WHERE [Id] = @intId&lt;/p&gt;
&lt;p&gt;SELECT [Id], [Name], [Description], [Email], [IsActive], [CreatedBy], [CreatedDate], [UpdatedBy], [UpdatedDate] FROM [dbo].[Team] WHERE [Id] = @intId END&lt;/p&gt;
&lt;p&gt;COMMIT TRAN GO GRANT EXECUTE ON [dbo].[usp_updTeam] TO [AppUser]; GO&lt;/p&gt;
&lt;p&gt;Here we leverage the UpdateDate parameter to do a concurrency check. Ideally you&apos;ll have the entire record, or at least the UpdateDate and Id of the record you&apos;re modifying presented to the user. When you submit an update request, you pass the UpdateDate you currently have, if somebody has modified the record since you last loaded it, the UpdateDate fields won&apos;t match, and you&apos;ll get the error.&lt;/p&gt;
&lt;p&gt;Here&apos;s our delete procedure:&lt;/p&gt;
&lt;p&gt;SET ANSI_NULLS ON; GO SET QUOTED_IDENTIFIER ON; GO --============================================================================= -- Author: Sean Patterson -- Created: 4/11/2011 -- Purpose: Sample App -- Details: This stored procedure removes a team record from the Team table. -- A concurrency check is performed to make sure the record has not -- been updated since the user last saw it. -- Example: exec dbo.usp_delTeam 42, &apos;5/1/2011&apos; -- -- Modifications (Date - Author: Details) --============================================================================= CREATE PROCEDURE dbo.usp_delTeam ( @intId int, @dtmUpdatedDate datetime ) AS DECLARE @dtmOriginalUpdatedDate datetime&lt;/p&gt;
&lt;p&gt;SET NOCOUNT ON SET XACT_ABORT ON&lt;/p&gt;
&lt;p&gt;BEGIN TRAN&lt;/p&gt;
&lt;p&gt;SELECT @dtmOriginalUpdatedDate = [UpdatedDate] FROM [dbo].[Team] WHERE [Id] = @intId&lt;/p&gt;
&lt;p&gt;IF @dtmOriginalUpdatedDate IS NULL BEGIN RAISERROR(&apos;CONCURRENCY ERROR: Original and Current UpdatedDate values do not match.&apos;, 16, 1) RETURN END&lt;/p&gt;
&lt;p&gt;IF DATEDIFF(s, @dtmOriginalUpdatedDate, @dtmUpdatedDate) &amp;gt; 1 OR DATEDIFF(s, @dtmOriginalUpdatedDate, @dtmUpdatedDate) &amp;lt; -1 BEGIN RAISERROR(&apos;CONCURRENCY ERROR: Original and Current UpdatedDate values do not match.&apos;, 16, 1) RETURN END ELSE BEGIN DELETE FROM [dbo].[Team] WHERE [Id] = @intId END&lt;/p&gt;
&lt;p&gt;COMMIT TRAN GO GRANT EXECUTE ON [dbo].[usp_delTeam] TO [AppUser]; GO&lt;/p&gt;
&lt;p&gt;Again we use the concurrency check feature when removing a record. We might not want to remove the record if an update has been made, or if it&apos;s already been removed.&lt;/p&gt;
&lt;p&gt;The final two queries in our templates are selecting and searching. The select is standard:&lt;/p&gt;
&lt;p&gt;SET ANSI_NULLS ON; GO SET QUOTED_IDENTIFIER ON; GO --============================================================================= -- Author: Sean Patterson -- Created: 4/11/2011 -- Purpose: Sample App -- Details: This stored procedure retrieves a single team record or all team -- records from the Team table based onthe Id specified. -- Example: exec dbo.usp_selTeam 42 -- -- Modifications (Date - Author: Details) --============================================================================= CREATE PROCEDURE dbo.usp_selTeam ( @intId int )&lt;/p&gt;
&lt;p&gt;AS SET NOCOUNT ON SET XACT_ABORT ON&lt;/p&gt;
&lt;p&gt;BEGIN TRAN&lt;/p&gt;
&lt;p&gt;SELECT [Id], [Name], [Description], [Email], [IsActive], [CreatedBy], [CreatedDate], [UpdatedBy], [UpdatedDate] FROM [dbo].[Team] WHERE ( [Id] = @intId OR @intId IS NULL )&lt;/p&gt;
&lt;p&gt;COMMIT TRAN GO GRANT EXECUTE ON [dbo].[usp_selTeam] TO [AppUser]; GO&lt;/p&gt;
&lt;p&gt;We can pull all of our records or just a single one depending on what you need.&lt;/p&gt;
&lt;p&gt;The final query is the search query, and my personal favorite, partially because it has taken a few apps to really get this one to work smoothly:&lt;/p&gt;
&lt;p&gt;SET ANSI_NULLS ON; GO SET QUOTED_IDENTIFIER ON; GO --============================================================================= -- Author: Sean Patterson -- Created: 04/12/2011 -- Purpose: Sample App -- Details: This stored procedure retrieves a team record from the Team -- table that matches the search parameters specified. The -- procedure also allows for a list of Ids to be provided as a -- search parameter. -- Example: exec dbo.usp_selTeamSearch NULL, NULL, &apos;Programmer&apos;, NULL, NULL -- -- Modifications (Date - Author: Details) --============================================================================= CREATE PROCEDURE dbo.usp_selTeamSearch ( @vchTeamIdList varchar(MAX), @vchName varchar(100), @vchDescription varchar(500), @vchEmail varchar(100), @bitIsActive bit ) AS&lt;/p&gt;
&lt;p&gt;SET NOCOUNT ON SET XACT_ABORT ON&lt;/p&gt;
&lt;p&gt;-- Create temporary table to parse the list of team Ids. DECLARE @tblTeamId table ( TeamId int )&lt;/p&gt;
&lt;p&gt;DECLARE @bitTeamList bit DECLARE @vchTeamId varchar(MAX) DECLARE @intCharIndex int&lt;/p&gt;
&lt;p&gt;-- Allow the user to specify an empty string as a search parameter, but -- sanitize this to NULL for proper search results IF @vchTeamIdList = &apos;&apos; SET @vchTeamIdList = NULL IF @vchName = &apos;&apos; SET @vchName = NULL IF @vchDescription = &apos;&apos; SET @vchDescription = NULL IF @vchEmail = &apos;&apos; SET @vchEmail = NULL&lt;/p&gt;
&lt;p&gt;-- Parse TeamId list into a table if any Ids have been specified. SET @bitTeamList = 0&lt;/p&gt;
&lt;p&gt;IF @vchTeamIdList IS NOT NULL BEGIN SET @bitTeamList = 1 SET @vchTeamIdList = LTRIM(RTRIM(@vchTeamIdList))+ &apos;,&apos; SET @intCharIndex = CHARINDEX(&apos;,&apos;, @vchTeamIdList, 1)&lt;/p&gt;
&lt;p&gt;IF REPLACE(@vchTeamIdList, &apos;,&apos;, &apos;&apos;) &amp;lt;&amp;gt; &apos;&apos; BEGIN WHILE @intCharIndex &amp;gt; 0 BEGIN SET @vchTeamId = LTRIM(RTRIM(LEFT(@vchTeamIdList, @intCharIndex - 1)))&lt;/p&gt;
&lt;p&gt;IF @vchTeamId &amp;lt;&amp;gt; &apos;&apos; BEGIN INSERT INTO @tblTeamId ( TeamId ) VALUES ( CAST(@vchTeamId AS int) ) END&lt;/p&gt;
&lt;p&gt;SET @vchTeamIdList = RIGHT(@vchTeamIdList, LEN(@vchTeamIdList) - @intCharIndex) SET @intCharIndex = CHARINDEX(&apos;,&apos;, @vchTeamIdList, 1) END END END&lt;/p&gt;
&lt;p&gt;BEGIN TRAN&lt;/p&gt;
&lt;p&gt;IF @bitTeamList = 1 -- Retrieve final results, joining the table of parsed Ids SELECT [Id], [Name], [Description], [Email], [IsActive], [CreatedBy], [CreatedDate], [UpdatedBy], [UpdatedDate] FROM [dbo].[Team] INNER JOIN @tblTeamId tblTeam ON dbo.Team.Id = tblTeam.TeamId WHERE (@vchName IS NULL OR [Name] = @vchName) AND (@vchDescription IS NULL OR [Description] = @vchDescription) AND (@vchEmail IS NULL OR [Email] = @vchEmail) AND (@bitIsActive IS NULL OR [IsActive] = @bitIsActive) ELSE SELECT [Id], [Name], [Description], [Email], [IsActive], [CreatedBy], [CreatedDate], [UpdatedBy], [UpdatedDate] FROM [dbo].[Team] WHERE (@vchName IS NULL OR [Name] = @vchName) AND (@vchDescription IS NULL OR [Description] = @vchDescription) AND (@vchEmail IS NULL OR [Email] = @vchEmail) AND (@bitIsActive IS NULL OR [IsActive] = @bitIsActive)&lt;/p&gt;
&lt;p&gt;COMMIT TRAN&lt;/p&gt;
&lt;p&gt;SET NOCOUNT OFF GO GRANT EXECUTE ON [dbo].[usp_selTeamSearch] TO [AppUser]; GO&lt;/p&gt;
&lt;p&gt;The first feature of this search is that you can pass in a comma delimited list of Ids in order to return. This comes in handy if you need to pull a subset of selected records for display/modification for the user without having to make multiple calls to the usp_selTeam procedure. The second feature of this search is that it allows you to optionally search columns. If you don&apos;t want to apply the search to a column, simply specify NULL or an empty string when calling the procedure. This makes the procedure quite versatile in many situations.&lt;/p&gt;
&lt;p&gt;A couple of downsides to the search is that it doesn&apos;t allow you to search for a NULL value in a given field. In addition, the search performs an &quot;inclusive&quot; search, which requires a matching record to match ALL of the parameters specified in order to come back in the results. Generally speaking, I think these two cases are more on the fringe for your day to day apps. In addition, it is easy enough to create a second procedure that changes all of the AND clauses and make them OR instead.&lt;/p&gt;
&lt;p&gt;I hope these templates makes your coding a little easier, or gives you some ideas on your next project. Enjoy!&lt;/p&gt;
&lt;p&gt;If you want all of them for your reference, you can download them &lt;a href=&quot;http://dl.dropbox.com/u/5720926/SQL2005_CRUD_Templates.7z&quot;&gt;here&lt;/a&gt;. (Requires &lt;a href=&quot;http://7-zip.org/&quot;&gt;7-zip&lt;/a&gt; to extract).&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Until My Heart Caves In By Audio Adrenaline</title><link>https://dillieo.me/posts/life/2011-05-13-song-of-the-week-until-my-heart-caves-in-by-audio-adrenaline/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2011-05-13-song-of-the-week-until-my-heart-caves-in-by-audio-adrenaline/</guid><description>Until My Heart Caves In Cover</description><pubDate>Fri, 13 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This song of the week is part repost, part celebration, and also to feature my favorite band, Audio Adrenaline. My girls turn 5 years old this weekend (wow where does the time go?!?!?!), and this song is my &quot;anthem&quot; to them. Here&apos;s the repost from nearly 2 years ago...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I think most fathers have &quot;Butterfly Kisses&quot; or some other song as an &quot;anthem&quot; of sorts when relating to their daughters. It&apos;s that one song that they&apos;ll have to dance to when they get married. It&apos;ll probably be that song that&apos;ll go through their head when reminiscing on wonderful things.&lt;/p&gt;
&lt;p&gt;For me, it&apos;s a little different. We had some Jen&apos;s friend and her husband over for dinner the other night and she had asked to hear the story of our girls. Their 3 months in the NICU, and how that went. Amidst the rush of memories that started coming back, I remember many nights during those months where I was driving out to the hospital around 9 or 10 at night to drop some stuff off and read them a story. I had recently purchased the latest Audio Adrenaline CD and this song just seemed to resonate more than the rest:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m a warrior, I’m a warrior I would die for You, for You My love is fierce, I’m a warrior I would die for You, for You I’m a warrior with a warrior’s heart And it burns for You, for You My love is fierce, I’m a warrior I would die for You, give it all for You I won’t give up, I won’t give up on You I won’t give up on You I will sing Your name until my heart caves in Until my heart caves in&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(&lt;a href=&quot;http://www.audioa.com/default2.aspx&quot;&gt;Until my Heart Caves In&lt;/a&gt; - From the album of the same title.)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unrelenting, full of zeal, fiercely loving. Haylee, Rylee, daddy will remain that way for you until the end, until my heart caves in.&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87195&lt;/p&gt;
</content:encoded></item><item><title>A Fresh Start</title><link>https://dillieo.me/posts/growth/2011-05-12-a-fresh-start/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-05-12-a-fresh-start/</guid><description>Fresh Logo</description><pubDate>Thu, 12 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It has been a busy and crazy road for me the last few months. Between Qakbot slaying and app writing, I&apos;ve also been working on reading up on the latest HTML5/CSS specs (hence the book reviews), working on an iPhone app, and working some side projects that have kept me up late at night.&lt;/p&gt;
&lt;p&gt;I&apos;m please to share that some of this hard work has paid off in the form of a career move for me.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Starting June 1st I&apos;ll be working with a company based out of Bellevue, Washington called Fresh Consulting as one of their developers. I had started doing a side job for them, and was really impressed by their approach to collaboration and development of web solutions within the scope of the new social media and other factors that are at play today. They do a great job of blending the technical, the business, and the marketing angles involved.&lt;/p&gt;
&lt;p&gt;The team is small, but growing, and there are some great projects on the horizon. In addition, I am going to get to work from home, with a trip up to beautiful Washington once a month to collaborate with the team in person and potentially sit in on meetings with clients.&lt;/p&gt;
&lt;p&gt;I am EXTREMELY excited for this opportunity to get involved with some &quot;fresh&quot; tech, as well as work from home and continue to progress in my software craftmanship. It is always hard to leave one team for another. The folks at the county are a great team, and I&apos;ve gotten a lot of inspiration from them. They will be missed.&lt;/p&gt;
&lt;p&gt;Thanks for reading and thank you Fresh Consulting. I won&apos;t let you down!!!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Riding With The King By Bb King And Eric Clapton</title><link>https://dillieo.me/posts/development/2011-05-06-song-of-the-week-riding-with-the-king-by-bb-king-and-eric-clapton/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-06-song-of-the-week-riding-with-the-king-by-bb-king-and-eric-clapton/</guid><description>Riding With The King Cover</description><pubDate>Fri, 06 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Similar to what happens when Duke Ellington and Louie Armstrong get together (will be another song of the week I promise), bringing together B.B. King and Eric Clapton can only result in an album that is amazing.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I first found out about this album a good 10 years ago or so while I was in France, yes France of all places. The guy I was helping out invited me over to dinner and I happened to see it when I was over for dinner. I only had to make it through the first song and I bought the album immediately when I got back to the states.&lt;/p&gt;
&lt;p&gt;Here&apos;s the first track off the album. It&apos;s really hard for me to &quot;analyze&quot; it, it is just straight up fun and powerful blues. Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87175&lt;/p&gt;
</content:encoded></item><item><title>Review Html 5 Step By Step</title><link>https://dillieo.me/posts/development/2011-05-05-review-html-5-step-by-step/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-05-review-html-5-step-by-step/</guid><description>Review Html 5 Step By Step</description><pubDate>Thu, 05 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;![Step by Step Book Cover(@assets/@assets/images/posts/2011-05-stepbystephtml5.gif)&lt;/p&gt;
&lt;p&gt;I&apos;ve been trying to get whatever reference books I can find to learn about HTML 5. Being a seasoned HTML web coder, I was surprisingly refreshed by the &quot;ground up&quot; approach I found in &lt;em&gt;HTML5 Step By Step&lt;/em&gt; by Faithe Wempten.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Step by Step&lt;/em&gt; takes a very natural progression to learn HTML5. It starts you with the fundamentals of HTML. It teaches you how to code using a simple text editor and a web browser to create and view your web pages. The book slowly builds upon itself, getting into CSS stylesheets, form inputs, and eventually gets into some more advanced formatting techniques with div layouts. The final chapter in the book shows you how to used a more advanced web editing tool (Microsoft Expression Web) to do some of the same tasks you have done earlier. The book also contains a few appendices which aid in broader design issues, such as older browsers, style sheet guidelines, and even markup of pages to assist those that are blind or deaf. A list of old HTML tags that have been &quot;retired&quot; with the arrival of HTML 5 is also listed.&lt;/p&gt;
&lt;p&gt;What I really appreciate about this approach is that often times a beginner will jump straight into the advanced web editing tool, without understanding the fundamentals of HTML. When this happens, sometimes code can be cluttered, or errors can be made because the user is often dealing with the &quot;pretty view&quot; of things and not understanding the ramifications of simply dragging items into the work area. In addition, &quot;HTML 5&quot; is an update (an albeit significant one) to the &quot;HTML specification&quot;, and often times books treat HTML 5 as a separate entity. This book treats all &quot;HTML 5&quot; as a &quot;HTML&quot;, only making a few notes indicating what features are new.&lt;/p&gt;
&lt;p&gt;Step by Step HTML 5 is a great way for anybody to get started with learning to create web pages, regardless of experience. This book will most likely not be valuable to seasoned HTML programmers, but it is also handy if they want a refresher with HTML, including the features of HTML 5. They will find the appendices helpful that cover design considerations. You can get the book from the O&apos;Reilly site at &lt;a href=&quot;http://oreilly.com/catalog/9780735645264/&quot;&gt;http://oreilly.com/catalog/9780735645264/&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Qakbot Diagnosis And Removal</title><link>https://dillieo.me/posts/development/2011-05-02-qakbot-diagnosis-and-removal/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-05-02-qakbot-diagnosis-and-removal/</guid><description>Qakbot Diagnosis And Removal</description><pubDate>Mon, 02 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Having been through my own wild adventure of a Qakbot infection on a large internal network (see Day 1 if you&apos;re looking for a &quot;dramatic&quot; reading of things), I thought it might be helpful to provide more of a &quot;data sheet&quot; approach to Qakbot if you&apos;re looking for just the facts.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m sure there is more to it than what I encountered, so please add more facts/info if you&apos;ve run into it or found valuable information. Hopefully nobody else will be caught so off guard as we were. It is a good chance we suffered a Zero Day attack of it.&lt;/p&gt;
&lt;h2&gt;Synopsis&lt;/h2&gt;
&lt;p&gt;Qakbot is currently in a third generation variant of itself. It consists of a trojan that typically comes down through a web page or file attachment. Once infected, Qakbot will &quot;dial home&quot; and retrieve additional modules to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scan and retrieve financial information from the system&lt;/li&gt;
&lt;li&gt;Spread itself out to other machines, typically through network shares&lt;/li&gt;
&lt;li&gt;Protect itself by disabling virus protection software and blocking access to files/registry settings when removal is attempted.&lt;/li&gt;
&lt;li&gt;Install a backdoor for future access/use by the intruder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We encountered the following variants of the virus. There are trojans and backdoor versions of them all:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Win32.Qakbot.B&lt;/li&gt;
&lt;li&gt;Win32.Qakbot.!genB&lt;/li&gt;
&lt;li&gt;Win32.Qakbot.F&lt;/li&gt;
&lt;li&gt;Win32.Qakbot.arc3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It should be noted that Qakbot is VERY intelligent at protecting itself once it has infected a system. We had found instances where current virus definitions stated the virus was cleaned, but upon restart the system had been reinfected, even while disconnected from the network. One reader of my blog (thanks Terry) noted that the virus had created a scheduled task to reinfect itself every 4 hours.&lt;/p&gt;
&lt;p&gt;We had noted in our own tests that anytime a new network connection was made, or an existing one pinged, the virus attempted to ride that connection and infect the source/destination system. We found one instance where a fresh virus scan was being run on an infected server, and the virus attempted to reach out again, almost knowing that it was about to be removed. The virus also removes critical ACL (access control list) access to virus scanning and administrative services, so doing a manual removal of the virus becomes difficult, if not impossible.&lt;/p&gt;
&lt;h2&gt;Signs&lt;/h2&gt;
&lt;p&gt;We encountered a few &quot;signs&quot; when examining systems that indicated a system had been infected:&lt;/p&gt;
&lt;p&gt;A folder with a random file name (typically about 8 characters long) that resides in one of the following locations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Root of a USB thumb drive.&lt;/li&gt;
&lt;li&gt;In the C:\ProgramData folder in Windows 7&lt;/li&gt;
&lt;li&gt;In the &quot;C:\Documents and Settings\All Users\Application Data&quot; folder in Windows XP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Upon right clicking the &quot;My Computer&quot; icon to change settings (in both Win7 and WinXP) the Symantec installer immediately fired up an &quot;install&quot; process. It typically took 3 consecutive cancel commands to make it go away.&lt;/p&gt;
&lt;p&gt;A brief &quot;malfunction&quot; status of the virus scanner and then a sudden change to &quot;normal&quot;&lt;/p&gt;
&lt;h2&gt;Articles&lt;/h2&gt;
&lt;p&gt;Here are a few noteworthy articles, dealing with the third generation variant, or some additional details about the third variant, mixed in with the older variants.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_qakbot_in_detail.pdf&quot;&gt;Detailed Qakbot Analysis by Symantec&lt;/a&gt; (PDF Format)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.trendmicro.com/third-generation-qakbot-repackaged-with-improved-propagation/&quot;&gt;Trend Micro Article about 3rd Generation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://about-threats.trendmicro.com/RelatedThreats.aspx?language=us&amp;amp;name=QAKBOT%3A+A+Prevalent+Infostealing+Malware&quot;&gt;Visual diagram of how Qakbot works (Trend Micro)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.symantec.com/security_response/writeup.jsp?docid=2009-050707-0639-99&amp;amp;tabid=2&quot;&gt;Symantec Profile, including some browser exploits it uses to get onto the system, as well as sites it dials home to (some old)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.symantec.com/business/support/index?page=content&amp;amp;id=TECH158678&quot;&gt;Symantec best practice document for Qakbot removal.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Removal&lt;/h2&gt;
&lt;p&gt;We were originally using Symantec Antivirus, and while we abandoned the software, they had released a tool that will restore ACL access to the system. After running the ACL fix tool, it is assumed you can then update your virus definions and rescan the system. We were not able to do this successfully. The tool can be downloaded &lt;a href=&quot;http://www.symantec.com/security_response/writeup.jsp?docid=2011-042105-0220-99&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Trend Micro also provides a &quot;HouseCall&quot; application that has to connect to the Internet, but was proven to be able to find and clean out Qakbot. You can get the tool &lt;a href=&quot;http://housecall.trendmicro.com/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our solution involved disconnecting the computer from the network, uninstalling any existing virus scanning software, and installing Microsoft Forefront Endpoint Protection. This is the &quot;corporate&quot; version of Microsoft Security Essentials, which has also been reported to protect and clean Qakbot. We also installed the latest definitions and intrusion scanner updates (while disconnected) and then ran a full scan of the machine, letting it fully clean before rebotting the system and repeating the process. In some instances when a clean uninstall of our old software didn&apos;t work, FEP could forcefully remove it for us.&lt;/p&gt;
&lt;p&gt;You can download FEP &lt;a href=&quot;http://www.microsoft.com/forefront/endpoint-protection/en/us/default.aspx&quot;&gt;here&lt;/a&gt; or MSE &lt;a href=&quot;http://www.microsoft.com/security/pc-security/mse.aspx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Definitions/Updates can be found through the directions &lt;a href=&quot;http://www.microsoft.com/security/portal/Definitions/HowToForeFront.aspx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In some instances, we had difficulties installing on Windows XP due to a missing &quot;filter pack&quot; The KB reference (and file) that fixes this information can be found &lt;a href=&quot;http://support.microsoft.com/kb/914882&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you have any other details to contribute, please help others and add it here. Hopefully we can prevent others from the mayhem we went through here.&lt;/p&gt;
</content:encoded></item><item><title>Diary Of A Qakbot Infection Day 7 The Slayer</title><link>https://dillieo.me/posts/development/2011-04-29-diary-of-a-qakbot-infection-day-7-the-slayer/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-29-diary-of-a-qakbot-infection-day-7-the-slayer/</guid><description>Slayer Name tag</description><pubDate>Fri, 29 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR - We&apos;ve reached cleanup mode for Qakbot, and are going to analyze what happened, the good, the bad, and the ugly to better handle this situation next time.&lt;/p&gt;
&lt;p&gt;Note: There is no day 6 since I had taken the day off for the holidays.&lt;/p&gt;
&lt;p&gt;It&apos;s been a long weekend, and I&apos;m feeling tired, but I know my teammates are feel far more tired than I am, since most of them came in yesterday to work on the infection. I walk in to the war room to get some updates and see if I can spread some light hearted encouragement to anybody that&apos;s there. It&apos;s going to be another busy day, hopefully not as intense as Saturday, but when you&apos;re body is tired, even small things can become big. I hear that we&apos;re probably up to 80% or 90% capacity with things, which is excellent news. I make a side comment about how everybody has been upgraded to slaying the virus, not merely killing it, and then say that maybe I should just call myself &quot;Buffy the Qakbot Slayer&quot; for the day as we finish things up. This draws some laughs from the folks there, and it inspires me enough to go make a quick name tag. The way I see it, if you can&apos;t keep things somewhat light amidst a struggle like this, you&apos;re not living life quite right. I make it, and immediately get a couple of chuckles and a couple of perplexed looks by some more teammates as they walk into the war room. This will be fun. I can get work done AND provide an indirect test to see those who are Buffy fans or not.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;There&apos;s talk about having all of the programmers go over to the tech support office this morning to help man the phones while the tech support crew is out doing follow up. Networking turned on the internal network on Sunday so that folks can get back to their normal things. However, with some of the role changes that were made, and a little bit of confusion that follows bringing a major system like this online, there will be plenty of calls for help coming in. I&apos;ll be honest here, I&apos;ll take my marching orders as they come down to me, but I&apos;d rather be in the middle of the action still. While talk of this and other things starts to bubble up with the incoming teammates, one of the Tech Support ninjas I was working with yesterday is heading down to the first floor of our building to follow up with one of the larger departments that was hit hard. There are a few red tagged machines that need to be sent over to the tech support office for formatting or password cracking, and their remote workers are bringing in their laptops to be scanned. I ask if she could use an extra set of hands, to which she replies &quot;Sure.&quot; I grab my &quot;slayer tools&quot; and head downstairs.&lt;/p&gt;
&lt;p&gt;We get downstairs and are greeted by a couple of members from this department. They are extremely grateful for what we&apos;ve done over the weekend, and had a couple of general questions. One person looks at my name tag and laughs, the other looks at me a little funny, then at the co-worker who is laughing at me. As the ninja is answering questions and giving the rundown on what we&apos;re doing here, one person comes by and mentions one of the remote worker laptops are already in, sitting in an empty cube. I tell the ninja I can handle that while she does her rounds. I get the laptop fired up and scanning within a few minutes. The process is probably ingrained like muscle memory into my system now, and another two laptops come in towards the end of the process, which I make quick work of.&lt;/p&gt;
&lt;p&gt;Once this is finished, I overhear a person asking for help about one of their applications, and walk over to take a peek. I know there are going to be some networking related issues since the public Internet is still cut off, and there are still exception cases to be made. With the ninja standing there as well, we watch the person fire up the app, and see the error message. It&apos;s rather cryptic, but we continue. The app loads and there&apos;s an area in the app with the typical 404 style error you find in Internet Explorer. The employee fires up a second application, more of a green screen terminal type program, and notes they can&apos;t get anywhere with it. Both of these look like network related issues, so I call up to the &quot;war room hotline&quot; that networking has setup and immediately get dropped into a conference call type setup. After checking with the guys up there, we quickly diagnose the issue as related to having external resources still shut off. They know the app I&apos;m talking about and get that particular site opened up to traffic. In a couple of minutes they are looking good.&lt;/p&gt;
&lt;p&gt;In the mean time, one of the programming managers comes down with a list in hand. He&apos;s working on getting all the red tagged machines put into a spot where it will be easy to move them out to the tech support building. With everything else in place now, I help him grab a few machines. We&apos;re putting them in a conference room just across the hall in one of the other department&apos;s areas. When I walk in the door with a machine, I&apos;m greeted with thanks and told a couple of machines still aren&apos;t quite working. I put the machine in the collection spot and take a peek. One person just seems to need to wait a smidge longer for the network connections to re-establish. By the time I had returned their issue was resolved. The other needed to have their remote worker laptop scanned, so I make quick work to get that up and running. My programming manager comes in with a couple more machines, and he comments on how there were a few more over here, and one or two upstairs. It looks like we have our duty for the day: go around to the various departments, picking up red tagged machines and providing secondary assistance. That way the tech support folks can help their departments without having to drive around. I like this idea a lot, and the manager already has a couple of spots to hit.&lt;/p&gt;
&lt;p&gt;I go and grab one of the official vehicles to load things into and we load up the car. We hit the tech support are and it&apos;s already loaded with programmers. It looks busy, but not extremely busy, so it was probably a good thing that I found other work to do, since I don&apos;t know how much I would have done. We get our marching orders from the tech support manager. The large building we hit on Saturday needs a few machines picked up, and then we were to go out to our third largest building (a good 20 minute drive away) and pick up/help the guy out there. There were still quite a few machines he couldn&apos;t touch due to locked doors over the weekend, and it is just him out there. We make quick work of building number two and head out to building number 3.&lt;/p&gt;
&lt;p&gt;We spend the rest of the morning helping scan some machines out there (slaying never gets old) and working on a handful of laptops they take out into the field. Oddly enough about four of them present a weird message about a filter pack being needed in order to continue. Fortunately I remember hearing one of the tech bench guys talking to one of our Ops guys over the phone about that precise issue. I call up the Ops line, but the guy is busy. So I call over to the tech bench, and the guy there tells me he&apos;s looking through the directions to make sure the solution works, and then he&apos;ll call me. In the meantime, we go to check up on a few machines we have scanned. One laptop in particular had no CD-ROM drive, so I used my USB key and I could watch the virus jump right onto it the second I put the USB key into the machine and it popped up the explorer to view files. Two or three days ago this would have freaked me out to no end. Now I simply chuckle, knowing that the scan will flush it out safely.&lt;/p&gt;
&lt;p&gt;It&apos;s getting to early afternoon, and we&apos;re starting to get hungry. We bring the tech support guy over to give him the rundown on everything, including the 4 laptops that remain with this filter issue. Like magic, I get a call from tech support. The solution works, but it&apos;s a file to download from Microsoft. Since part of this network isn&apos;t fully turned on yet, I don&apos;t have access to e-mail, and I don&apos;t have a smart phone. After pondering a moment, I tell him to e-mail me the file, and I&apos;ll make it work. The three of us head out to Jack in the Box for tacos (yes, they are awesome, trust me) and some more team bonding. When we finish, the manager and I decide to go back to tech support, drop off the machines we collected, and I can get the patch file needed for the laptops, then we&apos;d head back out and patch them. Sure it seems like a lot of driving, but we&apos;re running the support line now, and that&apos;s what you do.&lt;/p&gt;
&lt;p&gt;When we get back to to tech support. We drop off the machines, get the patch downloaded onto our USB keys, and hear some very encouraging news. By their estimates, we have ~95% of the machines in our fleet (1500) touched and cleaned. All of our servers (~150) are up and running, having been fully cleaned or finishing up their final scan. We&apos;ve effectively turned out a solution over the course of 3 to 4 days (not counting the time to find one) and we&apos;re up to 80% capacity running. We&apos;re still sorting out some networking and permissions issues, but nothing that is disrupting the work of any department. This is very encouraging. All of the team deserved to be dubbed slayers, Jedi, ninjas, what-have-you. It took all of us to make it happen.&lt;/p&gt;
&lt;p&gt;There&apos;s one final remote location in the next town with about 3 computers that need to be scanned. We figure there should be enough time to swing back by building #3, fix those laptops and start the scan, then head out to the remote location. We can start those scans off, since they take about 45 minutes at the minimum, and one of the tech support workers that lives out there can hit up the machines on their way home or to work. Ironically, or not so ironically enough, the last system we scan out there immediately shows signs of an infection, before I even start the full scan. I let the scan start, lock the machine, thank the employees there for letting us invade their space, and let them know somebody will be back tomorrow to scan things. We hop in the car to head back to the office and I figure I should have my manager take a picture of the name tag for posterity&apos;s sake. I&apos;ve already started blogging about this &quot;adventure&quot; and there needs to be at least one picture in the series, right?&lt;/p&gt;
&lt;p&gt;I get back to my cube with about 30 minutes or so remaining in the day. I lay down my weapons, having finally retired from my duties as a Qakbot slayer, but know I may get called into a couple small skirmishes over the next week (a warrior&apos;s job is never fully done). I&apos;m now back into &quot;normal programmer&quot; mode again and take a peek at a couple e-mails. Sadly things have caught up to me by now, and I&apos;m getting one of my notorious migraines. I take some pills and a quick 10 minute nap in hopes of stopping it, but to no avail. Ahh, to be mortal again. Fortunately the kids are still with my in-laws for the evening, so when I get home, my wife takes one look at me and says &quot;Go to bed.&quot; I kiss her gratefully and crash.&lt;/p&gt;
&lt;p&gt;Fin.&lt;/p&gt;
&lt;p&gt;For those of you that have made it this far. I thank you for taking the time to read this. This has kind of evolved a little larger than I had thought, and it&apos;s been kind of nice to be able to extract my though process and interactions on a huge matter such as the infection. I&apos;ve gotten a lot of positive feedback from it, including the comment &quot;I esp love how you turned something frustrating like a virus infestation into something fun to read about. :) Now that&apos;s talent! :)&quot;&lt;/p&gt;
&lt;p&gt;We&apos;re still on the &quot;front line&quot; as far as other entities being infected with this, and it dawned on me that I should probably throw together a more formal &quot;tech sheet&quot; of what we encountered and links to the tools to remove it. You should see that in the next couple of days.&lt;/p&gt;
</content:encoded></item><item><title>Diary Of A Quakbot Infection Day 5 The Ninja</title><link>https://dillieo.me/posts/development/2011-04-28-diary-of-a-quakbot-infection-day-5-the-ninja/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-28-diary-of-a-quakbot-infection-day-5-the-ninja/</guid><description>Diary Of A Quakbot Infection Day 5 The Ninja</description><pubDate>Thu, 28 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR - There are some common patters to how Qakbot infects a machine. Once you understand them, you can quickly make work of them.&lt;/p&gt;
&lt;p&gt;It is a Saturday morning, and I&apos;m typically not going to the office, but today is different. With the Qakbot virus on the run, we&apos;ve pulled another &quot;all hands on deck&quot; type day to really flush this thing out. We meet at 8 in a conference room and everybody is on time, ready to rumble. The director gives us the rundown on what has worked, what initial feedback has been from the various departments, and he starts to take a bit of feedback from various team members on what has been done and/or what needs to be done. Unfortunately this starts to drag out a bit longer than it should be. I feel a bit like a ninja now. I have my tools mastered. I can move quickly and efficiently from computer to computer, killing of Qakbot wherever I see it. I&apos;ve gained a pretty in depth knowledge, so that I can typically surmise an infected machine vs. a clean machine within the first few moments of my encounter with it. I also know how to get behind it and eliminate it when it tries some of its tricks.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Eventually we get to the end of the meeting and all the Tech Support folks move to one side of the room. We are supposed to pair up with one of them and get to work. My &quot;padawan&quot; from yesterday (now a full fledged Jedi Master) and I immediately look at each other without a queue. We want to check up on our location from yesterday. We find the Tech Support guy that has that as his primary station, give him the rundown on our idea (since we also need to check across the street and want to do cleanup of our current building) and he buys in on the plan. This looks to be a good day, we can already tell. He&apos;s very much a &quot;let&apos;s rock this joint&quot; type thing as well, so the ninja clan of 3 set off to do our thing.&lt;/p&gt;
&lt;p&gt;The first stop is across the street to followup on a Networking guy&apos;s scans from yesterday. Unfortunately the &quot;master&quot; key that the director has given us isn&apos;t all that masterful, and so we head out to our location from yesterday. We&apos;re excited to see that all of the machines, sans one, are clean, minus the two that had already started a second scan from yesterday. Ironically enough we were talking with the owner of the one infected machine and they were rather proud in the fact that they don&apos;t do a lot of extraneous surfing or anything on their work laptop, so they were pretty sure they didn&apos;t have it. That said, Qakbot likes to &quot;surf&quot; through your network shares and other internal connections, and given their higher position of authority within the department, they were more likely to be accessing files from the remote shares, and then to get it.&lt;/p&gt;
&lt;p&gt;Using our ninja stealth to quickly clean up this location, we &quot;call it in&quot; to the &quot;clean leaders&quot; so they can come by and do a second approval. The policy has changed over night and now the &quot;clean leads&quot; will double check a location before calling the Networking guys to turn on a VLAN. I&apos;m not sure why this change is in place, but it stands to help out the Networking folks from getting bombarded from multiple locations. I do feel bad for the clean leads though because it is two guys and they will be fielding A LOT of calls today. They also have most of the keys, so we have them meet us at the location we tried to get into before. They have a good set of keys and we make quick work of the location, noting only two machines that need a second scan run on them. I&apos;m looking at my sheet and I&apos;m finally crossing the line where my clean machines are outnumbering my dirty machines that I&apos;ve had to work with. Just below the floor we&apos;re on is the &quot;vault&quot; and a room where old records are kept. We get down there and I find my first &quot;odd&quot; system. It&apos;s a rather large tower case hooked to a HUGE machine named &quot;Taylor&quot;. I have no idea what the device does, but it looks important. And wow! The tower is running a dual Xeon processor setup. Pretty spiffy. However all three admin passwords don&apos;t work with it. We&apos;re at the point where we are to remove the &quot;red tagged&quot; systems so they can be worked on at the Tech Bench, but this one is unique. We put a big note on it and I figure I&apos;ll talk to the gal who is normally in charge with this area on how to proceed.&lt;/p&gt;
&lt;p&gt;With two smaller buildings under our belt, we join the fight at our second largest location for our organization. There are three floors to it as well, but some of them are behind some really tight security, so we have to meet up with the main Tech Support person there to get our marching orders. This was also the point where you learn a valuable lesson about teamwork and how to evaluate what really matters in a situation. When a crisis occurs such as this, there are often a lot of &quot;cooks in the pot&quot; with the best method of how to do things. By now, me and my fellow ninjas have a great system in place on how to work things out. At this location, however, the Tech lead has a different set of rules they want to roll by. They want two full scans, even after the first one comes clean. There are devices to attach, but only after the first scan comes clean. A few other oddities like that. We receive the word and get to work, and don&apos;t bother to argue. What&apos;s the point in that? We need to slay the Qakbot and there&apos;s more than one way to skin a cat. I modify my methodology a little to accomodate for their wishes, and find a happy medium.&lt;/p&gt;
&lt;p&gt;We quickly get to our ninja magic again and discover that the Networking lead is over here kicking the pants off of Qakbot too. I like this guy, we&apos;ve done a lot of brainstorming together through this process, so it&apos;s like greeting a fellow warrior on the battlefield after a long hiatus. We swap some updates about where the networks are at while we go through the machines. In no time we&apos;ve cleared the remainder of items for the room, and head over to the conference room on the first floor. We come in to a room full of laptops. We have some mobile folks in organization, and they require ruggedized laptops with no CD-ROM drives. I find our new programmer there, and give him some works of encouragement and appreciation for coming in on the weekend. Our department secretary is there, and she&apos;s starting to slay Qakbot like it&apos;s nothing. EVERYBODY is doing what they can. The new guy indicates things are a bit slow going since they only have one USB CD-ROM device to hook up to the laptops, and that&apos;s where the ninja magic occurs again. The three of us pull out a USB drive or two each (always come prepared) and we slice through laptops like it is nothing. This is where pipeline architecture REALLY starts to shine. We have a row of a dozen laptops that we literally just walk down a table, prepping each step. I think we have all of them starting to scan within 20 minutes.&lt;/p&gt;
&lt;p&gt;My former Padawan and I go up to the second floor to help with some other scans in the heavily locked down areas. It&apos;s a little eerie, and quiet, since nobody is around. Nearly all of the machines have Qakbot, and the Tech lead for this area laughs and says most of the folks here have free time on their hands. We continue to finish off this area and a few others, and it appears that all of the floors have been scanned and we&apos;re waiting for the results. A lot of us are hungry, including myself, for which even the pizza I brought earlier didn&apos;t satisfy the hunger, so we take a break for about 30 minutes and get some grub. It&apos;s good to break, and eat with folks I normally don&apos;t see on a day to day basis. The comment arises about how well we&apos;ve all worked as a team, crossing beyond our normal duties to make things happen, and how great it is. It is unfortunate that it takes something like this for it to happen. I make a mental note that if I ever do move up into a management type position, I need to figure out a way to make team bonding this effective without the stress of patching 1500 machines and 150 some odd servers over the span of 4 days.&lt;/p&gt;
&lt;p&gt;As we finish lunch, my body starts to protest going back to work. This was expected, and I laugh to myself about it. I start to get into the groove again and all is well with the ninja arts. The team of 3 ninjas pick up a fourth (the Tech gal that normally is in charge of the large building we cleaned yesterday) and we go to the other main building of the other Tech lead. Wow, that sounded vague, but just go with it. This building hasn&apos;t been touched yet, and this is a perfect time to see how well the four of us can meld and get things done, since there are a large number of machines. I won&apos;t get into the nitty gritty, but we work amazingly together and get the whole building up on its first and second scans by the time 7:00 PM rolls around. I think it took the four of us about 3 hours to do it, and I could see it taking a team of 6 longer than us. There was one area we didn&apos;t have keys to access, but that would be tackled tomorrow. Oddly enough I found one machine that Symantec had caught one variant of Qakbot on with the initial boot up, but I still had to flush the system out. It must have gotten some updated definitions before the infection.&lt;/p&gt;
&lt;p&gt;The four ninjas head back to the main building exhausted after a very productive day. Tomorrow is Easter, and I&apos;ve already talked to the director about taking tomorrow off since we have a lot of family plans. He tells me not to worry about it, and I really appreciate his understanding in this matter. Some folks in his shoes could have been really stubborn about it. It&apos;ll be a good break and on Monday I think we&apos;ll be able to finish things off and start to look at what &quot;normal&quot; work looks like again.&lt;/p&gt;
</content:encoded></item><item><title>Diary Of A Qakbot Infection Day 4 Invasion</title><link>https://dillieo.me/posts/development/2011-04-27-diary-of-a-qakbot-infection-day-4-invasion/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-27-diary-of-a-qakbot-infection-day-4-invasion/</guid><description>Diary Of A Qakbot Infection Day 4 Invasion</description><pubDate>Wed, 27 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR - Microsoft Forefront Endpoint Protection has proven it&apos;s worth as a successful Qakbot removal and protection tool. Time to give the virus it&apos;s due!&lt;/p&gt;
&lt;p&gt;I get into work a couple of minutes early, ready for the task ahead. It will be simple, but tiresome. I&apos;ll be hitting as many machines as I can to get Symantec removed, MS FEP installed, and get the first scan kicked off. Along the way I&apos;ll probably be answering questions from some of the employees we encounter. As the digital warrior, I&apos;m armed with three CDs with the software, sticky notes, two pens, a log sheet, directions (already memorized), and a set of stickers to mark machines that have finished the process.&lt;/p&gt;
&lt;p&gt;Green means clean. Red means dead. Yellow is mellow, so we try not to use those...&lt;/p&gt;
&lt;p&gt;I find the Networking guy that I hit the HR office with last night and we go back to survey our battlefield. Most of the machines need a second run, and there&apos;s one machine that the CDROM isn&apos;t working on, so we flag that for somebody else to peek at. After the HR run, we find that 95% of the machines can go through the process we&apos;ve outlined, so those that can&apos;t we simply leave alone or mark with a note, we&apos;ll come back to those as time allows. The building we are in probably has the largest concentration of computers across three floors, and if we can get this entire building &quot;touched&quot; today we will have made excellent progress. We tag a couple of the computers that are clean and start up scans on the rest of them. It&apos;s 7 in the morning, and a few HR folks are already trickling into the office and we give them the rundown on things.&lt;/p&gt;
&lt;p&gt;With the server folks working like mad on the servers, and the networking guys smart enough to have laid out our infrastructure with a nice VLAN structure, the goal is to get all the machines in a given subnet disconnected from the machine and then plug them back in on when they are green. Once we have a few machines clean and online, the networking guys can bring up that particular VLAN (which is still isolated from everybody else and the Internet) and then can start keeping an eye out on it to see if any odd traffic starts to spike, which indicates the virus may still be alive. This also gives us the added benefit of a larger test bed before we spread out to the world at large. Our organization spans a huge geographical area, with some offices a good 45 minute drive away. We have folks stationed out there permanently, but they are going to need extra troops and we don&apos;t want to send a group of people out there if the solution proves faulty.&lt;/p&gt;
&lt;p&gt;Sadly I&apos;ve already found a machine with 5 copies of the virus on it. This thing is wicked ugly, and it just reinforces it. We finish the HR building and the Networking guy needs to tend to networking duties now. I &quot;pass him the rock&quot; tell him to keep fighting the good fight, and now it is a little after 8. My fellow programmers are starting to trickle in, so I grab our new guy (he&apos;s only been here a week or two, what a way to start things out!) and we head down to the second floor, to a department with a lot of computers. I&apos;ve worked with some of them during some special events, so sometimes it is nice to have a friendly face when you&apos;re bombarded with tech people fixing your computers. I notice that two programmers have already started down here, so the four of us look to have the perfect number for the amount of computers we have down here (I&apos;m guessing about 25).&lt;/p&gt;
&lt;p&gt;This is where my operating systems class in college really helps prove a point about the effectiveness of pipeline architecture. Instead of waiting for one machine to finish, I can boot up three machines, walk back to the first and log in and disable restore (which takes a minute), then walk down to the next machine while that&apos;s processing. In the grand scheme of things it takes less time, and as long as you don&apos;t put too many machines, or have to walk too far between them, you don&apos;t have much complexity. I start hammering away at this process and time starts to blur. I talk to a few of the employees a little bit while doing this process and all of them are grateful for the effort we&apos;re putting into this. They understand we&apos;re a little understaffed and have LOTS to support, and having all hands on deck is a testament to how committed we are to them.&lt;/p&gt;
&lt;p&gt;Somewhere along the way scanning machines becomes second nature. I almost don&apos;t need my sticky notes to track the process for each machine, but it is still helpful for those cases where I get interrupted or a colleague comes by to help with the process (we have each others back). Soon the programmer from my office area that was in training come down, armed with stickies, CDs and, stickers. Her training is done and she&apos;s come to join the fight. I take her to be my &quot;Jedi Padawan&quot; and show her the ropes of scanning a system. We come across a couple of machines where the CDROM doesn&apos;t work and it&apos;s about time to find a solution. We start thinking about using a USB key, but are a little wary since we know Qakbot likes to jump to it. However, since the machines are off the network, FEP does it&apos;s job swimmingly, and we&apos;ll make sure to scan the drive before we pull it, this seems like a viable solution afterall. We run upstairs and notice that the &quot;armory&quot; of stickers, pens, and such also has some USB keys. We each grab one and I grab a couple older ones from my office and we quickly transfer the software over to them, and go back to the fight.&lt;/p&gt;
&lt;p&gt;Eventually we get the area done and it&apos;s time for a late lunch. We do a sweep starting at the bottom floor to see if any of our other warriors need help and find a few miscellaneous machines that need tagging or a fresh scan. We can do this process so fast now that it doesn&apos;t seem like much to get one started. Doing all of these small tasks eventually leads up to a half hour or so and my stomach is starting to yell at me, so I force myself to go up and get some food.&lt;/p&gt;
&lt;p&gt;There is some pizza left over from yesterday (somebody was awesome and bought pizza for us) so we run up to get some, and find out that the entire building is &quot;touched&quot; and a fair amount of them are clean. We&apos;ve also discovered that the virus has really gone to town on others, having reset the administrator password or is way too stubborn to have Symantec uninstalled. Reports trickle in that disabling the service can help with the second issue, and I make note of it. In talking with my fellow warriors we discover that one of the smaller buildings that isn&apos;t too far away, hasn&apos;t been touched at all. My &quot;padawan&quot; knows some folks there, and we think there&apos;s enough time in the day for the two of us to go hit that building. We slam down our pizza and head over there.&lt;/p&gt;
&lt;p&gt;Another blur in the space/time continuum arrives again as we get back to &quot;fighting&quot; mode, we each have a couple discs and these machines are a little slower, so we don&apos;t quite make as fast of progress as we probably thought. However, we&apos;ve only worked about an hour past normal closing hours and we have all the machines fired off for a scan. I discover during this process that some of the Windows 7 machines like to hibernate themselves after 20 minutes or so. It baffles me a bit that an active virus scanning process is ignored as activity for the timer that shuts things down, but there&apos;s no time to investigate. I simply disable the power settings, leave the window for that up to remind me to swap it back, and let the system go about it&apos;s business.&lt;/p&gt;
&lt;p&gt;We make it back to &quot;headquarters&quot; and find that the battle has gone really well today. The server guys have taken a huge bite out of the servers that need scanning and a handful of them are back up. The networking guys have been able to bring a VLAN or two back online and the results are looking good for that. The invasion has played out in our favor and we&apos;re confident that our solution is going to stick and we can apply it to the rest of the machines out there. We already know we&apos;re going to be working the weekend and there&apos;s a meeting at 8 in the morning, so I send a word of thanks and encouragement to everybody I can find and head home for a little bit of family time and rest. Tomorrow is another day and there&apos;s more qakbot to eliminate.&lt;/p&gt;
</content:encoded></item><item><title>Diary Of A Qakbot Infection Day 3 War</title><link>https://dillieo.me/posts/development/2011-04-26-diary-of-a-qakbot-infection-day-3-war/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-26-diary-of-a-qakbot-infection-day-3-war/</guid><description>Diary Of A Qakbot Infection Day 3 War</description><pubDate>Tue, 26 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR - If you have a great team you can overcome any obstacle in your way.&lt;/p&gt;
&lt;p&gt;I woke up this morning with my usual routine: shower, coffee with my &quot;God time&quot; (as I tell the girls), and empty the dishwasher that ran last night. The girls were sleeping in late and I had a little extra time, so I decided to get an early jump on Qakbot to see if I could find out anything to help at work.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I donned by Googlian Monk robes and there wasn&apos;t anything new about Qakbot. Interestingly enough the news article ran in the local paper about our delimma was number one in the rankings. Given the fact that we&apos;re a rather &quot;small fish&quot; in the big picture, this was kind of interesting. It also enforced the fact that we were dealing with some issues that were fresh on the market.&lt;/p&gt;
&lt;p&gt;I went back to Twitter, and there was only one entry after my own tweet regarding the issue. It had some japanese characters in the tweet with a shortened link, and I was wary, given my paranoia at the moment about how easily and fast this virus can spread. However, I was on my Mac, which the virus wasn&apos;t targeting, so I figured I could be a little more adventurous and right never EVERY little nugget of information helped. I clicked the link and it went to the Symantec website in Japan. I could barely read any of the characters on it, but amongst the japanese characters were the words &quot;ACL&quot; and &quot;fix&quot;. This is good news! One of the problems we face with Qakbot is the fact that it goes behind the scenes and eliminates Symantec&apos;s ability to do its job. If you try to mess with it too much, the Qakbot will change the ACL (access control list) to the app so you can&apos;t touch it whatsoever. If the proper virus definitions were in place, we could use the ACL tool to gain access, update the definitions, and potentially clean it. I tried using Google&apos;s page translation service, but it didn&apos;t help much. However, we have a coworker that is fluent in Japanese, so I saved the link for him to look at.&lt;/p&gt;
&lt;p&gt;This was good, but I wasn&apos;t quite satisfied with just one solution. So I decided to keep digging. I went over to the SuperUser site (part of the StackExchange network) and decided to type in Qakbot on a whim. There was only one question that came back, and it was regarding general use of anti-virus software. However, one answer (not even the top one) indicated that Microsoft Security Essentials helped them and it was the only one that had stopped Qakbot. The answer was dated in 2010, so there was a good chance they were referring to the 2nd generation version of the virus. I&apos;ve been using MSE myself since it went out to the public and have been very happy with it. It is a small install, does not bog down your computer, and has caught numerous things for us on occasion. I realized that if we went this route we&apos;d be ditching our current anti-virus software program, but we were looking for anything right now, and we have a MS license agreement and this might be covered under it.&lt;/p&gt;
&lt;p&gt;Armed with this information I drove to work. I didn&apos;t bother going to my cube, I went straight to the &quot;war room&quot; where the Ops and Networking offices are connected. The first question I asked was if our Networking guy that speaks Japanese was in yet. He wasn&apos;t, but should be soon. So I waited. In the meantime, I talked with one of our ops guys and he mentioned that Symantec had just released a removal tool. I said &quot;Really?! Because I just saw an ACL fix tool, but it was on their Japanese site!&quot; He showed me the site he found and it was the same one I had found, but in English. It had a timestamp only a few hours ago, so his reasoning was that the solution came up overnight and Japan&apos;s website was updated first. That made sense. But this was exciting, we had an option to pursue.&lt;/p&gt;
&lt;p&gt;While we were all talking about updates from yesterday, one of our Networking guys had mentioned that he had been running his laptop on Microsoft Security Essentials for nearly a week now, and hadn&apos;t seen the the virus at all. I couldn&apos;t believe things were linking up like this! I told him how I had just found a slightly old answer post indicating that MSE worked for another person and specifically mentioned Qakbot. I forget if I went back to the Ops guy I was just talking to or if he overheard us, because he then mentions that Microsoft has an Enterprise type of MSE out called Forefront Endpoint Protection. What&apos;s more, it is covered for free under our enterprise license and they had started tossing around the idea a couple weeks ago of testing it out and maybe swapping over to it.&lt;/p&gt;
&lt;p&gt;This was precisely the momentum we needed. It was about time for a group meeting again and we tossed the idea out on the table. A couple other folks seemed keen on the idea, and we even had a few infected machines, plus a private network we could work with. You could tell there was some light beginning to shine again. Another one of our Ops guys was smart enough to note that we should continue to pursue the Symantec option in case this doesn&apos;t work. I&apos;m excited about what a great team we have. We get to work setting up the &quot;mini lab&quot; and our ops guy give us a CD with the installer plus the latest virus definition and proactive scanning updates. This is another good sign because most likely we&apos;re going to need to be able to patch these systems (provided the solution works) in an offline mode since the second the network goes live, Qakbot likes to try to spread.&lt;/p&gt;
&lt;p&gt;We get an infected XP machine up, remove Symantec, and install Forefront Endpoint Protection (FEP). We set it to do a full scan and realize this is going to take a while. It&apos;s going to touch every file, and this particular machine has a fair amount of files and not the most recent processor on it. In the meantime, our Tech Support guy that has done all the initial digging on the virus comes in and says he has a tool that will detect and remove it too. It&apos;s a free tool called &quot;HouseCall&quot; by Trend Micro, and it seems to catch the virus in about 5 minutes, as opposed to our ongoing process. The only downside to HouseCall is that it requires the machine to get onto the Internet in order to get it&apos;s latest definitions to scan with. This is very promising too!!!! We have three solutions in place now that we can go with, and now we&apos;re in the agonizing &quot;waiting period&quot; to see if FEP works, if Symantec can get back to us, and how HouseCall might fit into things as well. Since we currently only have an XP machine on the FEP scan, I run over and grab my own PC, because I have a good hunch it is infected, that is Windows 7 based, and start up the process as well.&lt;/p&gt;
&lt;p&gt;After a while the scan finishes on the XP machine. Sure enough, it FOUND and CLEANED Quakbot! You could sense relief pouring into the group. The next big step was testing it against future infection. One of our Networking guys hooks up an infected machine to the private network and turns it on. Nothing happens at first. Our Networking guy remembers that the infected machine is looking for some kind of mapped drive vector to get through, so they setup a couple of mapped drives from the clean machine to the dirty machine and then start pinging it. Not even a minute into this our clean machine pops up an alert box. It saw Qakbot coming into it and removed it on the spot! Success!!! We keep the ping going to see if it tries to infect a second time, but oddly nothing happens. We look back into the log and notice that not only had FEP stopped the incoming virus, but since it was located on a mapped share drive, it went out to the other machine and killed it there. Double success!!! We now know that FEP is really aggressive against it. We still need to verify this software will work on our servers as well. We pull a server that has already been shut down and not as critical and get the software setup on it. We have our large meeting with the administrator, so we get it setup and then go to the meeting.&lt;/p&gt;
&lt;p&gt;This group meeting is a lot better than yesterday. The reports of FEP&apos;s initial success is encouraging to those that haven&apos;t been there, and any questions about the program are easily answered. We&apos;re starting to talk about how to fully deploy this all of our machines. We talk a bit about HouseCall as well, but at the moment, the success of FEP and the lack of required Internet connection trumps the speed of HouseCall. Now talks about how to map out deployment get heavier. Ultimately this is a discussion that needs to be handled by a couple of folks outside this meeting, and they are designated. Our Ops guy that is working with Symantec asks how much longer to continue that route. He had been getting good feedback from them, but the directions they had provided wouldn&apos;t work after the first couple of steps due to how bad Qakbot had mucked up the system. He was waiting for some feedback, but wouldn&apos;t wait too much longer given the path we were on.&lt;/p&gt;
&lt;p&gt;I was tasked with training the fellow programmers on how to do a clean of Qakbot using FEP. This process soon became ingrained into my head:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Disconnect the computer from the network.&lt;/li&gt;
&lt;li&gt;Disable System Restore (we don&apos;t want to rollback into an infected state).&lt;/li&gt;
&lt;li&gt;Uninstall Symantec (reboot if it doesn&apos;t force you too).&lt;/li&gt;
&lt;li&gt;Install FEP.&lt;/li&gt;
&lt;li&gt;Install the updated DAT files (scan can&apos;t actually run without them).&lt;/li&gt;
&lt;li&gt;Fire off a full scan.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We used the programmers existing machines and the amazing thing was that with the proactive scanner in place, the trojan version of Qakbot was often caught by the proactive scanner before the full scanner even had a chance to run! Very good news yet again.&lt;/p&gt;
&lt;p&gt;Now it was time for war. It was close to the end of the day, but I wanted to see this in action. I ran over with a Networking buddy over to the HR office, since it was right next door to ours. They have about a dozen computers or so, so this initial battle would be a good test case. A couple of other folks went over to the main adminisrator&apos;s office. Armed with three CDs, we really start to knock out this process on a &quot;pipeline&quot; basis. You boot a computer and disable the restore. Since this can take a minute or two, you go over and start the same process on another computer or two. Then you can come back and start the next step on another computer. By the time we&apos;ve started the scan on all the computers, the first ones are done with their scan. Sure enough, they come back infected. One particular computer had a good 5 infections on it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qakbot.genB (Trojan)&lt;/li&gt;
&lt;li&gt;Qakbot.!genB (Backdoor)&lt;/li&gt;
&lt;li&gt;Qakbot.arc3 (Backdoor) - I suspect the third generation.&lt;/li&gt;
&lt;li&gt;Qakbot.genB (Trojan)&lt;/li&gt;
&lt;li&gt;Qakbot.!genB (Backdoor) - these last two were in a separate location&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It just goes to show how nasty this thing is. After cleaning these machines out, we set them to run a second full scan. We aren&apos;t going to plug them back in until we get a clean bill of health.&lt;/p&gt;
&lt;p&gt;I &quot;pass the rock&quot; to my fellow Networking warrior. The battle went in our favor and we heard a similar story over at the administrators building. We call it a day early, because we know that tomorrow will be a lot of work and we&apos;ll be hitting a lot of machines to clean things out. However, the battle went to an outstanding team today, and tomorrow will look even better.&lt;/p&gt;
</content:encoded></item><item><title>Diary Of A Qakbot Infection Day 2 Speechless</title><link>https://dillieo.me/posts/development/2011-04-23-diary-of-a-qakbot-infection-day-2-speechless/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-23-diary-of-a-qakbot-infection-day-2-speechless/</guid><description>Diary Of A Qakbot Infection Day 2 Speechless</description><pubDate>Sat, 23 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR - Anybody that tells you qakbot is a simple little thing is grossly misinformed. It is a smart, mean, and ugly virus.&lt;/p&gt;
&lt;p&gt;I get into work a few minutes early so I can check in with the Ops guys and see how their night went. It didn&apos;t go well. There was no new developments in stopping the issue, and they now could see that a few of the servers have been infected as well. They are in the process of getting all but the absolutely critical servers shut down, and they&apos;ve told everybody to shut down their computers as well. Except for a few computers the Ops and networking room that are clean, we&apos;re in a state of &quot;darkness.&quot; I hear our director is going to talk to the county administrator and if some kind of press release is going to be made, they&apos;ll want to put it on the web site and that&apos;s where I&apos;ll come in to be able to help a little.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;That reminds me that I have to go check in to my desk. I&apos;m in a small area away from the main area with the rest of the MIS folks, so I know I&apos;ll be doing some walking today. I get to my desk, just as the phone rings on one of my fell web teammate&apos;s phone I answer it, and they were looking for my colleague to get some info on what&apos;s going on, and then realizes she&apos;s out for the day. I give them the basics of what I know (we&apos;re still down, don&apos;t turn on your machine, we&apos;ll make contact with all departments as the situation is updated) and finish the call. It dawns on me that it might be a busy day like this, so I forward the phones of both my web teammates to my phone, check in with my other colleague that is in the office today. They were supposed to be out for training, but their web connection couldn&apos;t handle the video stream and fortunately we have an outside line that is unaffected by the virus. So they came in today to keep with the training. I walk over to the administrators office.&lt;/p&gt;
&lt;p&gt;I get into the reception area and there&apos;s already a group forming. The director is there, as well as two of our Ops guys, the administrator, and a couple of folks from the another department. They&apos;re talking around a computer that is on and known to be infected. Our director is pointing out a couple of tell-tale signs that the system has been infected (folder names that are made out of random characters that sit in the user&apos;s folder, Symantec Antivirus briefly failing upon load and then saying all is fine, weird activity in Internet Explorer). It is asked if we know precisely when and where we got the virus, and the director answers that it we don&apos;t know precisely, but we have a pretty good idea.&lt;/p&gt;
&lt;p&gt;It&apos;s a tale as old as time really about boy meets girl. However in this case the boy is a typical computer user and the girl is a well dressed phishing scam e-mail that they received. The user was doing their typical routine of checking e-mail and a couple news sites and clicked the link in the e-mail that looked a little odd, but nothing too bad. They became distracted with another issue, and when they looked back at the screen, they noticed that there was an odd window on the page and the mouse started acting up. Almost immediately after that they noticed that a couple computers next to them immediately started acting up, and that something had happened.&lt;/p&gt;
&lt;p&gt;With the entire network shut down, there are critical services that still have to be provided, and that&apos;s what the department is here to ask about. We&apos;re getting into triage type services now and the director assures them that their own private network is safe at this point, but they&apos;ll have to identify what other critical services they need and they&apos;ll make it happen. The administrator indicates that they are already working on a press release about the issue, and I tell her I can put it up on the public site whenever they&apos;re ready. She says thank you and I coordinate with her assistant to make that happen.&lt;/p&gt;
&lt;p&gt;I head back to my desk and realize how reliant we are upon computers and the network these days. I know that I&apos;m a programmer and that most of this comes naturally, but at the same time when even some of the basic work functions rely upon it, you quickly become a little speechless at the idea. I decide for the time being that since I don&apos;t have access to a computer, I can do some layout design on my current project on my whiteboard. This is a refreshing exercise because I can easily erase and redesign until I&apos;m happy with things, and then transfer it to a piece of paper for my notes. My artwork is atrocious, but hey, it gets the job done.&lt;/p&gt;
&lt;p&gt;I get the copy of the press release that was sent out and then head over to the Ops section to use one of their computers to access the website. I have to install a couple small pieces of software to get things done, but it takes longer than I had anticipated, but I&apos;ve been tossing out a couple of ideas to the networking and Ops folks as I prepped things and was able to confirm a few thoughts I had on the issue. I get done with the press release and start to head back to my desk. The director, our tech support lead, and a couple of other folks are talking about the issue, and they&apos;re meeting in a little bit with everybody to discuss things. The director looks at me briefly and asks me if I want to sit in on things. At first I&apos;m not sure, since I don&apos;t have any major leads, but I&apos;m always willing to toss in whatever thoughts I have, so I decide to sit in.&lt;/p&gt;
&lt;p&gt;The meeting has a decent amount of folks in it. There&apos;s at least two Ops guys, two tech support guys, the administrator, the heads of all of our groups there. As the meeting begins, I become speechless with what I hear. One of the tech support guys has been the one to do the most research on the issue, tweaking around with a machine. What he&apos;s found is that the virus likes to spread itself through network connections. By default, all our users have at least 2 network connections, so that can be tricky. Worse, it uses some Internet Explorer hacks to start getting more programs down. As he finds a registry hack or a folder that needs removing, the virus comes around right after you and removes your permissions from doing the same thing again. It already knows how to cripple Symantec Antivirus, even with the latest definitions. It is a wicked bugger that we currently don&apos;t have a solid bead on beating. We don&apos;t have the information we need about it in order to stop it. There are talks about reformatting the entire network. That involves roughly 1600 machines and since some of our servers are compromised, we can&apos;t use our Altiris system to fix everybody over the network, since they may get infected, or may get it again by another machine. We could potentially setup some cluster networks offline to fix machines, but again we don&apos;t know what the virus is doing, so reintroducing them to the network would be futile.&lt;/p&gt;
&lt;p&gt;I consider myself a pretty well rounded geek. I focus on slingin&apos; code, but I try to keep my wits about me in regards to servers, networking, programs, and the like. This is one of the few times I&apos;m quite literally speechless about how to even attack the issue. It&apos;s rather humbling I do agree with one of the tech guys that we just need more time to figure this virus out, so we can plan an attack. Our director assures us that we ARE going to fix this issue, and we are all determined to do so. A couple of the networking guys are going to continue to pursue options with Symantec for a fix, and the rest of us are going to look into research and preserving the network. I leave the meeting a little disheartened, but determined.&lt;/p&gt;
&lt;p&gt;I update a couple programmers on things, and talk to Networking about getting a Ubuntu disc to boot off of in the morning. Our network circuit is still open, so I can get out on the net that way to do some more research. It&apos;s already a bit after 5, and we were invited to dinner with some friends, so I plan on hitting things hard tomorrow, don my &quot;Googlian Monk&quot; robes, and try to track down some more information. There&apos;s gotta be something somewhere.&lt;/p&gt;
</content:encoded></item><item><title>Diary Of A Qakbot Infection Day 1 Perplexity</title><link>https://dillieo.me/posts/development/2011-04-22-diary-of-a-qakbot-infection-day-1-perplexity/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-22-diary-of-a-qakbot-infection-day-1-perplexity/</guid><description>Diary Of A Qakbot Infection Day 1 Perplexity</description><pubDate>Fri, 22 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR; - Qakbot is a a complex and odd piece of virus work.&lt;/p&gt;
&lt;p&gt;Tuesday started out like my normal Tuesdays around the office. I got in at 7:00 and went about my normal my normal business of working on the design for the ServiceDesk 2.0 app I&apos;m writing. I also tend to the webmaster folder a bit to help with requests there.&lt;/p&gt;
&lt;p&gt;About 10:00 and odd e-mail comes through the public announcement folder. It turns out there was an outbreak of a virus called &quot;Win32.Qakbot&quot; and we need to reboot our computers to apply a policy fix that should help the issue. Our virus scanner will pick up the slack after that and clean out the infections. Being a bit busy myself, I reboot my machine and continue on my way.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I have a dentist appointment today during my lunch break at 11:00, so I finish off work as usual and check out for lunch. Getting a crown on your tooth is an interesting process, fortunately I&apos;m in the final stretch, so they just have to trim up the crown a little and glue it in.&lt;/p&gt;
&lt;p&gt;I get back a bit early from my lunch break and find my computer shut off and my supervisor, as well as my fellow web team colleague sitting in chairs talking. We&apos;re always filled to the brim with work, so this is rather odd and something goes off in the back of my head. I start talking with them and we find out that rebooting the systems didn&apos;t fix the virus and it has been spreading rapidly throughout the county. As a result, they forced the shut down of all non essential computers and a handful of the servers. They&apos;ll let us know when things are up again.&lt;/p&gt;
&lt;p&gt;It&apos;s blackout time. Always kind of odd, considering how much time I spend on a computer daily and how much we use them for our day to day work. We enjoy the down time a little, but also take the time to talk with our new hire a bit more so he feels more welcome on the team.&lt;/p&gt;
&lt;p&gt;We reach the end of the day and the mood is perplexed, but all in all normal. Tomorrow is Wednesday, and my fellow web team member typically has the day off, and my supervisor is out for surgery. This means it&apos;ll just be me, but again nothing seems wrong, just odd given the days events. I talk to the Ops/Networking guys as I&apos;m heading out the door and offer up a word of support. They&apos;re the true heroes in times like these, because they are relentless in getting things fixed and it often means extra hours. I offer up my services, since I like to help out the team when I can, and they thank me.&lt;/p&gt;
&lt;p&gt;I get home and prepare to take the kids to the pool for swim lessons. Just before I get ready to leave, I get a phone call. It&apos;s work. They&apos;re taking a couple more servers down, but more importantly there is a web application that some of the sheriffs use that since computers are still down, we need to take the app down as well. My supervisor is out, so that leaves me to come in. Taking the web app offline isn&apos;t that difficult, but it takes me a little bit of time to track down where the reroutes go, and to make sure things are disabled properly.&lt;/p&gt;
&lt;p&gt;I use a bit of this time too to search around about Qakbot. There&apos;s not much out there. There are a few articles dated in 2009 talking about it. It indicates that while it is pretty &quot;low&quot; in regards to being out there, it is targeted for financial institutions and once it gets in, it starts mining for data and has a lot of back doors in place to protect it. What gets a little more ominous is another article I find saying that it hit a prominent insurance company few months back. I find another article from a security site indicating they&apos;ve found a third generation variant of this that was recently released. Instead of multiple executables, they&apos;ve repackaged it into a single executable, encrypted the data they steal (they &quot;really want it&quot;) and added to means of eluding specific virus scanners, modifying security, and keeping some back door channels open via IE to dial home and try to get to other things. They say it likes to be spread through network shares, and considering I have about 10 of them on my computer to handle all the websites and apps I support, that can&apos;t be a good thing. I know our network provides each computer with two network shares typically, so this could get out of hand fast.&lt;/p&gt;
&lt;p&gt;I decide to do a quick search on twitter for qakbot and don&apos;t really come up with anything substantial. I see an old link to an article I had read and one person indicating they were fighting it too. I go ahead and leave, giving the Ops and Networking guys one more word of thanks and encouragement. I leave a bit perplexed at what exactly this virus is _[never stop learning, right?], _but I know we have some smart blokes, so they should have this thing licked by morning.&lt;/p&gt;
</content:encoded></item><item><title>Setting Up Roksbox With Itunes And Osx</title><link>https://dillieo.me/posts/development/2011-04-18-setting-up-roksbox-with-itunes-and-osx/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-18-setting-up-roksbox-with-itunes-and-osx/</guid><description>Roksbox Logo</description><pubDate>Mon, 18 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;ve had our Roku Box for about 3 months now and were instantly hooked! The easy access to Netflix, Hulu, and Pandora, not to mention the plethora of channels out there is really amazing. Lately we&apos;ve been wanting to stream our own mp3s from iTunes to the Roku, and found Roksbox as a viable solution.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://roksbox.com&quot;&gt;Roksbox&lt;/a&gt; is a special channel for the Roku Box that will allow you to stream mp3 files from your local web server (or other locations) to the Roku for easy listening. Since all of our music is currently sitting on the Mac, I wanted to see what it would take to get this up and running. The process is tricky, but only because you have to go to a few places to get things setup.&lt;/p&gt;
&lt;p&gt;The first step is to get a web server installed on your Mac. Fortunately this is already done for you (at least from OSX version 10.5 and above as far as I can tell). Simply click the Apple icon from the menu at the top and select &quot;System Preferences...&quot; In the window that opens up, double click on the &quot;Sharing&quot; section.&lt;/p&gt;
&lt;p&gt;From there, simply check the &quot;Web Sharing&quot; option to enable things and voila! You have a web server. Make sure to take note of the web address for your server.&lt;/p&gt;
&lt;p&gt;Verify that the server is up and running by opening up your web browser of choice and entering the main web server address, you should get a basic &quot;It Works!&quot; screen.&lt;/p&gt;
&lt;p&gt;The next part is the trickiest. On one hand you can copy ALL of your music files to your website root folder (look into your Sites directory from your Home), but this makes things a pain to maintain. Instead, what you want to do is create a symbolic link (sym link) to your iTunes music folder. A simple alias will not work since the Apache web server (which comes with OSX) will not process symbolic links. Fire up the terminal window, and depending on the path to your iTunes music library, you&apos;ll enter a command that looks something like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ln -s /Users/Home/Music/iTunes/iTunes\\ Media/Music /Library/WebServer/Documents/music&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;One trick I found to this was to open the terminal window, and then drag your iTunes Music folder into the terminal window, this auto created the path for you, and then all you had to do was place the &quot;ln -s&quot; code in front and the &quot;/Library&quot; code after it.&lt;/p&gt;
&lt;p&gt;Once this is done, go back to your web browser and type in your address again, but put &quot;/music&quot; to the end of the URL and you should get the list of your artists to show up.&lt;/p&gt;
&lt;p&gt;Now go install the Roksbox channel on your Roku Box (see the site for details on how to do this) and enjoy streaming your own music!&lt;/p&gt;
&lt;p&gt;Roksbox is going to charge you a one time fee of $15 to use the channel, but they give you a 30 day free trial. I&apos;m still using the trial myself, so I can&apos;t give you a definite vote either way.&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Caravan By Duke Ellington</title><link>https://dillieo.me/posts/growth/2011-04-15-song-of-the-week-caravan-by-duke-ellington/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-04-15-song-of-the-week-caravan-by-duke-ellington/</guid><description>Duke Ellington</description><pubDate>Fri, 15 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Duke Ellington is my all time favorite jazz musician. Technically he was a composer and band leader, but the music he made and pioneered is phenomenal. Every emotion imaginable has been captured through his music, and there is energy in every piece he wrote.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The first CD I ever purchased of Duke&apos;s was his Compact Jazz: Duke Ellington and Friends album. It gave me all my all time favorite song of his, Caravan. Incidentally it also gave me my all time favorite rendition of the song as well. Caravan has this wonderful &quot;Arabian Desert&quot; feel, as Juan Tizol provides a smooth introduction on the trombone and just as you get a nice feel for this the tempo changes into classic big band swing, where Paul Gonsalves (I believe) does is magic on the saxophone.&lt;/p&gt;
&lt;p&gt;Give it a listen. I think you&apos;ll be pleased!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87165&lt;/p&gt;
</content:encoded></item><item><title>The Circus Is Good For The Soul</title><link>https://dillieo.me/posts/growth/2011-04-13-the-circus-is-good-for-the-soul/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-04-13-the-circus-is-good-for-the-soul/</guid><description>The Circus Is Good For The Soul</description><pubDate>Wed, 13 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I know there is a lot of stereotypes out there about the circus and it definitely doesn&apos;t draw the crowds it used to back in the day. But if you ask me, and see the photos, you&apos;ll agree that the circus is still good for the soul...&lt;/p&gt;
&lt;p&gt;[slideshow]&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Check Your Mime Types In Internet Explorer And Wordpress</title><link>https://dillieo.me/posts/development/2011-04-13-quick-tip-check-your-mime-types-in-internet-explorer-and-wordpress/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-13-quick-tip-check-your-mime-types-in-internet-explorer-and-wordpress/</guid><description>Quick Tip Check Your Mime Types In Internet Explorer And Wordpress</description><pubDate>Wed, 13 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a rather odd problem I ran into yesterday with a colleague that was worth sharing.&lt;/p&gt;
&lt;p&gt;She had installed a WordPress plug-in that allowed you to replace existing files in your media library. This is a great feature for us since we are often updating the same newsletter item and don&apos;t want to remove and re-add the file to the media gallery.&lt;/p&gt;
&lt;p&gt;After installation, she went to replace an existing .jpg image and received the following error message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;File type does not meet security guidelines.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Digging into the plug-in, we found the code that generates this message.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;;&lt;/p&gt;
&lt;p&gt;// Check that mime type is allowed $allowed_mime_types = get_allowed_mime_types(); if (!in_array($new_filetype, $allowed_mime_types)) { echo __(&quot;File type does not meet security guidelines.&quot;); exit; }&lt;/p&gt;
&lt;p&gt;This code is pretty straightforward, it uses a built in WordPress function to get the mime types of files that are allowed for upload. You can check your functions.php file in your WordPress wp-includes folder if you&apos;re curious.&lt;/p&gt;
&lt;p&gt;After doing some digging, I decided to do some &quot;old school&quot; debugging and add a little more information to the error message:&lt;/p&gt;
&lt;p&gt;After doing this, The error message we got back was the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;File type does not meet security guidelines. File Type specified: image/pjpeg&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now THIS was news to me! I&apos;ve never heard of this mime type before. In addition, we had tried uploading a different file, and got a similar error message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;File type does not meet security guidelines. File Type specified: image/x-png&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To complicate matters more, I decided to try out the process again using Chrome (since we&apos;re an IE shop here) and it worked!!! Apparently Internet Explorer is tracking the images in a slightly different way, and other browsers seem to use the &quot;standard&quot; types. I&apos;ll be loose in defining &quot;standard&quot; here since I&apos;m not the expert in this field.&lt;/p&gt;
&lt;p&gt;To resolve this issue, at least temporarily, you have a couple of options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Update your get_allowed_mime_types() function to include the additional mime types. I&apos;m a little worried that there are more out there, but I haven&apos;t had a chance to research them further. The downside to this is that if the WordPress core is updated (which is frequently) you could lose this update as soon as the file is overwritten.&lt;/li&gt;
&lt;li&gt;Write up a function in your plug-in that injects the additional mime types in right before processing. The downside to this is that it has to run this code every time the plug-in runs, and you may lose it as well when the plug-in is updated. You can follow the example in &lt;a href=&quot;http://wordpress.stackexchange.com/questions/11563/adding-file-types-in-wordpress&quot;&gt;this post&lt;/a&gt; (thank you WordPress Answers!) on how to accomplish this.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you know. And knowing is half the battle...&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Stand In The Rain By Superchick</title><link>https://dillieo.me/posts/growth/2011-04-08-song-of-the-week-stand-in-the-rain-by-superchick/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-04-08-song-of-the-week-stand-in-the-rain-by-superchick/</guid><description>album-beauty-from-pain</description><pubDate>Fri, 08 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yeah, I&apos;ll admit it. I&apos;ve got kind of a thing for rock bands with female vocalists. There&apos;s something to that balance between slamming sound and soft vocals (or sometimes loud) that I really like. Ever since my all time favorite band Audio Adrenaline moved on to bigger things, I&apos;ve been looking for some good bands to rock out to.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Then one day on the radio I heard Superchick and I got goosebumps all over again. Their music is rockin&apos; and their lyrics really hit home on some hard issues without trying to be fluffy about it.&lt;/p&gt;
&lt;p&gt;Enter the song &quot;Stand in the Rain&quot; from their &lt;em&gt;Beauty From Pain&lt;/em&gt; album. Listening to the song and hearing the lyrics, I don&apos;t really see it providing a solution to the troubles around you, other than to continue to hold strong, to stand in the rain, and let it work it&apos;s way through. Often times we want to fight that which we can&apos;t change, especially during the our hard times in life. Sometimes we need to just stand, not lose hope, and wait to see what happens. It&apos;s not fun, I&apos;ve been there, but it gives me hope to endure.&lt;/p&gt;
&lt;p&gt;Enjoy the lyrics and the music.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Stand In The Rain&lt;/strong&gt; She never slows down She doesn’t know why, but she knows That when she’s all alone It feels like it’s all coming down&lt;/p&gt;
&lt;p&gt;She won’t turn around The shadows are long and she fears If she cries that first tear The tears will not stop raining down&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So stand in the rain __Stand your ground Stand up when it’s all crashing down You stand through the pain You won’t drown And one day what’s lost can be found You stand in the rain&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;She won’t make a sound Alone in this fight with herself And the fear’s whispering If she stands, she’ll fall down She wants to be found The only way out is through everything She’s running from She wants to give up and lie down&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87189&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Creating A Timeout Notifier In Aspnet Using Ajax Toolkit Or Jquery</title><link>https://dillieo.me/posts/development/2011-04-05-soup-to-nuts-creating-a-timeout-notifier-in-aspnet-using-ajax-toolkit-or-jquery/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-04-05-soup-to-nuts-creating-a-timeout-notifier-in-aspnet-using-ajax-toolkit-or-jquery/</guid><description>TimeoutSampleToolkit</description><pubDate>Tue, 05 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;The Quandary&lt;/h2&gt;
&lt;p&gt;One of those &quot;gotchas&quot; that a new developer faces when working with ASP.Net is that the SessionTimeout variable you find in the web.config only applies to the server side end of things, not the client. The problem with this is that if the client&apos;s session has ended, they won&apos;t know it, and the next time they post back to the server, they&apos;ll either run into an error, or have their forms blanked out (if they were working on them) and not know why.&lt;/p&gt;
&lt;p&gt;The trick is to develop a solution that will track the timeout value on the client end (browser) as well as make the appropriate updates to the server end. Fortunately, anytime that a post back is made to the server, or a new page is loaded, ASP.Net automatically handles our session processing. Our main focus will be on developing the client end.&lt;/p&gt;
&lt;p&gt;In order to prevent the user from accidentally clicking elsewhere and bypassing the warning, we&apos;ll present the warning as a modal popup window that they&apos;ll be forced to interact with. As the title says, I&apos;ll show you how to implement this using either the AJAX Control Toolkit or jQuery (leveraging jQueryUI), so you can implement it in whatever system you&apos;re more comfortable with.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The Algorithm&lt;/h2&gt;
&lt;p&gt;On the client end, our logic is going to work like this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We create a flag called DoLogout that indicates whether or not to log the user out.&lt;/li&gt;
&lt;li&gt;Every X amount of minutes (we&apos;ll call it TimeoutMinutes) we check to see if the DoLogout flag is set to 1. If so, we process our logout. If not, we&apos;ll reset the flag and check again later. We&apos;ll also do an arbitrary post back to the server so that we can make sure the server side session timeout is reset as well.&lt;/li&gt;
&lt;li&gt;Every Y amount of minutes, we warn the user (we&apos;ll call it WarnMinutes) that they are about to time out, and ask them if they want to keep their session alive. If they say yes, then we set the DoLogout flag to 0, and we&apos;ll warn the user again later.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Implementing the Client Processing&lt;/h2&gt;
&lt;p&gt;We&apos;ll create a separate JavaScript file called TimeoutMethods.js and put all of our functionality in there. Here&apos;s what it looks like:&lt;/p&gt;
&lt;p&gt;var DoLogout = 1; var WarnMills; var TimeoutMills var RedirectURL;&lt;/p&gt;
&lt;p&gt;function StartTimeout(TimeoutValue, WarnValue, URLValue) { TimeoutMills = TimeoutValue; WarnMills = WarnValue; RedirectURL = URLValue; setTimeout(&apos;UserTimeout()&apos;, TimeoutMills); setTimeout(&apos;WarnTimeout()&apos;, WarnMills); }&lt;/p&gt;
&lt;p&gt;function UserTimeout() { if (DoLogout == 1) { top.location.href = RedirectURL; } else { DoLogout = 1; setTimeout(&apos;UserTimeout()&apos;, TimeoutMills); setTimeout(&apos;WarnTimeout()&apos;, WarnMills); } }&lt;/p&gt;
&lt;p&gt;function WarnTimeout() { // To be updated later }&lt;/p&gt;
&lt;p&gt;function PreserveSession() { DoLogout = 0; __doPostBack(&apos;btnPreserveSession&apos;, &apos;&apos;); }&lt;/p&gt;
&lt;p&gt;Note: I&apos;m leaving the WarnTimeout() function blank for now, because this function will differ slightly based on your AJAX or jQuery implementation. Notice how our StartTimeout function serves as the gateway to our timeout implementation. This allows us to easily register a single JavaScript code block and to configure out timeout variables in a web.config file.&lt;/p&gt;
&lt;h2&gt;Configuring and Registering the Timeout Code&lt;/h2&gt;
&lt;p&gt;In our web.config file, we add the following application settings in order to appSettings section so we can reconfigure things on the fly:&lt;/p&gt;
&lt;p&gt;Notice that you can effectively disable the warning event (should you desire) by setting the value larger than the timeout value. This is helpful if you just want to log the user out of the application without warning.&lt;/p&gt;
&lt;p&gt;Since the JavaScript code is in an external file, we need to make sure that it is properly loaded on the page. It is best to load it using the ScriptManager that is provided in ASP.Net AJAX WebApplications. You&apos;ll find it right below the &amp;lt;form&amp;gt; tag in the web page you create, and you simply update the section accordingly:&lt;/p&gt;
&lt;p&gt;The final step is to register the timeout code to run when the page is loaded. Update your Page_Load method accordingly.&lt;/p&gt;
&lt;p&gt;Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim AppTimeout As Integer Dim WarnTimeout As Integer Dim AppURL As String&lt;/p&gt;
&lt;p&gt;If Not Request.Path.Contains(&amp;amp;amp;quot;Login.aspx&amp;amp;amp;quot;) AndAlso _ Not Request.Path.Contains(&amp;amp;amp;quot;Logout.aspx&amp;amp;amp;quot;) Then&lt;/p&gt;
&lt;p&gt;AppTimeout = Convert.ToInt32(ConfigurationManager.AppSettings(&amp;amp;amp;quot;AppTimeoutMinutes&amp;amp;amp;quot;)) WarnTimeout = Convert.ToInt32(ConfigurationManager.AppSettings(&amp;amp;amp;quot;AppWarnMinutes&amp;amp;amp;quot;)) AppURL = ConfigurationManager.AppSettings(&amp;amp;amp;quot;AppLogoutURL&amp;amp;amp;quot;)&lt;/p&gt;
&lt;p&gt;lblTimeoutCount.Text = (AppTimeout - WarnTimeout).ToString()&lt;/p&gt;
&lt;p&gt;Page.ClientScript.RegisterStartupScript _ (Me.GetType, &amp;amp;amp;quot;InitTimeout&amp;amp;amp;quot;, &amp;amp;amp;quot;StartTimeout(&amp;amp;amp;quot; &amp;amp;amp;amp; AppTimeout * 60000 &amp;amp;amp;amp; &amp;amp;amp;quot;,&amp;amp;amp;quot; &amp;amp;amp;amp; WarnTimeout * 60000 &amp;amp;amp;amp; &amp;amp;amp;quot;,&apos;&amp;amp;amp;quot; &amp;amp;amp;amp; AppURL &amp;amp;amp;amp; &amp;amp;amp;quot;&apos;);&amp;amp;amp;quot;, True) End If End Sub&lt;/p&gt;
&lt;p&gt;Note that since JavaScript processes the timeout calculation in milliseconds, we need to pass it millisecond values to the StartTimeout method.&lt;/p&gt;
&lt;p&gt;You&apos;ll notice a couple of odd things here. First is why we&apos;re checking to see if the request path is Login.aspx or Logout.aspx. This code is here to demonstrate how you can use this as part of a MasterPage type setup. That way you can keep your Login/Logout pages using the same template as the rest of your application, but avoid having the timeout scripts run. The second is the lblTimeoutCount.Text statement in there. We&apos;ll get to that shortly.&lt;/p&gt;
&lt;p&gt;Now that the script is ready to go, the final step is to setup our modal warning box, based on the display framework we want to use.&lt;/p&gt;
&lt;h2&gt;Warning Box using AJAX Control Toolkit&lt;/h2&gt;
&lt;p&gt;What we need to do is create a panel that contains our warning message and then attach a ModalPopupExtender to this panel. If it hasn&apos;t been done already, the AJAX Control Toolkit is added as a reference to the application and we make sure the assembly is registered at the top of our page.&lt;/p&gt;
&lt;p&gt;We add this to the bottom of the page, before the closing &amp;lt;form&amp;gt; tag, and you can see the stylesheet for the styling done to the popup:&lt;/p&gt;
&lt;p&gt;&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/asp:Label&amp;amp;gt; minutes due to inactivity. &amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt; Please click the button below if you are still using the application. &amp;amp;lt;/p&amp;amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;amp;lt;p style=&amp;amp;quot;text-align: center;&amp;amp;quot;&amp;amp;gt; &amp;amp;lt;asp:Button ID=&amp;amp;quot;btnPreserveSession&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; CausesValidation=&amp;amp;quot;false&amp;amp;quot; Text=&amp;amp;quot;Preserve Session&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;/p&amp;amp;gt; &amp;amp;lt;/asp:Panel&amp;amp;gt; &amp;amp;lt;cc1:ModalPopupExtender ID=&amp;amp;quot;mpeSessionTimeout&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; TargetControlID=&amp;amp;quot;pnlSessionTimeout&amp;amp;quot; BackgroundCssClass=&amp;amp;quot;TimeoutBackground&amp;amp;quot; BehaviorID=&amp;amp;quot;mdlSessionTimeout&amp;amp;quot; DropShadow=&amp;amp;quot;true&amp;amp;quot; OkControlID=&amp;amp;quot;btnPreserveSession&amp;amp;quot; OnOkScript=&amp;amp;quot;PreserveSession()&amp;amp;quot; PopupControlID=&amp;amp;quot;pnlSessionTimeout&amp;amp;quot;&amp;amp;gt; &amp;amp;lt;/cc1:ModalPopupExtender&amp;amp;gt;&lt;/p&gt;
&lt;p&gt;From here, we update our WarnTimeout method in our JavaScript file to include the following method to trigger our modal popup:&lt;/p&gt;
&lt;p&gt;You&apos;re all set! Build the app, navigate to the page and wait for the notification to appear:&lt;/p&gt;
&lt;h2&gt;Warning Box using jQuery&lt;/h2&gt;
&lt;p&gt;The jQuery and jQueryUI libraries already have a modal dialog plugin that operates simple as well. After downloading the two libraries and placing them within your application (don&apos;t forget the image files that comes as part of jQueryUI) make sure to reference them accordingly.&lt;/p&gt;
&lt;p&gt;In our Scripts section of our ScriptManager we add:&lt;/p&gt;
&lt;p&gt;In the &amp;lt;head&amp;gt; section of our page we add:&lt;/p&gt;
&lt;p&gt;Then we add a div section to the bottom of the page, before the closing &amp;lt;form&amp;gt; tag, and there is no need to use stylesheets thanks to the styling built into jQueryUI&lt;/p&gt;
&lt;p&gt;&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/asp:Label&amp;amp;gt; minutes due to inactivity. &amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt; Please click the button below if you are still using the application. &amp;amp;lt;/p&amp;amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;amp;lt;p style=&amp;amp;quot;text-align: center;&amp;amp;quot;&amp;amp;gt; &amp;amp;lt;asp:Button ID=&amp;amp;quot;btnPreserveSession&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; CausesValidation=&amp;amp;quot;false&amp;amp;quot; Text=&amp;amp;quot;Preserve Session&amp;amp;quot; OnClientClick=&amp;amp;quot;PreserveSession()&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;/p&amp;amp;gt; &amp;amp;lt;/div&amp;amp;gt;&lt;/p&gt;
&lt;p&gt;Finally, we update our WarnTimeout method in our JavaScript file to include the following method to trigger our modal popup:&lt;/p&gt;
&lt;p&gt;You&apos;re all set! Build the app, navigate to the page and wait for the notification to appear:&lt;img src=&quot;@assets/images/posts/2011-04-timeoutsamplejquery.png&quot; alt=&quot;TimeoutSamplejquery&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope this bit of code helps you get your own sites off the ground that need a Timeout mechanism for it. Its tricky keeping track of the session on the client and server end, and this script does the job nicely. Attached below is a full project for you to build and work with. It runs in VB.Net, but there&apos;s only about 3 lines of code behind involved and is easily converted to C#.&lt;/p&gt;
&lt;p&gt;Download Project Files:&lt;/p&gt;
&lt;p&gt;Visual Studio 2008 - &lt;a href=&quot;http://1drv.ms/1GvtJTW&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 2010 - &lt;a href=&quot;http://1drv.ms/1IKBr0d&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Dr Demento Classics</title><link>https://dillieo.me/posts/growth/2011-04-01-song-of-the-week-dr-demento-classics/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-04-01-song-of-the-week-dr-demento-classics/</guid><description>Dr Demento Cover</description><pubDate>Fri, 01 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This one goes out to Dan, Carrie, and Nance. You know who you are... 8^D&lt;/p&gt;
&lt;p&gt;In honor of April Fools day, I figured I&apos;d pull out a couple of charts from the &quot;not quite so normal&quot; bin of Dr. Demento. He used to run a radio show, where a lot of the cooky songs of the day were heard. Sadly I was a little too young to get the radio shows, but I stumbled upon the CD one day thanks to a friend and was hooked.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My all time favorite on the collection is &quot;Ti Kwan Leep / Boot to the Head&quot;, a nice narrative followed by a cute little jingle. Give it a listen for yourself:&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87159&lt;/p&gt;
&lt;p&gt;And life wouldn&apos;t be complete without the results of our insanity, &quot;They&apos;re coming to take me away, Ha Ha!&quot;&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87153&lt;/p&gt;
&lt;p&gt;Happy Poisson D&apos;Avril all!!!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Centering A Login Control On A Webpage In Aspnet</title><link>https://dillieo.me/posts/development/2011-03-31-quick-tip-centering-a-login-control-on-a-webpage-in-aspnet/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-31-quick-tip-centering-a-login-control-on-a-webpage-in-aspnet/</guid><description>Quick Tip Centering A Login Control On A Webpage In Aspnet</description><pubDate>Thu, 31 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Oddly enough, the ASP.Net Login control is a pesky bugger to center on a page. I&apos;m sure you&apos;ve tried doing the &quot;double wrapper&quot; div tags, and I even use a similar trick when on a given page, but to no avail. After some digging and tweaking, I&apos;ve found the solution and here it is:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The thing to remember is that by default the box model for the div is going to expand the entire width of the section you&apos;re working with, so trying to center that is pointless. Instead you need to set your box width to the proper fixed width and then set your margins to auto.&lt;/p&gt;
&lt;p&gt;You do need some kind of &quot;wrapper&quot; setting the text-align: center to establish things, and you can even do that in your body tag on the page. For the sake of example here, I&apos;ll do all stylesheets inline, but you can always create classes. Here&apos;s the finished product:&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&quot;text-align: center;&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&quot;width: 400px; margin-left: auto; margin-right:auto;&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;asp:Login ID=&quot;AppLogin&quot; runat=&quot;server&quot; DestinationPageUrl=&quot;~/Default.aspx&quot; TitleText=&quot;Please enter your credentials to access this application.&quot;&amp;gt; &amp;lt;/asp:Login&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;And there you go! Feel free to tweak our your login control formatting, but this should keep the control itself centered nicely on your page. This works in IE8 (without having to run compatibility mode), Chrome, Firefox, and Safari.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Elmah A Quick Start Tutorial And Guide</title><link>https://dillieo.me/posts/development/2011-03-30-elmah-a-quick-start-tutorial-and-guide/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-30-elmah-a-quick-start-tutorial-and-guide/</guid><description>ElmahMain</description><pubDate>Wed, 30 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Synopsis&lt;/h2&gt;
&lt;p&gt;Elmah (Error Logging Modules and Handlers) provides an excellent way for you to get a basic logging mechanism into your web application in minutes. One of the beautiful things about Elmah is that it exists as it’s own module, so you can integrate it into an existing web application without having to do anything invasive to your existing code. Elmah gives you detailed information about each exception it logs, including a “snapshot” of the “yellow page of death” that was generated for further examination.&lt;/p&gt;
&lt;p&gt;Application logging is a great way to debug and maintain your application for its entire lifecycle. While there are numerous logging frameworks out there these days, Elmah . This article will give you a basic overview of the library and how you can integrate it into your projects quickly and easily.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The Fundamentals&lt;/h2&gt;
&lt;p&gt;You can download Elmah from &lt;a href=&quot;http://code.google.com/p/elmah/&quot;&gt;their site&lt;/a&gt; in two forms, the binaries or the full source code. If you’re looking to simply use Elmah, simply download the binaries and you’ll be all set. Elmah allows you to log the exceptions into the following formats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;Oracle (OracleErrorLog)&lt;/li&gt;
&lt;li&gt;SQLite (version 3) database file&lt;/li&gt;
&lt;li&gt;Microsoft Access (AccessErrorLog)&lt;/li&gt;
&lt;li&gt;VistaDB&lt;/li&gt;
&lt;li&gt;Loose XML files&lt;/li&gt;
&lt;li&gt;RAM (in-memory)&lt;/li&gt;
&lt;li&gt;SQL Server Compact Edition (arrives with version 1.2)&lt;/li&gt;
&lt;li&gt;MySQL (arrives with version 1.2)&lt;/li&gt;
&lt;li&gt;PostreSQL (arrives with version 1.2)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elmah can be used with any version of the .Net Framework from 1.1 and above and will run under medium trust using version 2.0, which enables you to use Elmah on most hosted sites. This is a big help since a some logging frameworks require full trust in order to function properly.&lt;/p&gt;
&lt;h2&gt;Configuring Your Logging Environment&lt;/h2&gt;
&lt;p&gt;For purposes of this article, we’re going to configure logging to use SQLite to log our exceptions. Using SQLite provides a nice database of our logs that we can access through third party tools if necessary, and helps keep the file size down, as opposed to using an XML file. In addition, not logging to SQL Server allows us to log database errors that otherwise might not get logged.&lt;/p&gt;
&lt;p&gt;After downloading the Elmah binaries, copy the Elmah.dll and System.Data.SQLite.dll files into your project directory. I typically create a “references” folder within my project to support my third party libraries. Open your project and add the references to these two DLLs in your project. This is typically done by right clicking on the “References” folder in your project, selecting “Add Reference” and browsing to the files.&lt;/p&gt;
&lt;p&gt;Once the libraries have been referenced in your project, you need to update your web.config file to enable and configure Elmah. The first step is to add a configuration section group at the top of your web.config file:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: In all of the web.config snippets below, if there already exists the proper tag for a given element (configSections, httpModules, etc.) don’t add them a second time, simply add your tag into the existing section.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Since we are using SQLite, we need to add a connection string entry as well. I’m creating a database file in my output folder called ErrorLog.db:&lt;/p&gt;
&lt;p&gt;The next step is to add the HTTP handler and module for Elmah:&lt;/p&gt;
&lt;p&gt;&amp;lt;system.web&amp;gt; &amp;lt;httpHandlers&amp;gt; &amp;lt;add verb=&quot;POST,GET,HEAD&quot; path=&quot;elmah.axd&quot; type=&quot;Elmah.ErrorLogPageFactory, Elmah&quot; /&amp;gt; &amp;lt;/httpHandlers&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;httpModules&amp;gt; &amp;lt;add name=&quot;ErrorLog&quot; type=&quot;Elmah.ErrorLogModule, Elmah&quot; /&amp;gt; &amp;lt;/httpModules&amp;gt; &amp;lt;/system.web&amp;gt;&lt;/p&gt;
&lt;p&gt;We also need to add a web server module and handler for Elmah:&lt;/p&gt;
&lt;p&gt;&amp;lt;system.webServer&amp;gt; &amp;lt;modules&amp;gt; &amp;lt;add name=&quot;Elmah.ErrorLog&quot; type=&quot;Elmah.ErrorLogModule, Elmah&quot; preCondition=&quot;managedHandler&quot; /&amp;gt; &amp;lt;/modules&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;handlers&amp;gt; &amp;lt;add name=&quot;Elmah&quot; path=&quot;elmah.axd&quot; verb=&quot;POST,GET,HEAD&quot; type=&quot;Elmah.ErrorLogPageFactory, Elmah&quot; preCondition=&quot;integratedMode&quot; /&amp;gt; &amp;lt;/handlers&amp;gt; &amp;lt;/system.webServer&amp;gt;&lt;/p&gt;
&lt;p&gt;Finally, we add our Elmah entry, with the proper configuration to specify security and the logging module:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: In the configuration above, I’ve set the remote access property to 1, allowing me to view the error log without having to log onto the server itself. This is quite handy in a hosted situation. If you do not need to enable remote access, set the value to 0.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That’s it! Compile your app again, deploy the files, and you’re ready to go!&lt;/p&gt;
&lt;h2&gt;Logging Your Application&lt;/h2&gt;
&lt;p&gt;Since Elmah is setup to grab any exception and log it, we simply need to generate one for testing. I created a basic web application, configured it as above, and added a button with a simple piece of code.&lt;/p&gt;
&lt;p&gt;Private Sub btnException_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles btnException.Click&lt;/p&gt;
&lt;p&gt;Throw New Exception(&quot;I&apos;m evil!!!!&quot;)&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;h2&gt;Viewing The Log&lt;/h2&gt;
&lt;p&gt;In order to view the log, you simply need to access the “elmah.axd” file that resides in the root of your application. You’ll be greeted by a page similar to this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-03-elmahmain_thumb.png&quot; alt=&quot;ElmahMain&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can see how the basic details of the exceptions are displayed. Selecting the “Details” link displays a full dump of the exception in question:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2011-03-elmahdetail1.png&quot; alt=&quot;ElmahDetail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From here you should have nearly everything you need to debug an issue with your site. Elmah also provides an RSS feed of recent exceptions and a way of downloading the entire log into a CSV file, if you need to work with it in other ways.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;I’m really impressed with how easy Elmah is to get running and how detailed the error logs it produces. I’m currently using it as part of a web application template we use within our organization to help get our LOB apps up and running fast, but still be able to track bugs as they occur. While Elmah doesn’t allow you to configure levels of logging (such as log4net) it does provide great ways to filter your exception logs and even e-mail the exceptions to you. I highly recommend it.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Color Objects From Hex Codes In Net</title><link>https://dillieo.me/posts/development/2011-03-28-quick-tip-color-objects-from-hex-codes-in-net/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-28-quick-tip-color-objects-from-hex-codes-in-net/</guid><description>Hex Palette</description><pubDate>Mon, 28 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Fortunately, the Color class itself came to the rescue! They provide a translator class that allows you to easily work hex code into your labels. To start, simply import the System.Drawing library into your class. From there, do something like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;lblAppName.ForeColor = ColorTranslator.FromHtml(&quot;#DEDBEF&quot;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll get a nice shade of &lt;strong&gt;light blue, err, off white, err, periwinkle&lt;/strong&gt; using that code above. What&apos;s really nice is that the ColorTranslator is a shared class, so you don&apos;t even need to instantiate an instance of the object to use it. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week La Fiesta By Chick Corea</title><link>https://dillieo.me/posts/development/2011-03-25-song-of-the-week-la-fiesta-by-chick-corea/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-25-song-of-the-week-la-fiesta-by-chick-corea/</guid><description>Corea_Chick_Works</description><pubDate>Fri, 25 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My first music love is jazz. I’ll admit I’m more of a classic jazz type person (Duke Ellington music to follow in the next few weeks), but along my “jazz journey” I stumbled upon Chick Corea. He does truly amazing things with the electric keyboard. But he really used a lot of different styles and instruments in the pieces he did.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;One of my all time pieces is “La Fiesta” off of his “Works” album. While most of the music I found was in his “electric keyboard” style, this album features a violin and other instruments I didn’t typically associate with jazz. “La Fiesta” has a fast latin feel, combined with the electric keyboard and a soprano sax. There are “funny work” with some of the time and pacing, and is all in all an amazing piece. Enjoy!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87151&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Reverence By Dj Lorraine</title><link>https://dillieo.me/posts/development/2011-03-18-song-of-the-week-reverence-by-dj-lorraine/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-18-song-of-the-week-reverence-by-dj-lorraine/</guid><description>djlorraineheadphonesgreenpic</description><pubDate>Fri, 18 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been a long time fan of the house and trance music. There’s something about the beats, the mixing, the effects, and the vocals that can be mind blowing. I also like the fact that a lot of these mixes are an hour long provides for a “long form” way of expressing a lot of complex music and emotions that you can’t easily shove into 3 or 4 minutes of music.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Enter the Reverence mix by DJ Lorraine. It is this mix that introduced me (and got me hooked) to house and trance. I first heard this mix through an old podcast called &lt;a href=&quot;http://dancechapel.wordpress.com&quot;&gt;The Dance Chapel&lt;/a&gt; when I was first looking for some good music like this to get me through the grind at work. Take a peek at the opening lyrics at the start of the mix:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“There is just one place I long to be, blinded by your presence I can see, words divinely whispered in my ear, awakening my senses dulled by fear&lt;/p&gt;
&lt;p&gt;Move spirit move…stir inside of me, move all through this groove, dying to set me free.&lt;/p&gt;
&lt;p&gt;Shining in a swirling sea of light, power to make everything alright, the veil of lies been lifted off my eyes, longing just to please you my soul cries.&lt;/p&gt;
&lt;p&gt;Move spirit move…stir inside of me, move all through this groove, dying to set me free.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It just gets more amazing from there. DJ Lorraine, thanks for blowing my mind and giving me a love of house and trance!&lt;/p&gt;
&lt;p&gt;If you’ve never really delved into the realm of house/trace, give this mix a listen. For those of you that are looking for a track listing, it’s here too (thanks to the Dance Chapel):&lt;/p&gt;
&lt;p&gt;https://soundcloud.com/laladee/dj-lorraine-reverence&lt;/p&gt;
</content:encoded></item><item><title>5 Minutes And Lack Of Green For St Patricks Day</title><link>https://dillieo.me/posts/growth/2011-03-17-5-minutes-and-lack-of-green-for-st-patricks-day/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-03-17-5-minutes-and-lack-of-green-for-st-patricks-day/</guid><description>Irish Code Hex shirt</description><pubDate>Thu, 17 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s kind of crazy how technology and print on demand services are these days. I should get me one of these for next year. Please share around if you like them. 8^D&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.zazzle.com/irish_code_hex_tshirt-235118639570687764?gl=Shirt_a_Dillie_O&amp;amp;group=mens&amp;amp;lifestyle=classic&amp;amp;rf=238965345064286427&quot;&gt;&lt;/a&gt; &lt;a href=&quot;http://www.zazzle.com/irish_code_hex_tshirt-235118639570687764?gl=Shirt_a_Dillie_O&amp;amp;group=mens&amp;amp;lifestyle=classic&amp;amp;rf=238965345064286427&quot;&gt;Irish Code Hex&lt;/a&gt; by &lt;a href=&quot;http://www.zazzle.com/shirt_a_dillie_o*&quot;&gt;Shirt_a_Dillie_O&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.zazzle.com/irish_code_standard_tshirt-235861166101523298?gl=Shirt_a_Dillie_O&amp;amp;group=mens&amp;amp;lifestyle=classic&amp;amp;rf=238965345064286427&quot;&gt;&lt;img src=&quot;@assets/images/posts/irish_code_standard_tshirt-p235861166101523298azgw0_325.jpg&quot; alt=&quot;Irish Code Standard shirt&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.zazzle.com/irish_code_standard_tshirt-235861166101523298?gl=Shirt_a_Dillie_O&amp;amp;group=mens&amp;amp;lifestyle=classic&amp;amp;rf=238965345064286427&quot;&gt;Irish Code Standard&lt;/a&gt; by &lt;a href=&quot;http://www.zazzle.com/shirt_a_dillie_o*&quot;&gt;Shirt_a_Dillie_O&lt;/a&gt; Browse more &lt;a href=&quot;http://www.zazzle.com/st+patricks+day+tshirts?rf=238965345064286427&quot;&gt;St patricks day T-Shirts&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Datatable Refrences Vs Values</title><link>https://dillieo.me/posts/development/2011-03-16-datatable-refrences-vs-values/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-16-datatable-refrences-vs-values/</guid><description>evil-computer-monitor</description><pubDate>Wed, 16 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was bit by this issue for the &lt;strong&gt;third&lt;/strong&gt; time last week and as a result I felt I should remind myself here.&lt;/p&gt;
&lt;p&gt;Take a peek at the following code:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;dtFundingFrom = New BasicFundingDataTable dtFundingTo = New BasicFundingDataTable&lt;/p&gt;
&lt;p&gt;For Each Fund As Fund In Position.Funding dtFundingFrom.AddBasicFundingRow(Fund.Code, Fund.Percent) Next&lt;/p&gt;
&lt;p&gt;gvFundingFrom.DataSource = dtFundingFrom&amp;lt;br&amp;gt;gvFundingFrom.DataBind()&lt;/p&gt;
&lt;p&gt;dtFundingTo = DirectCast(Session(&quot;CurrentFundingTo&quot;), BasicFundingDataTable)&lt;/p&gt;
&lt;p&gt;If dtFundingTo Is Nothing OrElse dtFundingTo.Rows.Count = 0 Then dtFundingTo = dtBasicFundingInfo End If&lt;/p&gt;
&lt;p&gt;Everything is pretty straightforward, right? You create a couple new DataTables and fill one up with some funding information. Then you pull some additional funding from a session variable, and if it has no data, you simply set the Funding To DataTable to be the same as the Funding From DataTable to copy the data.&lt;/p&gt;
&lt;p&gt;Later on (assuming some changes have been made) you update the funding data into a database.&lt;/p&gt;
&lt;p&gt;After getting a call from the end users saying their funding codes were looking wrong, I took a peek and noticed that the Funding To codes were mirroring the funding from codes in the database and in the application. After giving things some second thought, and remembered a cachine issue I ran into a while back where DataTables were involved. I remembered…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DataTable objects will pass by &lt;strong&gt;reference&lt;/strong&gt; and not by value when assigning one to another.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was the nature of my problem. If the funding data wasn’t there for the funding to field, the funding to table was being pointed to the funding from table, and data was duplicated. Instead, the code above should have been processed like this:&lt;/p&gt;
&lt;p&gt;dtFundingFrom = New BasicFundingDataTable&amp;lt;br&amp;gt;dtFundingTo = New BasicFundingDataTable&lt;/p&gt;
&lt;p&gt;For Each Fund As Fund In Position.Funding dtFundingFrom.AddBasicFundingRow(Fund.Code, Fund.Percent) Next&lt;/p&gt;
&lt;p&gt;gvFundingFrom.DataSource = dtFundingFrom gvFundingFrom.DataBind()&lt;/p&gt;
&lt;p&gt;dtFundingTo = DirectCast(Session(&quot;CurrentFundingTo&quot;), BasicFundingDataTable)&lt;/p&gt;
&lt;p&gt;If dtFundingTo Is Nothing OrElse dtFundingTo.Rows.Count = 0 Then&lt;/p&gt;
&lt;p&gt;dtFundingTo = New BasicFundingDataTable&lt;/p&gt;
&lt;p&gt;For Each Fund As Fund In Position.Funding dtFundingTo.AddBasicFundingRow(Fund.Code, Fund.Percent) Next&lt;/p&gt;
&lt;p&gt;End If&lt;/p&gt;
&lt;p&gt;In this case, the data is still copied, but it is done so by copying the values over into new rows, so any future updates will properly update the Funding To DataTable. As a side note, in order to properly copy the rows over, you’ll need to use the predefined “Add[X]Row” method built into the DataTable and specify the values. Attempting to set/copy the rows in a similar manner to the DataTable will cause an error, because the DataRow objects are setup to only belong to one DataTable and it will not allow you to reference it to multiple DataTables.&lt;/p&gt;
&lt;p&gt;So Remember kids: DataTable objects pass by reference, not by value. Don&apos;t let it bite you like it did me...thrice now...&lt;/p&gt;
</content:encoded></item><item><title>Song Of The Week Summer Rain By U2</title><link>https://dillieo.me/posts/development/2011-03-11-song-of-the-week-summer-rain-by-u2/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-11-song-of-the-week-summer-rain-by-u2/</guid><description>U2 B-Sides Cover</description><pubDate>Fri, 11 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been re-ripping my CD collection to my computer lately and am pulling up a lot of the &quot;oldies but goodies&quot; that I enjoy and figured hey, might as well try to do some weekly music sharing to give you something to listen to.&lt;/p&gt;
&lt;p&gt;To kick things off, I&apos;m pulling up something from U2. I&apos;ve been a long time fan and one of my favorite tracks comes off of their _B-Sides 1990-2000 _album called &quot;Summer Rain&quot; The music is light and the lyrics are profound:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When you stop seeing beauty you start growing old The lines on your face are a map to your soul When you stop taking chances you&apos;ll stay where you sit You won&apos;t live any longer but it&apos;ll feel like it&lt;/p&gt;
&lt;p&gt;I lost myself in the summer rain I lost myself I lost myself in the summer rain In the summer rain&lt;/p&gt;
&lt;p&gt;Tequila and orange Jamaica and rum At the Moreilla honey on my tongue In a small boat on a generous sea you let me be your enemy Tiny hand with a grip on the world Holding our breath now diving for pearls&lt;/p&gt;
&lt;p&gt;I lost myself in the summer rain I lost myself I lost myself in the summer rain Oh oh, oh oh&lt;/p&gt;
&lt;p&gt;Just as you find me always I will be A little bit too free with myself Just as you find me always I will be A little bit too free with myself&lt;/p&gt;
&lt;p&gt;I lost myself in the summer rain I lost myself Now there&apos;s no one else In the summer rain&lt;/p&gt;
&lt;p&gt;Raining down, it&apos;s raining down It rain Raining now Raining now&lt;/p&gt;
&lt;p&gt;Just as you find me always I will be A little bit too free with myself Just as you find me always I will be A little bit too free with myself&lt;/p&gt;
&lt;p&gt;It&apos;s not why you&apos;re running? It&apos;s where you&apos;re going? It&apos;s not what you&apos;re dreaming? But what you&apos;re gonna do?&lt;/p&gt;
&lt;p&gt;It&apos;s not where you&apos;re born It&apos;s where you belong It&apos;s not how weak But what will make you strong?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Give it a listen and I think you&apos;ll enjoy it too. More to come next week!&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_8153298_87183&lt;/p&gt;
</content:encoded></item><item><title>Living The French Work Life</title><link>https://dillieo.me/posts/development/2011-03-10-living-the-french-work-life/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-10-living-the-french-work-life/</guid><description>FrenchCoffeeClock</description><pubDate>Thu, 10 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I spent a couple of summers in France on a missions trip, I was impressed, and a bit envious, of the two hour lunch schedule. We were able to relax and chat at a restaurant, or maybe do a little exploring, or even a nap 8^D. The biggest impact for me though was that it helped keep the day from getting too overwhelming, since there was a significant break away from work.&lt;/p&gt;
&lt;p&gt;So at the beginning of this year, after talking with Jen a bit and then my supervisor, I was approved to setup my own work schedule along these lines. I augmented my work schedule to work a 7 to 5 schedule, with a 2 hour lunch break, which I typically take from 11:30 to 1:30. Some of you may wonder why I’m not working 8 to 6, and that’s two fold. One is that I’m an early bird, and I’m already up around 5:00 in the morning to start my day and take care of the girls when they wake up. The second is that a lot of our servers start running backups around 5:30 in the evening, so the department prefers that we’re not using the network resources by then to make things go smoother.&lt;/p&gt;
&lt;p&gt;Having been in this new schedule for about 2 and a half months now, here’s what I’ve come to find about the situation, done in classic movie fashion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Good&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Naps! I’ll admit that I’ve only taken 1 so far, but it was pretty sweet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Less Rush. I’m fortunate enough to be able to go home for lunch to see Jen and the girls. Even being so close, sometimes lunch was rushed, especially if I was picking something up from the store. That really isn’t a factor anymore. Plus I get to pick up my girls from school now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Quiet Mornings. A lot of times when 8:00 hits, the e-mail box gets full and there’s the hustle and bustle of office life. Having an hour to get a jump on things really helps the day.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Focus. I don’t know if its because my lunch is a little earlier than it used to be (I used to take it at 1), but the day seems really focused now. I’m in at 7 and get into the zone, and then all of the sudden it is lunch time. I have a nice on break, and then I feel focused to finish off my tasks before the end of the day. Previously things felt a bit scattered or dragged out.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Bad&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Less free time. As aforementioned, I’m a morning person. I’d get up, enjoy some “God time” as I tell the girls, tidy a few things up, and then hit the road. Now I have an hour less time before I hit the road, and I realized that I really have to be good with my morning routine to get out on time. I also have to do less in order to make this time. So sometimes it can feel rushed in this regard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Ugly&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sometimes the day can be a REALLY long one. You don’t sleep well. You walk in the door and a high priority website is down and needs attention. You have an appointment or some errands you have to have at lunch. It can really make for a long day and wear you out. I’ve had a couple of these.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All in all I find that the pros have FAR outweighed the cons and Jen has been most gracious in losing an hour of her sleep to make this happen. She has said that she benefits from me having the longer lunch hour (errands, getting kids, etc.) so in the long run I think we’re both winning.&lt;/p&gt;
&lt;p&gt;So maybe we can start a revolution of “longer, but shorter” days to enjoy a nap, or a hassle free lunch. Just think of all those lunch breaks with an old friend you had to rush because you had to get back into the office, or use some of your time off to cover. This could eliminate all that, and potentially make you more productive, but I have no studies to back that one up yet.&lt;/p&gt;
&lt;p&gt;Anybody else game?&lt;/p&gt;
</content:encoded></item><item><title>Living The French Work Lifeandhellip</title><link>https://dillieo.me/posts/development/2011-03-10-living-the-french-work-lifeandhellip/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-03-10-living-the-french-work-lifeandhellip/</guid><description>FrenchCoffeeClock</description><pubDate>Thu, 10 Mar 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I spent a couple of summers in France on a missions trip, I was impressed, and a bit envious, of the two hour lunch schedule. We were able to relax and chat at a restaurant, or maybe do a little exploring, or even a nap 8^D. The biggest impact for me though was that it helped keep the day from getting too overwhelming, since there was a significant break away from work.&lt;/p&gt;
&lt;p&gt;So at the beginning of this year, after talking with Jen a bit and then my supervisor, I was approved to setup my own work schedule along these lines. I augmented my work schedule to work a 7 to 5 schedule, with a 2 hour lunch break, which I typically take from 11:30 to 1:30. Some of you may wonder why I’m not working 8 to 6, and that’s two fold. One is that I’m an early bird, and I’m already up around 5:00 in the morning to start my day and take care of the girls when they wake up. The second is that a lot of our servers start running backups around 5:30 in the evening, so the department prefers that we’re not using the network resources by then to make things go smoother.&lt;/p&gt;
&lt;p&gt;Having been in this new schedule for about 2 and a half months now, here’s what I’ve come to find about the situation, done in classic movie fashion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Good&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Naps! I’ll admit that I’ve only taken 1 so far, but it was pretty sweet.&lt;/li&gt;
&lt;li&gt;Less Rush. I’m fortunate enough to be able to go home for lunch to see Jen and the girls. Even being so close, sometimes lunch was rushed, especially if I was picking something up from the store. That really isn’t a factor anymore. Plus I get to pick up my girls from school now.&lt;/li&gt;
&lt;li&gt;Quiet Mornings. A lot of times when 8:00 hits, the e-mail box gets full and there’s the hustle and bustle of office life. Having an hour to get a jump on things really helps the day.&lt;/li&gt;
&lt;li&gt;Focus. I don’t know if its because my lunch is a little earlier than it used to be (I used to take it at 1), but the day seems really focused now. I’m in at 7 and get into the zone, and then all of the sudden it is lunch time. I have a nice on break, and then I feel focused to finish off my tasks before the end of the day. Previously things felt a bit scattered or dragged out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Bad&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Less free time. As aforementioned, I’m a morning person. I’d get up, enjoy some “God time” as I tell the girls, tidy a few things up, and then hit the road. Now I have an hour less time before I hit the road, and I realized that I really have to be good with my morning routine to get out on time. I also have to do less in order to make this time. So sometimes it can feel rushed in this regard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Ugly&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sometimes the day can be a REALLY long one. You don’t sleep well. You walk in the door and a high priority website is down and needs attention. You have an appointment or some errands you have to have at lunch. It can really make for a long day and wear you out. I’ve had a couple of these.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All in all I find that the pros have FAR outweighed the cons and Jen has been most gracious in losing an hour of her sleep to make this happen. She has said that she benefits from me having the longer lunch hour (errands, getting kids, etc.) so in the long run I think we’re both winning.&lt;/p&gt;
&lt;p&gt;So maybe we can start a revolution of “longer, but shorter” days to enjoy a nap, or a hassle free lunch. Just think of all those lunch breaks with an old friend you had to rush because you had to get back into the office, or use some of your time off to cover. This could eliminate all that, and potentially make you more productive, but I have no studies to back that one up yet.&lt;/p&gt;
&lt;p&gt;Anybody else game?&lt;/p&gt;
</content:encoded></item><item><title>10000 Hours</title><link>https://dillieo.me/posts/development/2011-02-18-10000-hours/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-02-18-10000-hours/</guid><description>check10k</description><pubDate>Fri, 18 Feb 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;By my rough estimates, today I reached 10,000 hours of programming time, both through work and side projects. Why is this significant? If you do a little digging around the Internet, there have been &lt;a href=&quot;http://www.wisdomgroup.com/report/10000_hours_of_practice/&quot;&gt;numerous articles&lt;/a&gt; indicating that it takes this amount of time to really become proficient in something. No genius work involved, just lots of hard work and thirst for learning more. Incidentally, I also reached the 10,000 reputation mark on &lt;a href=&quot;http://stackoverflow.com&quot;&gt;StackOverflow&lt;/a&gt;, a programming related site today as well, which can be considered another milestone for those in the know. Interestingly enough, it was a &lt;a href=&quot;http://stackoverflow.com/questions/4273460/is-there-a-way-to-sort-css-class-names-ids-and-elements-in-the-css-navigator-wi/5023153&quot;&gt;side question related to Visual Studio&lt;/a&gt; that put me over the edge. It wasn’t anything really in depth, but it helped somebody out and that made me happy.&lt;/p&gt;
&lt;p&gt;So what’s the big to do about all these 10Ks. Well, in the grand scheme of things it isn’t worth breaking out the bubbly, but it is a good point in which to stop and reflect on things. Looking over these hours, I find that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’ve worked through four primary server side languages: Perl, PHP, Java, and .Net&lt;/li&gt;
&lt;li&gt;I’ve worked through four primary database technologies: MySQL, Oracle, SQL Server, and SQLite.&lt;/li&gt;
&lt;li&gt;I’ve worked with four different “user interface” technologies to present data to users: Flash, HTML/JavaScript, WinForms, and WPF.&lt;/li&gt;
&lt;li&gt;Aside from work, I have two applications, two websites, and a utility library released in the wild, some of which enjoyed a bit of popularity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While my own history indicates a large change in technology over time, the truly amazing thing is that this is maybe a quarter of the technologies that have been out there this time in the mainstream. There are even more that I don’t know about!&lt;/p&gt;
&lt;p&gt;Looking forward, there is still a lot I want to learn and get involved with: mobile/iPad apps, new architectures available in .Net (MVC, MVVM within WPF), and even new languages to learn (Ruby/Python/Objective C?). There is always the unknown tech out there that can spring up at random times, and I’m sure even those would catch my interest. Scott Hanselman put up a post recently &lt;a href=&quot;http://www.hanselman.com/blog/NewInterviewQuestionsForSeniorSoftwareEngineers.aspx&quot;&gt;listing a whole slew of interview questions for senior developers&lt;/a&gt; that I’d say I could only answer about 65% of them properly through initial inspection, which probably means that I’d get only about 50% correct. Instead of frustrating me, It has inspired me to go through all of the questions just to do more research and get a grasp on all of them. I might even turn it into a series of blog posts or something. Who knows.&lt;/p&gt;
&lt;p&gt;The main point is that after 10,000 hours of time I think I’m finally at the point where I can appreciate what I know, and more importantly what I &lt;strong&gt;don’t&lt;/strong&gt; know. The things that have helped me the most are side projects, helping others, and continued reading. These things keep the thirst of knowledge flowing in and pouring out into something tangible and is very healthy for continued growth. Interestingly enough (thinking about my &lt;a href=&quot;/your-career-the-microcosm-of-your-life-part-1&quot;&gt;microcosm/macrocosm&lt;/a&gt; posts of &lt;a href=&quot;/your-career-the-microcosm-of-your-life-%c2%96-part-2&quot;&gt;yesteryear&lt;/a&gt;), I &lt;a href=&quot;http://www.facebook.com/l.php?u=http%3A%2F%2Fthegoodbookblog.com%2F2011%2Ffeb%2F16%2Fliving-lake-or-stagnant-pond%2F&amp;amp;h=175a1&quot;&gt;read an article&lt;/a&gt; on how this really applies to life as well.&lt;/p&gt;
&lt;p&gt;So here’s to the next 10,000 hours of software development and to what new adventures (amazing, unusual, and intriguing) await!&lt;/p&gt;
</content:encoded></item><item><title>Default Category Images For Wordpress</title><link>https://dillieo.me/posts/development/2011-02-15-default-category-images-for-wordpress/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-02-15-default-category-images-for-wordpress/</guid><description>Site without categories</description><pubDate>Tue, 15 Feb 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been working on a news oriented WordPress site lately. One of the nice things with WordPress 2.9 and above was that they created a “thumbnail” feature, also known as “featured image” in 3.0+. With this feature you could display an image related to the article to help preview it. Most sites you see now use this in conjunction with a “slider” on their home page.&lt;/p&gt;
&lt;p&gt;In the site I’m working on, there isn’t a featured image for every single news item available. Sometimes the news item is simply a repeat of a notice from another source. Since the home page of the site looked for an image to display in its list, the page became unattractive since there were a lot of “no image available” boxes scattered on the page:&lt;/p&gt;
&lt;p&gt;The idea then arose about having an icon or default image for each category, and displaying that when an image was not available. Since I’m still honing my WordPress chops, so I needed to develop a solution that didn’t involve creating plugins and wasn’t too deeply embedded within the site that it would make it hard to update down the road. The home page has several widgets that retrieve the featured image in various formats (full, medium, small) so I needed to find a single point of entry in which to return the image, and let the theme do its own resizing.&lt;/p&gt;
&lt;p&gt;The first step was to create the category images and place them into a folder called “category-images” under my “wp-content” folder of the site. The key here is to name the images the same as the “nice name” values for each of the categories. This typically means using all lower case and putting a “-“ in place of spaces, such as “prescribed-burns”. This makes it easier to generate the URL to the images in the code.&lt;/p&gt;
&lt;p&gt;The next step is to find the code in my theme where the featured images were being retrieved for a given post. This is where you’re going to have to venture out on your own to implement this solution. _[Psst, hey WordPress theme developers, this would be a great time to implement this into your theme so no fancy hackery is needed!] _After some digging, I found the function that served as the central point for retrieving images that were displayed on the home page widgets:&lt;/p&gt;
&lt;p&gt;function get_images($iPostID,$img_size=&apos;thumb&apos;)&lt;/p&gt;
&lt;p&gt;{ $arrImages =&amp;amp; get_children(&apos;order=ASC&amp;amp;orderby=menu_order ID&amp;amp;post_type=attachment&amp;amp;post_mime_type=image&amp;amp;post_parent=&apos;. $iPostID ); $return_arr = array();&lt;/p&gt;
&lt;p&gt;if($arrImages) { foreach($arrImages as $key=&amp;gt;$val) { $id = $val-&amp;gt;ID;&lt;/p&gt;
&lt;p&gt;if($img_size == &apos;large&apos;) { $img_arr = wp_get_attachment_image_src($id,&apos;full&apos;); $return_arr[] = $img_arr[0]; } elseif($img_size == &apos;medium&apos;) { $img_arr = wp_get_attachment_image_src($id, &apos;medium&apos;); $return_arr[] = $img_arr[0]; } elseif($img_size == &apos;thumb&apos;) { $img_arr = wp_get_attachment_image_src($id, &apos;thumbnail&apos;); $return_arr[] = $img_arr[0]; } } }&lt;/p&gt;
&lt;p&gt;return $return_arr; }&lt;/p&gt;
&lt;p&gt;The trick to making this work was to add some additional code so that the category image URL would be generated in the even no images where found. The final code looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;span style=&quot;font-family:Georgia, &apos;Times New Roman&apos;, &apos;Bitstream Charter&apos;, Times, serif;font-size:13px;line-height:19px;white-space:normal;&quot;&amp;gt;
[code lang=&quot;php&quot;]
function get_images($iPostID,$img_size=&apos;thumb&apos;)

{
   $arrImages =&amp;amp; get_children(&apos;order=ASC&amp;amp;orderby=menu_order ID&amp;amp;post_type=attachment&amp;amp;post_mime_type=image&amp;amp;post_parent=&apos;. $iPostID );
   $return_arr = array();

   if($arrImages)
   {
      foreach($arrImages as $key=&amp;gt;$val)
      {
         $id = $val-&amp;gt;ID;

         if($img_size == &apos;large&apos;)
         {
            $img_arr = wp_get_attachment_image_src($id,&apos;full&apos;);
            $return_arr[] = $img_arr[0];
         }
         elseif($img_size == &apos;medium&apos;)
         {
            $img_arr = wp_get_attachment_image_src($id, &apos;medium&apos;);
            $return_arr[] = $img_arr[0];
         }
         elseif($img_size == &apos;thumb&apos;)
         {
            $img_arr = wp_get_attachment_image_src($id, &apos;thumbnail&apos;);
            $return_arr[] = $img_arr[0];
         }
      }
   }
   else
   {
      $category = get_the_category($iPostID);

      // if the category has no parents, use its nicename for a proper URL, otherwise use the parent category name (such as fires)
      if ($category[0]-&amp;gt;category_parent == 0)
      {
         $return_arr[0] = site_url(&apos;/wp-content/category-images/&apos;, &apos;&apos;). $category[0]-&amp;gt;category_nicename. &apos;.jpg&apos;;
      }
      else
      {
         $parent = get_category($category[0]-&amp;gt;category_parent);
         $return_arr[0] = site_url(&apos;/wp-content/category-images/&apos;, &apos;&apos;). $parent-&amp;gt;category_nicename. &apos;.jpg&apos;;
      }
   }

   return $return_arr;
}
[/code]

 &amp;lt;/span&amp;gt; &amp;lt;span style=&quot;font-family:Georgia, &apos;Times New Roman&apos;, &apos;Bitstream Charter&apos;, Times, serif;font-size:13px;line-height:19px;white-space:normal;&quot;&amp;gt;WordPress makes it easy to retrieve category, and even parent category information for the post, and we use as much built in methods as possible so that the URL to the images changes easily if the site changes.&amp;lt;/span&amp;gt;
```![Site with categories.](@assets/images/posts/2011-02-categories_after_thumb.png &quot;categories_after&quot;)

I’ve seen a few WordPress plugins to assign images to a category, but they were going to be more trouble than it was worth to integrate it into the current theme. Hopefully this gives you a direction to look at if you need to setup category images for your site, or maybe it’ll inspire a WordPress theme creator out there to build this in to the next theme they create. I’m sure there are plenty of sites that can benefit from this.&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Review Jquery Pocket Reference</title><link>https://dillieo.me/posts/development/2011-02-11-review-jquery-pocket-reference/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-02-11-review-jquery-pocket-reference/</guid><description>jQueryCover</description><pubDate>Fri, 11 Feb 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;jQuery is the most popular JavaScript library currently on the web. It has revolutionized the way developers provide a user interface to the user without worrying about compatibility issues or complex code. I’m a recent convert to jQuery myself, but cheat sheets have not been helpful and I don’t have the time to read a large and detailed book on the entire framework. I recently discovered &lt;em&gt;jQuery Pocket Reference&lt;/em&gt; by David Flanagan just the book I needed to learn while implementing jQuery into my site.&lt;/p&gt;
&lt;p&gt;The book starts with a brief overview jQuery and how the fundamentals (selectors, “chaining methods”, modifiers) of the library work. From there each chapter covers the standard features of jQuery: Getting/Setting Elements, Modifying Document Structure, Events, Animations, AJAX, Selectors, Plugins, and UI. Even though the book is titled “pocket reference”, each chapter provides more detail than a simple reference list, which I found very helpful, given my lack of experience with the library. The final chapter does include a cheat sheet, which is also helpful when you need to find an attribute or command on the fly.&lt;/p&gt;
&lt;p&gt;This book is perfect for the beginning jQuery programmers that are well versed in other programming languages. It is also helpful for intermediate and advanced jQuery programmers that need a quick way to look up a function or brush up on the concepts behind the jQuery library. You can view a preview of the book by going to the O’Reilly site at &lt;a href=&quot;http://oreilly.com/catalog/9780596806286/&quot;&gt;http://oreilly.com/catalog/9780596806286/&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Kindergarten Is Like College</title><link>https://dillieo.me/posts/growth/2011-01-21-kindergarten-is-like-college/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-01-21-kindergarten-is-like-college/</guid><description>Kindergarten Is Like College</description><pubDate>Fri, 21 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My girls turn 5 here in a few months, and that means they can attend kindergarten in the fall! This is exciting and nerve racking all at the same time. Kids grow up &lt;strong&gt;way&lt;/strong&gt; too fast in front of your eyes.&lt;/p&gt;
&lt;p&gt;What I have discovered that is more nerve racking that this is actually &lt;strong&gt;choosing&lt;/strong&gt; a school for our girls. Consider the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There are currently traditional, progressive, Waldorf, Catholic, Christian, private, and public schools in town. I’m sure there are a couple I’ve missed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Although school doesn’t start until August/September, registration begins in the next few months for lot of these.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Some of these schools are also having an open house/walkthrough type event so you can see what the school is about, meet the principal, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Looking back at the various types of schools we have, each have a different focus on their educational foundations and practices. I know of one school that has a program that will effectively commit you to an 8 year process, since they approach the subjects in a different manner.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A lot of these schools want to interview your kids, (and you!) before granting admission. In the case of the Christian schools, there is a review/interview paper to be filled out by your pastor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Our two girls are twins, but are definitely unique when it comes to topics they prefer and how they process information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Costs look to be anywhere from $300 to $1000 a month depending on where you go. I get to multiply this by two for twins.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What’s a parent to do?!?! To pull out my cane and soap box for a moment, when I was a kid, there was one elementary school in town, and you simply showed up for class. The same goes for junior and senior high. I could be over simplifying things a bit, especially since we had zoning regulations and my mom never informed me of the process, but man, it’s crazy! I feel like I need to get a resume up for my girls and see about some scholarship options (some are available too if you need them) and start grilling them on interview questions or making sure they know their alphabet backwards in French. Maybe if I can get them to speak fluent Wookie or Huttese I can get them some unique scholarship money that way. Fortunately the tri-city area is doing a “convention” of sorts where all the schools will have a booth for us to check out. That will save us some drive time and give us some immediately comparisons.&lt;/p&gt;
&lt;p&gt;All melodrama aside, when did learning get so crazy? Sometimes it feels like we’ve doomed our children to a life of ignorance if we choose the wrong one. Jen and I fully intend to supplement the girls with whatever they’re learning in school and help enforce what they are learning there, but it really seems like learning is taking on a whole new dimension, and this isn’t even high school or college yet, where things get really get diversified and intense. It feels like the race is already starting, and I was hoping to have a few more warm up laps.&lt;/p&gt;
</content:encoded></item><item><title>Kindergarten Is Like Collegeandhellip</title><link>https://dillieo.me/posts/growth/2011-01-21-kindergarten-is-like-collegeandhellip/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2011-01-21-kindergarten-is-like-collegeandhellip/</guid><description>Kindergarten Is Like Collegeandhellip</description><pubDate>Fri, 21 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My girls turn 5 here in a few months, and that means they can attend kindergarten in the fall! This is exciting and nerve racking all at the same time. Kids grow up &lt;strong&gt;way&lt;/strong&gt; too fast in front of your eyes.&lt;/p&gt;
&lt;p&gt;What I have discovered that is more nerve racking that this is actually &lt;strong&gt;choosing&lt;/strong&gt; a school for our girls. Consider the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are currently traditional, progressive, Waldorf, Catholic, Christian, private, and public schools in town. I’m sure there are a couple I’ve missed.&lt;/li&gt;
&lt;li&gt;Although school doesn’t start until August/September, registration begins in the next few months for lot of these.&lt;/li&gt;
&lt;li&gt;Some of these schools are also having an open house/walkthrough type event so you can see what the school is about, meet the principal, etc.&lt;/li&gt;
&lt;li&gt;Looking back at the various types of schools we have, each have a different focus on their educational foundations and practices. I know of one school that has a program that will effectively commit you to an 8 year process, since they approach the subjects in a different manner.&lt;/li&gt;
&lt;li&gt;A lot of these schools want to interview your kids, (and you!) before granting admission. In the case of the Christian schools, there is a review/interview paper to be filled out by your pastor.&lt;/li&gt;
&lt;li&gt;Our two girls are twins, but are definitely unique when it comes to topics they prefer and how they process information.&lt;/li&gt;
&lt;li&gt;Costs look to be anywhere from $300 to $1000 a month depending on where you go. I get to multiply this by two for twins.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What’s a parent to do?!?! To pull out my cane and soap box for a moment, when I was a kid, there was one elementary school in town, and you simply showed up for class. The same goes for junior and senior high. I could be over simplifying things a bit, especially since we had zoning regulations and my mom never informed me of the process, but man, it’s crazy! I feel like I need to get a resume up for my girls and see about some scholarship options (some are available too if you need them) and start grilling them on interview questions or making sure they know their alphabet backwards in French. Maybe if I can get them to speak fluent Wookie or Huttese I can get them some unique scholarship money that way. Fortunately the tri-city area is doing a “convention” of sorts where all the schools will have a booth for us to check out. That will save us some drive time and give us some immediately comparisons.&lt;/p&gt;
&lt;p&gt;All melodrama aside, when did learning get so crazy? Sometimes it feels like we’ve doomed our children to a life of ignorance if we choose the wrong one. Jen and I fully intend to supplement the girls with whatever they’re learning in school and help enforce what they are learning there, but it really seems like learning is taking on a whole new dimension, and this isn’t even high school or college yet, where things get really get diversified and intense. It feels like the race is already starting, and I was hoping to have a few more warm up laps.&lt;/p&gt;
</content:encoded></item><item><title>Review Beautiful Code</title><link>https://dillieo.me/posts/development/2011-01-14-review-beautiful-code/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-01-14-review-beautiful-code/</guid><description>BeautifulCodeCover</description><pubDate>Fri, 14 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I heard about &lt;em&gt;Beautiful Code, by Andy Oram and Greg Wilson&lt;/em&gt; a few years back, but haven’t had the chance to read the book until now. It was worth the wait. This book is a challenging and inspiring read for new and seasoned programmers.&lt;/p&gt;
&lt;p&gt;The editors of &lt;em&gt;Beautiful Code&lt;/em&gt; were able to take some of the top programmers of our era and pick their brains on what they considered to be beautiful code. The result of this endeavor is a book that covers a wide range of topics: from recursion in processing regular expressions to interface design. Each chapter isn’t particularly lengthy, but they all follow a similar pattern. First, the background and issues surrounding a problem are outlined. Next, some (if not all) of the code that solved the issue is provided. Finally, analysis of why the code works is explained. More importantly, each chapter also outlines why the code is beautiful. Sometimes it is the clever use of a common programming practice that makes the solution beautiful. Other times it is the algorithm that produced the code that makes things beautiful. Each chapter is unique in this regard.&lt;/p&gt;
&lt;p&gt;This book is not for the casual reader. There are a lot of complex situations covered in this book. Likewise the code used to solve these situations can be equally complex. However, it is reading through these complex pieces of code with their analysis that you gain a greater appreciation of programming. It will give you concepts and code for future use. It can also give insight to problem solving techniques you might have not though of before.&lt;/p&gt;
&lt;p&gt;Students can use this book to see what problems they will face outside of the academic setting. Intermediate programmers can use this book to refresh themselves of core concepts and how to implement them in an elegant way. Veteran programmers can appreciate the problems faced and even see inspiration as they continue in their career. &lt;em&gt;Beautiful Code&lt;/em&gt; is an instant classic to read and reread.&lt;/p&gt;
&lt;p&gt;You can get this book through O’Reilly Books at &lt;a href=&quot;http://oreilly.com/catalog/9780596510046/&quot;&gt;http://oreilly.com/catalog/9780596510046/&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Good Code</title><link>https://dillieo.me/posts/development/2011-01-11-good-code/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-01-11-good-code/</guid><description>Good Code</description><pubDate>Tue, 11 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The guy over at &lt;a href=&quot;http://xkcd.com&quot;&gt;XKCD&lt;/a&gt; really hit the nail on the head yesterday...&lt;/p&gt;
&lt;p&gt;If you only knew the amount of times I&apos;ve been down this flowchart path. I STILL can&apos;t find the warp pipe to that little question mark bubble...&lt;/p&gt;
</content:encoded></item><item><title>The New Year Fog</title><link>https://dillieo.me/posts/development/2011-01-03-the-new-year-fog/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-01-03-the-new-year-fog/</guid><description>Fog</description><pubDate>Mon, 03 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I don’t know about you, but I’m in a bit of a fog coming out of the Christmas and New Years holidays.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;I’m rather festive when I celebrate the Season of Advent, so nearly all of my podcast and music listening goes out the door in favor of Christmas music. Between Christmas and New Years, there were four family celebrations, about 20 hours worth of driving, and 2 more gatherings with very close friends, so we’ll chalk that up to 6 family gatherings.&lt;/p&gt;
&lt;p&gt;Added to all of this is the “gravity” that comes with the transition from one year to another. I’ve had lots to reflect upon with the events of last year. I also have lots to reflect up on about goals, resolutions, and ideas for this coming year. Family to run amok with, blog posts to write, books to read, things to do around the house, miles to run, apps to update, apps to build, it goes on!&lt;/p&gt;
&lt;p&gt;All of this has left me in a bit of a fog. I know what I want to do, but I guess I just don’t quite know the when and the how, and I feel like I’m falling behind already. My week in the “dark” without the Internet was a good thing, and maybe I was too “jacked into the matrix” for my own good. We’ll see.&lt;/p&gt;
&lt;p&gt;What about you? Do you get the New Year fog?&lt;/p&gt;
</content:encoded></item><item><title>2010 In Review</title><link>https://dillieo.me/posts/development/2011-01-02-2010-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2011-01-02-2010-in-review/</guid><description>Healthy blog!</description><pubDate>Sun, 02 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m kind of a data junkie, and here&apos;s some interesting stuff WordPress pulled up about my blog this past year. I&apos;m still recovering from vacation, but more stuff to follow! 8^D&lt;/p&gt;
&lt;p&gt;The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&apos;s a high level summary of its overall blog health:&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Blog-Health-o-Meter™&lt;/em&gt; reads Fresher than ever.&lt;/p&gt;
&lt;h2&gt;Crunchy numbers&lt;img src=&quot;@assets/images/posts/2010-10-iisconfigscreen.png&quot; alt=&quot;Featured image&quot; /&gt;&lt;/h2&gt;
&lt;p&gt;A Boeing 747-400 passenger jet can hold 416 passengers. This blog was viewed about &lt;strong&gt;2,800&lt;/strong&gt; times in 2010. That&apos;s about 7 full 747s.&lt;/p&gt;
&lt;p&gt;In 2010, there were &lt;strong&gt;66&lt;/strong&gt; new posts, growing the total archive of this blog to 105 posts. There were &lt;strong&gt;100&lt;/strong&gt; pictures uploaded, taking up a total of 24mb. That&apos;s about 2 pictures per week.&lt;/p&gt;
&lt;p&gt;The busiest day of the year was November 12th with &lt;strong&gt;62&lt;/strong&gt; views. The most popular post that day was &lt;a href=&quot;/windows-server-2003-64bit-iis-6-32bit-asp-net-4-framework-and-targeting&quot;&gt;Windows Server 2003 64bit, IIS 6 32bit, ASP.Net 4 Framework, and Targeting&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Where did they come from?&lt;/h2&gt;
&lt;p&gt;The top referring sites in 2010 were &lt;strong&gt;facebook.com&lt;/strong&gt;, &lt;strong&gt;hacksaw.codeplex.com&lt;/strong&gt;, &lt;strong&gt;stackoverflow.com&lt;/strong&gt;, &lt;strong&gt;sadi02.wordpress.com&lt;/strong&gt;, and &lt;strong&gt;Private networks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Some visitors came searching, mostly for &lt;strong&gt;windows live photo gallery face swap&lt;/strong&gt;, &lt;strong&gt;deck studio 1.9&lt;/strong&gt;, &lt;strong&gt;windows live photo gallery swap faces&lt;/strong&gt;, &lt;strong&gt;altec lansing logo&lt;/strong&gt;, and &lt;strong&gt;nacho cheese of the month club&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Attractions in 2010&lt;/h2&gt;
&lt;p&gt;These are the posts and pages that got the most views in 2010.&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/windows-server-2003-64bit-iis-6-32bit-asp-net-4-framework-and-targeting&quot;&gt;Windows Server 2003 64bit, IIS 6 32bit, ASP.Net 4 Framework, and Targeting&lt;/a&gt; October 2010 3 comments&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/log4net-a-quick-start-guide&quot;&gt;Log4Net: A Quick Start Guide&lt;/a&gt; May 2009 1 comment&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/how-to-swap-faces-using-windows-live-photo-gallery&quot;&gt;How to swap faces using Windows Live Photo Gallery&lt;/a&gt; December 2010&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/changing-log4net-configurations-dynamically&quot;&gt;Changing Log4Net Configurations Dynamically&lt;/a&gt; July 2010 3 comments&lt;/p&gt;
&lt;p&gt;5&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blogml-importer&quot;&gt;Migrating BlogML to WordPress 3.0&lt;/a&gt; July 2010 9 comments&lt;/p&gt;
</content:encoded></item><item><title>Mmx A Photo Review</title><link>https://dillieo.me/posts/growth/2010-12-23-mmx-a-photo-review/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-12-23-mmx-a-photo-review/</guid><description>Mmx A Photo Review</description><pubDate>Thu, 23 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Digging through a few of my pictures over the past year, here&apos;s a few of my favorite:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Mmx Resolutions In Review</title><link>https://dillieo.me/posts/development/2010-12-22-mmx-resolutions-in-review/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-12-22-mmx-resolutions-in-review/</guid><description>2010Logo</description><pubDate>Wed, 22 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;At the beginning of this year, I decided to make a few &lt;a href=&quot;/welcome-to-mmx-thoughts-and-resolutions&quot;&gt;New Years resolutions&lt;/a&gt;. Since this time of year has a lots of lists and reflections, I thought I’d take a peek back and how I did.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h5&gt;Read More Books&lt;/h5&gt;
&lt;p&gt;Well, I did okay on this one. Sadly I’m STILL working on a book that I started in June (Dallas Willard’s &lt;em&gt;Divine Conspiracy&lt;/em&gt; is excellent!), and I’m only about 2/3rds done with it. This book wasn’t even on my initial list! 8^D I’ll have to balance my free time a bit better this coming year.&lt;/p&gt;
&lt;p&gt;On a good note though, I will have successfully read the entire Bible in one year. The reading plan was rather intense at times, and some mornings I needed a bit more coffee to complete things, but I’m very excited to have done this. I realize I should have taken more notes along the way, because writing up some reflections on this journey would be good. If I had to summarize the entire journey, I’d have to say it was refreshing, insightful, and inspiring. While I don’t plan on going through the entire Bible in a year in 2011, our church does have some reading plans and I’m going to start going through them.&lt;/p&gt;
&lt;p&gt;In the “let me try to squeeze some extra points for my reading badge” category, I did read a couple of technical books as part of a &lt;a href=&quot;http://www.oreillynet.com/oreilly/bloggers/home.csp&quot;&gt;new blogger review program&lt;/a&gt; I joined at the end of the year. This has been a great way to get some new tech under my belt, as well as refine my reviewing skills and get some free books in the process. I’m working my way through a recent “classic” called &lt;em&gt;Beautiful Code&lt;/em&gt; and I hope to get the review up early next year. Props to &lt;a href=&quot;http://www.oreilly.com&quot;&gt;O’Reilly Media&lt;/a&gt; for making this happen.&lt;/p&gt;
&lt;h5&gt;Get Back Into Running&lt;/h5&gt;
&lt;p&gt;I took me until September, but I finally got back into running! It was great to hit the trails again, and I realized how truly crazy it is around here with the hills for my run. It was a quick learning, and humbling, experience in keeping myself properly paced and not to go out too hard. I also was able to stumble into some new running tech to help along the way.&lt;/p&gt;
&lt;p&gt;The sole disadvantage to daylight savings time around here is that come late October, it was still pitch black at 5:30 in the morning, which is when I typically took my runs. I haven’t been able to find a suitable timeframe to run again, but I’ve already made a commitment to run the Whiskey Row Half-Marathon in May, so I’ll need to work things out quick.&lt;/p&gt;
&lt;h5&gt;Get a couple of small projects going…&lt;/h5&gt;
&lt;p&gt;The projects I had in mind never made it to the table, but surprisingly enough, four OTHER projects came into place instead:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Maintenance/Updates of the &lt;a href=&quot;http://evangelicaloutpost.com&quot;&gt;Evangelical Outpost&lt;/a&gt; website.&lt;/li&gt;
&lt;li&gt;Updating an existing &lt;a href=&quot;/blogml-importer&quot;&gt;BlogML WordPress&lt;/a&gt; plugin to make it compatible with version 3.0 (and allow me to migrate my blog in 8^D)&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;http://l5rhonor.com&quot;&gt;simple app little mobile app&lt;/a&gt; that leverages the new features of HTML5 to allow me to run it on my iPod touch, as well any Android devices without installation. It makes my guys nights playing L5R that much more fun.&lt;/li&gt;
&lt;li&gt;An application to &lt;a href=&quot;/announcing-blog-migrator&quot;&gt;migrate your blog&lt;/a&gt; from one platform to another. This app is a lot more flexible than the WordPress plugin and actually made a little bit of money. It went out as open source and I’m excited to do some needed updates to this application.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;In Conclusion&lt;/h5&gt;
&lt;p&gt;There’s a saying out there that goes “Man plans and God laughs” since we truly have no idea what is going on in the bigger scheme of things. While I met the resolutions I had planned for this past year, none of them really turned out how I envisioned they would. In this past, this would have frustrated me to no end. Now I see how being open to new changes when it appears your plans are not going according to your intentions can lead to bigger and better things. While I definitely have some ideas for my 2011 resolutions, I think one of them will be to simply keep my life open to where God wants to take it, and what plans He has decided for the year. As scary as this often can be (we want to drive so badly!) it can also be very stress reducing and exciting. We’ll see what 2011 holds…&lt;/p&gt;
</content:encoded></item><item><title>Review Plain Andamp Simple Microsoft Sharepoint 2010</title><link>https://dillieo.me/posts/development/2010-12-15-review-plain-andamp-simple-microsoft-sharepoint-2010/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-12-15-review-plain-andamp-simple-microsoft-sharepoint-2010/</guid><description>PlainSimpleSharePoint2010</description><pubDate>Wed, 15 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After completing some SharePoint 2010 training that was very focused on code and “under the hood” concepts, I needed a book to walk me through the basic tasks found in SharePoint. I found &lt;em&gt;Plain &amp;amp; Simple – Microsoft SharePoint 2010&lt;/em&gt; by &lt;em&gt;Johnathan Lightfoot and Chris Beckett&lt;/em&gt; to be the perfect book to get me through the day to day tasks involved with SharePoint 2010.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;This book is a “getting things done” type of book. There is a little bit of concept explanation, but primarily the book walks you through the steps of accomplishing various tasks in SharePoint 2010: Lists, Views, Workflows, Security, and more. Nearly every page contains screen shots, as well as numbered steps to accomplish the task described. What really impressed me was how the screen shots were tagged in conjunction with the numbered steps, so you could easily locate the necessary buttons with the task. This detail is very important since the web interface has a lot of buttons and controls to work with. You won’t find in depth coverage of any given concept in this book, but that is fine. You can use this book to easily get a new site up in SharePoint 2010, and then use a more detailed book to configure the site in more detail.&lt;/p&gt;
&lt;p&gt;I highly recommend this book to any new users to SharePoint 2010, as it will help you get familiar with the SharePoint 2010 environment and common tasks. I also recommend it to SharePoint programmers as a reference point. Plain &amp;amp; Simple – Microsoft SharePoint 2010 is straightforward, simple, and an essential resource to any SharePoint user or developer. You can get this book through O’Reilly Books at &lt;a href=&quot;http://oreilly.com/catalog/9780735642287&quot;&gt;http://oreilly.com/catalog/9780735642287&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How To Swap Faces Using Windows Live Photo Gallery</title><link>https://dillieo.me/posts/growth/2010-12-13-how-to-swap-faces-using-windows-live-photo-gallery/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-12-13-how-to-swap-faces-using-windows-live-photo-gallery/</guid><description>FamilyPhoto1</description><pubDate>Mon, 13 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: I&apos;ve verified that this technique works with Windows Live Photo Gallery 2012 as well as 2010 when this was posted. Thanks for stopping by!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Yep, the commercials are quite accurate. You can easily swap faces and create that “ultimate” Christmas photo just in time. I know because Jen did it last night. 8^D Oddly enough, all the “common” searches we tried didn’t pull up what we needed, so after finally digging out the answer, I wanted to share.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We wanted to add a photo to our Christmas cards this year, and had a great couple of pictures from Thanksgiving, but there were a couple of small problems:&lt;/p&gt;
&lt;p&gt;Doh! Honnie was looking down to make sure Rylee was looking at the camera.&lt;img src=&quot;@assets/images/posts/2010-12-familyphoto2_thumb.jpg&quot; alt=&quot;FamilyPhoto2&quot; /&gt; Doh! Rylee wasn’t too happy at the moment. I think Maggie the dog was going after her food.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To the cloud!!!!&lt;/em&gt; At least that’s what they say in the commercial. Start up &lt;a href=&quot;http://explore.live.com/windows-live-photo-gallery&quot;&gt;Windows Live Photo Gallery&lt;/a&gt; and make sure you’ve used the facial recognition tagging to identify everybody in the photo. The next step, and a slightly tricky one, is to simply “pin”, or check the box next to the two photos you want to “swap faces” with. We kept trying to right click on a photo when selected or even copy/paste the face to no avail.&lt;/p&gt;
&lt;p&gt;Once the two photos are selected, click on the “Create” menu option and select the “Photo Fuse” option that is available. This is where the magic begins.&lt;img src=&quot;@assets/images/posts/2010-12-photofuse1_thumb.png&quot; alt=&quot;PhotoFuse1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When the photo fuse window pops up, it will give you the option to select a person, and choose from the available faces for that person. What is REALLY nice is that it will allow you to scale the area that you want to select. In our case, we needed to shrink the selection area a little bit, so we didn’t overlap on Rylee’s head at all.&lt;img src=&quot;@assets/images/posts/2010-12-photofuse2_thumb.png&quot; alt=&quot;PhotoFuse2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Result:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once you’ve tweaked and replaced to your liking, simply click the “Save” button and it will save the changes as a fresh photo. And voila! Christmas photos are saved!&lt;img src=&quot;@assets/images/posts/2010-12-christmas2010_thumb.jpg&quot; alt=&quot;Christmas2010&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We’ve been experimenting with &lt;a href=&quot;http://explore.live.com/windows-live-photo-gallery&quot;&gt;Windows Live Photo Gallery&lt;/a&gt; for a little while now and really like what it is offering, especially with this photo. There’s also a built in panoramic “stitching tool” that works really well too. Give it a whirl sometime and let me know what you think.&lt;/p&gt;
</content:encoded></item><item><title>I Love This Town</title><link>https://dillieo.me/posts/growth/2010-12-06-i-love-this-town/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-12-06-i-love-this-town/</guid><description>Before the festivities begin.</description><pubDate>Mon, 06 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How many places are there out there that read the Christmas story from the book of Luke on the steps of the center of town?! How many places are out there that have their center of town duped up with Christmas lights for the season?!&lt;/p&gt;
&lt;p&gt;My town does! We met up with Jen’s folks and went down this weekend for their annual Courthouse Lighting, which features a reading of the Christmas story out of the book of Luke and Christmas carols, and not just the “Jingle Bells” stuff either. It was a complete blast and I can’t wait for next year. I don’t think the kids can wait either…&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I apologize for the picture quality, the cell phone only works so well. All donations for a iPod Touch 4th Generation or Android Phone graciously accepted. 8^D&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;img src=&quot;@assets/images/posts/2010-12-1204101728_thumb.jpg&quot; alt=&quot;Ice Cream in Winter&quot; title=&quot;Ice Cream in Winter&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2010-12-1204101729_thumb.jpg&quot; alt=&quot;The &amp;quot;Town Christmas Tree&amp;quot; before lighting.&quot; title=&quot;The &amp;quot;Town Christmas Tree&amp;quot; before lighting.&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2010-12-1204101814_thumb.jpg&quot; alt=&quot;The Courthouse is lit!&quot; title=&quot;The Courthouse is lit!&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2010-12-1204101815_thumb.jpg&quot; alt=&quot;The &amp;quot;Town Christmas Tree&amp;quot; after lighting.&quot; title=&quot;The &amp;quot;Town Christmas Tree&amp;quot; after lighting.&quot; /&gt;&lt;img src=&quot;@assets/images/posts/2010-12-1204101822_thumb.jpg&quot; alt=&quot;The side of the Courthouse (all sides are decorated).&quot; title=&quot;The side of the Courthouse (all sides are decorated).&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Christmas Is Here Again</title><link>https://dillieo.me/posts/growth/2010-12-01-christmas-is-here-again/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-12-01-christmas-is-here-again/</guid><description>christmas scene</description><pubDate>Wed, 01 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: This is a repost from back in the summer, but the Season of Advent is here, so it&apos;s worth sharing!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;O Holy Night&lt;/em&gt; is by far my favorite Christmas carol of the season. While I&apos;m not a collector of different versions of the song, I do tend to attune ear a bit more when I hear a new version on the radio or elsewhere.&lt;/p&gt;
&lt;p&gt;A few years back, Jen and I were following the series &apos;&lt;a href=&quot;http://en.wikipedia.org/wiki/Studio_60_on_the_Sunset_Strip&quot;&gt;Studio 60 on the Sunset Strip&lt;/a&gt;&apos; which was a drama style show set to follow the behind the scenes of a SNL type show. One of the episodes close to Christmas time was reflecting upon the recent Hurricane Katrina issues, they have a New Orleans Band play a song on the show. The song was &lt;em&gt;O Holy Night&lt;/em&gt;, and while it wasn&apos;t my favorite rendition, it is definitely up there as my top 3.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;Imagine my surprise then when at the end of the episode they displayed a brief message saying &quot;Download this song for free on the show&apos;s website.&quot; I jumped at this immediately the next morning and have added it to my Christmas collection.&lt;/p&gt;
&lt;p&gt;Since the song was/is free, I figured this might be a nice way to spread some holiday cheer to any of the readers out there. It is a nice mellow rendition of the song, with some good New Orleans flair (it is a brass quartet if memory serves) with a little bit of that &quot;Studio&quot; flair added on to the end. For those of you that want to follow along with the lyrics, here they are in full:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;O Holy Night! The stars are brightly shining, It is the night of the dear Saviour&apos;s birth. Long lay the world in sin and error pining. Till He appeared and the Spirit felt its worth. A thrill of hope the weary world rejoices, For yonder breaks a new and glorious morn. Fall on your knees! Oh, hear the angel voices! O night divine, the night when Christ was born; O night, O Holy Night , O night divine! O night, O Holy Night , O night divine!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Led by the light of faith serenely beaming, With glowing hearts by His cradle we stand. O&apos;er the world a star is sweetly gleaming, Now come the wisemen from out of the Orient land. The King of kings lay thus lowly manger; In all our trials born to be our friends. He knows our need, our weakness is no stranger, Behold your King! Before him lowly bend! Behold your King! Before him lowly bend!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Truly He taught us to love one another, His law is love and His gospel is peace. Chains he shall break, for the slave is our brother. And in his name all oppression shall cease. Sweet hymns of joy in grateful chorus raise we, With all our hearts we praise His holy name. Christ is the Lord! Then ever, ever praise we, His power and glory ever more proclaim! His power and glory ever more proclaim!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;What Christmas songs are your favorite?&lt;/p&gt;
&lt;p&gt;Feliz Navidad! Joyeux Noël à tout le monde!! Merry Christmas Everybody!!!&lt;/p&gt;
&lt;p&gt;[:: Sean ::]&lt;/p&gt;
</content:encoded></item><item><title>Life In The Cloud</title><link>https://dillieo.me/posts/development/2010-11-30-life-in-the-cloud/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-11-30-life-in-the-cloud/</guid><description>DigitalCloud</description><pubDate>Tue, 30 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I had mentioned &lt;a href=&quot;/whats-in-a-domain-name&quot;&gt;a little while back&lt;/a&gt;, having your own “digital cottage” can be a bit issue for a geek out there. After dropping my domain name and hosting, I found that keeping my “digital cottage” in order wasn’t as bad as I had thought. As more and more services are being offered online, or in the “cloud” as they say, I’ve found that it is a lot easier to setup shop in the cloud than I thought.&lt;/p&gt;
&lt;p&gt;To some degree, most of us are already living in the cloud. &lt;a href=&quot;http://facebook.com&quot;&gt;Facebook&lt;/a&gt; alone gives you a way to share photos, links, thoughts, games, and who knows what else online with your friends. It requires nothing to be installed and you can access it through your smart phone. Even my “dumb phone”, a &lt;a href=&quot;http://www.pantechusa.com/phones/jest&quot;&gt;Pantech Jest&lt;/a&gt;, has an application that will allow me basic access to Facebook, if I want to pay for it. Outside of that, let’s run down the typical things that were in my “digital cottage” and see how they’ve made it to the cloud.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;E-Mail:&lt;/strong&gt; I’ll admit e-mail was one of the items that went to the cloud early in the game. Most hosts these days offer IMAP hosting (which means your e-mail stays on the server and doesn’t download to your device). Sadly my old domain host didn’t provide that, so I had moved over to &lt;a href=&quot;http://gmail.com&quot;&gt;Gmail&lt;/a&gt; a long time ago. It would pull all my messages from my Dillie-O Digital server and give me easy access to them. No need to install Thunderbird, Outlook, Eudora, or any of those clients. It ran from my web browser. I even like Gmail’s mobile version so much that I didn’t even bother configuring the mail application on my iPod Touch, I just ran it from the web. Between &lt;a href=&quot;http://gmail.com&quot;&gt;GMail&lt;/a&gt;, &lt;a href=&quot;http://hotmail.com&quot;&gt;Hotmail&lt;/a&gt;, &lt;a href=&quot;http://mail.yahoo.com/&quot;&gt;Yahoo! Mail&lt;/a&gt;, and others, I’m sure there’s a mail service that’ll work perfect for you from the cloud.&lt;/p&gt;
&lt;p&gt;**Blog: **A little while back I had &lt;a href=&quot;/bienvenue-wordpress&quot;&gt;moved my blog&lt;/a&gt; to the &lt;a href=&quot;http://wordpress.com&quot;&gt;WordPress&lt;/a&gt; platform, since I was doing more work for people using WordPress, and I wanted to become more familiar with it. Fortunately, WordPress offers a hosted platform as well (you probably already knew that) that doesn’t allow you to use plugins, but they have a large amount of widgets handy for you to use and they host it for free! I was able to do a quick export of my existing blog and import it without any problems. Just like most other cloud services out there, I can add posts directly through the site, from my &lt;a href=&quot;http://itunes.apple.com/app/wordpress/id335703880?mt=8&quot;&gt;iPod touch app&lt;/a&gt;, or even through &lt;a href=&quot;http://explore.live.com/windows-live-writer&quot;&gt;Windows Live Writer&lt;/a&gt; if I’m sitting down at a computer somewhere.&lt;/p&gt;
&lt;p&gt;If full fledged blogging isn’t your cup of tea, the whole idea of “micro blogging” is taking off as well. Services such as &lt;a href=&quot;http://www.tumblr.com/&quot;&gt;tumblr&lt;/a&gt; and &lt;a href=&quot;https://posterous.com/&quot;&gt;posterous&lt;/a&gt; allow you to blog a quick blurb or photo through e-mail, website, or other options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Files:&lt;/strong&gt; Yep, where would a geek be without coming down from the cloud every now and then to work on a file or a project. More importantly, my hosted WordPress account will not allow me to upload zip files, which prevents me from sharing some of my code samples with the world. Surprisingly enough, there are resources out there too. &lt;a href=&quot;https://www.dropbox.com/referrals/NTU3MjA5MjY5?src=global&quot;&gt;Dropbox&lt;/a&gt; and &lt;a href=&quot;http://explore.live.com/windows-live-skydrive&quot;&gt;Windows Live SkyDrive&lt;/a&gt; make it easy to have online storage solution, both for public and private use. I have a public folder that I store all my code samples for others, and private folders for various projects, music, and files that I want to have access to. Both services can be accessed through the web browser or through a installable program that will auto-sync your files between work and home (amongst other places). It will also allow you to create a public photo gallery, if you already aren’t using another service like &lt;a href=&quot;http://picasaweb.google.com/&quot;&gt;Picasa&lt;/a&gt; or &lt;a href=&quot;http://www.flickr.com/&quot;&gt;Flickr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tying It Together:&lt;/strong&gt; The one thing that may seem a little crazy with this fractured “digital cottage” is being able to access all of it in a single place. While there isn’t “one app to rule them all” (and there shouldn’t be), there are a couple of things that do well to make everything accessible. For starters, &lt;a href=&quot;http://www.threadsy.com/&quot;&gt;threadsy&lt;/a&gt; allows me to manage my e-mail, Facebook, and Twitter stream all in one finely tuned web application. It is a beautiful web app and I highly recommend it. Another is &lt;a href=&quot;http://www.netvibes.com&quot;&gt;netvibes&lt;/a&gt;, the “personalized dashboard.” While I use netvibes as my news reader, it also has widgets for your e-mail, Facebook, Twitter, and a wide variety of other items for you to manage in a single location. Lastly, there are mobile optimized sites and apps for my iPod Touch, that allow me a quick check or update on things while I’m on the road or in an area with free WiFi.&lt;/p&gt;
&lt;p&gt;Another thing you can do is create a &quot;splash page&quot; for yourself that links to all of your other sites. There are several services out there, but I&apos;ve been dabbling with &lt;a href=&quot;http://about.me&quot;&gt;about.me&lt;/a&gt; for a little while and it looks promising, even in beta. There&apos;s no real frills, just link up your accounts, have a pretty screen (or create one like &lt;a href=&quot;http://about.me/dillieo&quot;&gt;I did&lt;/a&gt;), and share away!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Big Bucks? No Whammies? Stop!&lt;/strong&gt; The beauty of cloud living is that all of these services are 100% free. The ads involved are relatively unobtrusive, if non-existent. All of the services have premium accounts that you can pay for, if you want to have extra storage, more features, or no ads. So far I haven’t had a need to pay for any of the premium accounts, and I like it that way, especially with times as tight as they are.&lt;/p&gt;
&lt;p&gt;Being a geek of due diligence, I must point out that living in the cloud puts you at a bit of risk of losing all of your data. You never know when a massive database crash will hit one of these services, or a flood in an odd region will wipe cause data issues due to a power surge. All of the big players these days are mindful of these things and prepare against them, but it behooves you to make a backup of your blogs, e-mail contacts, files, etc. every now and then and burn them onto a DVD or keep them on a portable hard drive, just for safe keeping. Sometimes this is where the premium service may be worthwhile, since some services will maintain a backup for you.&lt;/p&gt;
&lt;p&gt;Overall I am pleasantly surprised with cloud life. It took me a month or so to settle down with a variety of services and find a few other specialized ones to meet my needs, but after that it is pretty amazing, and daunting, and what cloud life can bring.&lt;/p&gt;
&lt;p&gt;Anybody else want to take the plunge…er leap?&lt;/p&gt;
</content:encoded></item><item><title>Give Thanksgiving Its Due A Pseudo Rant</title><link>https://dillieo.me/posts/growth/2010-11-26-give-thanksgiving-its-due-a-pseudo-rant/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-11-26-give-thanksgiving-its-due-a-pseudo-rant/</guid><description>ThanksgivingTable</description><pubDate>Fri, 26 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thanksgiving doesn’t get its due anymore. While I used to complain a little about the Christmas products and music going up in the stores before Thanksgiving came, this year I saw them the day before Halloween in a few places! But that’s another story (to quote an old history professor of mine).&lt;/p&gt;
&lt;p&gt;Thanksgiving, in my mind, has long been a holiday about relaxation and taking a step back to gather the bigger picture about things. I will fully acknowledge that the rest often doesn’t come until after the turkey is on the grill and most of the side dishes are prepared, but the fact remains that Thanksgiving is about having a big meal with your family, reflecting upon the things you have been blessed with, acknowledging another year of those blessings, and lots of pumpkin pie.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;The day after comes, and these days sometimes even the day of, and there is a HUGE rush to get shopping done, Christmas decorations up, crank up the Yule tide, and life becomes one huge stressful situation. Any remnant of thankfulness and rest seems to go out the door in the process. I don’t think we should be living our lives in such a manner! The spirit of thankfulness that comes with Thanksgiving should linger all year long, if you ask me.&lt;/p&gt;
&lt;p&gt;Please don’t think I’m a Scrooge. I’m a HUGE Christmas fan. I’m a firm believer that Christmas lights are like Jell-O, there’s always room for more. I love the Season of Advent and all the festivities that come with celebrating the birth of Christ. I spend the entire month of December with Christmas CDs and &lt;a href=&quot;http://soma.fm&quot;&gt;Soma.FM’s&lt;/a&gt; &lt;a href=&quot;http://somafm.com/play/christmas&quot;&gt;Christmas Lounge&lt;/a&gt; (trust me, you’ll LOVE it). I even have a Santa hat available to wear to celebrate the season.&lt;/p&gt;
&lt;p&gt;But please, give Thanksgiving its due. Take at least an extra day to let the warmth and memory of thanks linger in your home. I’ll admit the 4 day weekend (for some folks) does provide a good opportunity to get some decorations up, but save some of them for the a little later. Don’t start your Christmas music until December 1st. Don’t get caught up in all the mayhem and runaround and have an extra day or two to relax. You’ll thank me for it later.&lt;/p&gt;
</content:encoded></item><item><title>The Thankful Tree</title><link>https://dillieo.me/posts/life/2010-11-24-the-thankful-tree/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2010-11-24-the-thankful-tree/</guid><description>ThankfulTree</description><pubDate>Wed, 24 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This year, Jen found a great project online called a “Thankful Tree.” It was a simple printout that we put on a wall and had leaves that we cut out. Every day the girls would write down something they were thankful for and tape it on to the tree. Our tree is just about full and it is really interesting to listen to the different things the girls are thankful for.&lt;/p&gt;
&lt;p&gt;There are a plethora of “big picture” things I am thankful for, and the struggles and events of this past year has made me even more humble and grateful for the things I have. I’m sure it’s the same for you. However, I was thinking to myself what specific things I am particularly thankful for this year. A few came to mind:&lt;/p&gt;
&lt;p&gt;**Dry Firewood **Last year we had a short supply of firewood. Rain had gotten to some of it and the stuff we had received at the last minute was still pretty sap filled. This caused us to run the heater more and struggle a bit on those nights where we were burning the firewood. This firewood isn’t that efficient at heating as well. Over the course of this year, we were able to get a lot of dry dead trees from local people in town by checking out craigslist. In addition, Jen’s folks had a large tree fall at the beginning of the year and gave us about three-fourths of it, which has been drying out all summer. As a result, we will be able to run our fireplace all winter without worry, have safe/efficient burning wood, and even have enough wood for next winter.&lt;/p&gt;
&lt;p&gt;**Side Jobs **The economy has been rough on everybody over the past few years. With some increasing health expenses and some bills to catch up on, the standard paycheck wasn’t making ends meet. We had started talking about me commuting to Phoenix for work, since the pay was better, but even then it was hard to find employers that would hire a commuter. Fortunately Jen landed a part time job doing web updates from home and I’ve been able to find some small side work that required some night or weekend computing from home. Thanks to these, things are getting manageable again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ESV Bible&lt;/strong&gt; Jen gave me a pair of ESV bibles earlier this year as a gift. I had no beefs with my NIV bible of 10 years, but I had heard about the new edition that came out a year or so back, and respected the community of historians, theologians, scholars, and others that worked on the project. I have a “study bible” chalked full of commentary by R.C. Sproul and others. More importantly, I have a “plain leather bible” as well. Over the past few months of reading it during my devotional time, I’ve found that simply reading the chapters, with out all the “interruptions” of cross references, commentaries, and maps, very natural and intimate. It has helped my spiritual life grow that much more.&lt;/p&gt;
&lt;p&gt;So what about you? What specific things are you thankful for this season? Happy Thanksgiving all!!!&lt;/p&gt;
</content:encoded></item><item><title>Review Head First Wordpress</title><link>https://dillieo.me/posts/development/2010-11-23-review-head-first-wordpress/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-11-23-review-head-first-wordpress/</guid><description>HeadFirstWordPressCover</description><pubDate>Tue, 23 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m a seasoned web developer that has been working a little bit with WordPress over the past 6 months. I’ve read books in the “Head First” series before, so when I discovered that there was a WordPress edition, I grabbed it without hesitation. &lt;em&gt;Head First WordPress&lt;/em&gt; by &lt;em&gt;Jeff Siarto&lt;/em&gt; (&lt;em&gt;HWP&lt;/em&gt;) provides an excellent introduction into the WordPress environment.&lt;/p&gt;
&lt;p&gt;The book is structured to teach you how WordPress works while simultaneously having you build a couple of fictional WordPress sites. As you’re reading, numerous tips, facts, and humorous asides are annotated throughout the book. This is what makes “Head First” an excellent series of books. It engages your mind while teaching you “tech” things that can be boring to a lot of people. &lt;em&gt;HWP&lt;/em&gt; demonstrates how WordPress can be used for a simple content site, such as a business, or for a magazine/journal type site, which has frequent posts by various authors. While HWP doesn’t go too deep with any particular topic, it does make sure to touch the wide variety of concepts involved with a WordPress site: installation, theming, metadata (categories and tags), creating/editing pages, plugins, users, securing your blog, and more. By the end of the book you will have a good grasp on what WordPress can do for you, a working site that you can work with to customize as you see fit, as well as some additional topics to look into for further study (listed in the “Leftovers” appendix).&lt;/p&gt;
&lt;p&gt;While the entire book is geared towards those that have basic web hosting experience, I found the first chapter might be a little intimidating to those users. The chapter outlines a full WordPress install, including FTP transfers, file permissions, and database setups. If you have the “quick install” option available, I suggest you use it. Otherwise, take the time and work through the install, since after that the rest of the book is a lot easier by comparison.&lt;/p&gt;
&lt;p&gt;I also want to point out that chapter 5, involving videos and plugins, was my favorite chapter. It did a fantastic job and explaining how plugins and embedded videos work in a WordPress site. The chapter also involved a little bit of customization to the site to easily embed videos and to clean up your home page so that the entire post is not displayed. The author did a great job of explaining these concepts in an easy to understand manner.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Head First Wordpress&lt;/em&gt; is an excellent book and I highly recommend it to anybody looking to get involved with this popular platform. You can view a preview of the book by going to the O’Reilly site at &lt;a href=&quot;http://oreilly.com/catalog/9780596806286/&quot;&gt;http://oreilly.com/catalog/9780596806286/&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Announcing Blog Migrator</title><link>https://dillieo.me/posts/development/2010-11-17-announcing-blog-migrator/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-11-17-announcing-blog-migrator/</guid><description>Announcing Blog Migrator</description><pubDate>Wed, 17 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Taken from the &lt;a href=&quot;http://blogmigrator.codeplex.com&quot;&gt;CodePlex&lt;/a&gt; site where I&apos;ve published things:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Blog Migrator tool is an all purpose utility designed to help transition a blog from one platform to another. It leverages XML-RPC, BlogML, and WordPress WXR formats. It also provides the ability to &quot;rewrite&quot; your posts on your old blog to point to the new location.&lt;/p&gt;
&lt;p&gt;The Blog Migrator started out as a bounty by Roy Osherove looking for a way to migrate out from the weblogs.asp.net site into SquareSpace. By default, SquareSpace did not have an automatic import tool for BlogML generated export files. Thus this project was born.&lt;/p&gt;
&lt;p&gt;Blog Migrator can handle both simple (only post) migrations and complete (posts, comments, etc.) depending on which format you use. Blog Migrator can read BlogML dumped files or connect directly to your site via XML-RPC. You can publish to your new site via XML-RPC, or generate a WordPress WXR document, which is widely used by numerous blog services to import content. One of the most handy features of Blog Migrator is the ability to update your &quot;source&quot; blog posts to point to the destination blog, thus helping your users know of your new location.&lt;/p&gt;
&lt;p&gt;While functional, there are lots of additional features that can be added (Movable Type/Blogger format support, previews of source/destination content). You are encouraged to help make this tool even better by taking the source, looking at features/bugs, and improve things even more!&lt;/p&gt;
&lt;p&gt;Enjoy! And thanks to &lt;a href=&quot;http://osherove.com&quot;&gt;Roy Osherove&lt;/a&gt; for giving me this opportunity!&lt;/p&gt;
</content:encoded></item><item><title>Adhoc Andldquocubanandrdquo Grilled Cheese Sandwich</title><link>https://dillieo.me/posts/tips/2010-11-11-adhoc-andldquocubanandrdquo-grilled-cheese-sandwich/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2010-11-11-adhoc-andldquocubanandrdquo-grilled-cheese-sandwich/</guid><description>GrilledCheeseAd</description><pubDate>Thu, 11 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’re familiar with the recipe, there is such a thing as a “cuban” Panini sandwich. The distinguishing factor to them are the tang of the deli mustard and pickles in it.&lt;/p&gt;
&lt;p&gt;Last night we were craving a grilled cheese sandwich, but needed a little more to it than just the cheese and bread. So after a quick raid of the fridge, I tossed together the following ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bread&lt;/li&gt;
&lt;li&gt;Butter&lt;/li&gt;
&lt;li&gt;Cheese&lt;/li&gt;
&lt;li&gt;Ham&lt;/li&gt;
&lt;li&gt;Deli Mustard&lt;/li&gt;
&lt;li&gt;Dill Pickles (cut into lengthwise slices, though they sell them in the jar this way too. Make sure you dry them off a little bit so the juices don’t run.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Items in hand, I went about the typical grilled cheese process. Butter the bread on one side, and put it on the hot grill. I then put down a good helping of deli mustard to cover the slice, then put the cheese, ham, and pickles on top. Put a little more deli mustard on top (depending on how much you like) and top with another piece of buttered bread.&lt;/p&gt;
&lt;p&gt;Make your grill cheese as usual and enjoy! It turned out a LOT better than I expected. We had simple white bread, but next time I’ll try it with a good sourdough or rye bread.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Adhoc Cuban Grilled Cheese Sandwich</title><link>https://dillieo.me/posts/tips/2010-11-11-adhoc-cuban-grilled-cheese-sandwich/</link><guid isPermaLink="true">https://dillieo.me/posts/tips/2010-11-11-adhoc-cuban-grilled-cheese-sandwich/</guid><description>GrilledCheeseAd</description><pubDate>Thu, 11 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’re familiar with the recipe, there is such a thing as a “cuban” Panini sandwich. The distinguishing factor to them are the tang of the deli mustard and pickles in it.&lt;/p&gt;
&lt;p&gt;Last night we were craving a grilled cheese sandwich, but needed a little more to it than just the cheese and bread. So after a quick raid of the fridge, I tossed together the following ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bread&lt;/li&gt;
&lt;li&gt;Butter&lt;/li&gt;
&lt;li&gt;Cheese&lt;/li&gt;
&lt;li&gt;Ham&lt;/li&gt;
&lt;li&gt;Deli Mustard&lt;/li&gt;
&lt;li&gt;Dill Pickles (cut into lengthwise slices, though they sell them in the jar this way too. Make sure you dry them off a little bit so the juices don’t run.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Items in hand, I went about the typical grilled cheese process. Butter the bread on one side, and put it on the hot grill. I then put down a good helping of deli mustard to cover the slice, then put the cheese, ham, and pickles on top. Put a little more deli mustard on top (depending on how much you like) and top with another piece of buttered bread.&lt;/p&gt;
&lt;p&gt;Make your grill cheese as usual and enjoy! It turned out a LOT better than I expected. We had simple white bread, but next time I’ll try it with a good sourdough or rye bread.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Rainbow Faces</title><link>https://dillieo.me/posts/growth/2010-11-10-rainbow-faces/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-11-10-rainbow-faces/</guid><description>Daddys Girls</description><pubDate>Wed, 10 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yeah, it’s a little late to the game, but we took this photo about a month back at the local “Dogtober” fest they had. They couldn’t resist rainbows, and I couldn’t resist taking a picture. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Blogs On The Playground</title><link>https://dillieo.me/posts/development/2010-11-03-blogs-on-the-playground/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-11-03-blogs-on-the-playground/</guid><description>direction-confusion</description><pubDate>Wed, 03 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The best way I can describe it is this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;…having to translate from blog format A over to blog format B since blog format C (which is where I need to go) doesn&apos;t have a immediately available way to read blog format A, but can read blog format B.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Such is the “bounty” that I’m working on at the moment. What started out as a a “weekend warrior” project is starting to take a bit more time. Fortunately the person that has requested the project is gracious to give me some extra time and the benefits are quite nice when it gets done.&lt;/p&gt;
&lt;p&gt;However, it never ceases to amaze me that the more we try to find a “common” format to work with, the more we want to create specialized nuances, and thus we fragment our sources again. Sometimes we play well together on the playground of data structures and can go back and forth with little hassle. Sometimes we can’t, like what I’m working with. However, it turns out that the two blogs on the playground say they both know “esperanta” or something like that, so I’m going to talk at them that way now.&lt;/p&gt;
</content:encoded></item><item><title>Some Things Linger Forever</title><link>https://dillieo.me/posts/growth/2010-11-02-some-things-linger-forever/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-11-02-some-things-linger-forever/</guid><description>Some Things Linger Forever</description><pubDate>Tue, 02 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sunday night after trick-or-treating, the family was over at Jen’s folks and Rylee and I were sitting next to the fireplace. I was explaining to her how we have to be careful so we don’t get hurt by it.&lt;/p&gt;
&lt;p&gt;She asked, “Daddy, when you were a little boy, did you get to do the fire?”&lt;/p&gt;
&lt;p&gt;I told her that I helped with the newspaper, like she does, but I watched my daddy make the fire. One time I thought I would help, and a little ember had popped out and hurt my finger. It was nothing serious, just something I learned by.&lt;/p&gt;
&lt;p&gt;After this, Rylee looks at me and asks, “Daddy, where live your daddy?”&lt;/p&gt;
&lt;p&gt;I told her, “My daddy lives with Jesus now. But that’s okay, one day we’ll see him again.”&lt;/p&gt;
&lt;p&gt;With a slight tinge of sadness in her voice she said “Oh…”&lt;/p&gt;
&lt;p&gt;Without missing a beat, Jen’s dad chimed in and said, “Yeah, its sad because he would have loved you very much.”&lt;/p&gt;
&lt;p&gt;Indeed he would.&lt;/p&gt;
&lt;p&gt;We just let that linger there for a bit.&lt;/p&gt;
</content:encoded></item><item><title>Some Things Linger Foreverandhellip</title><link>https://dillieo.me/posts/growth/2010-11-02-some-things-linger-foreverandhellip/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-11-02-some-things-linger-foreverandhellip/</guid><description>Some Things Linger Foreverandhellip</description><pubDate>Tue, 02 Nov 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sunday night after trick-or-treating, the family was over at Jen’s folks and Rylee and I were sitting next to the fireplace. I was explaining to her how we have to be careful so we don’t get hurt by it.&lt;/p&gt;
&lt;p&gt;She asked, “Daddy, when you were a little boy, did you get to do the fire?”&lt;/p&gt;
&lt;p&gt;I told her that I helped with the newspaper, like she does, but I watched my daddy make the fire. One time I thought I would help, and a little ember had popped out and hurt my finger. It was nothing serious, just something I learned by.&lt;/p&gt;
&lt;p&gt;After this, Rylee looks at me and asks, “Daddy, where live your daddy?”&lt;/p&gt;
&lt;p&gt;I told her, “My daddy lives with Jesus now. But that’s okay, one day we’ll see him again.”&lt;/p&gt;
&lt;p&gt;With a slight tinge of sadness in her voice she said “Oh…”&lt;/p&gt;
&lt;p&gt;Without missing a beat, Jen’s dad chimed in and said, “Yeah, its sad because he would have loved you very much.”&lt;/p&gt;
&lt;p&gt;Indeed he would.&lt;/p&gt;
&lt;p&gt;We just let that linger there for a bit.&lt;/p&gt;
</content:encoded></item><item><title>Ftp 501 Error Woes With Ssis And As400</title><link>https://dillieo.me/posts/development/2010-10-22-ftp-501-error-woes-with-ssis-and-as400/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-10-22-ftp-501-error-woes-with-ssis-and-as400/</guid><description>FTPAS400File</description><pubDate>Fri, 22 Oct 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The other day I was helping Anne (our AS400 guru) with an SSIS task needed for a data conversion project she&apos;s working on. The process was simple. She&apos;d connect to a file (sort of like a database table) on the AS400 and download the data to a local text file (space padded). She&apos;d then take this file and upload it as a file on the AS400 in another location, which would automatically load it up as a table for viewing/modification.&lt;/p&gt;
&lt;p&gt;Anne had created a SSIS package for this that was quite simple. One task to download the file over an ODBC connection, and another task to upload the file via FTP to the server again. However, after configuring and running the package, the job kept failing with the following message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;501 Unknown extension in database file name.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anne had verified the path was correct. The path in question was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/qsys.lib/trlibobx.lib/ccstx1p.mbr&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The way the AS400 works, if memory serves, is that you specify the file you want to upload into when doing FTP uploads and the server handles the processing of the file into the table accordingly.&lt;/p&gt;
&lt;p&gt;After a few proverbial beatings of the head against a wall ni search of details, we donned our Googlian Monk robes and did some searching. Interestingly enough, the FTP task within SSIS doesn&apos;t function the same way. We never pulled the full debug log to figure out why, but what we did discover was two key points:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Contrary to typical file uploads, when using the FTP task, you DO NOT specify the file that you upload to in your path.&lt;/li&gt;
&lt;li&gt;When doing uploads in this fashion, the AS400 server will only allow files with a .file in their extension.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With this info, and a few more tweaks to the task, we finally got things to work. Instead of downloading our data into a .txt file, we downloaded it directly into the filename we needed:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2010-10-ftpas400file.png&quot; alt=&quot;FTPAS400File&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Secondly, in the FTP task, we specifed only the path to the location that we were to upload to. We could even overwrite an existing file if it was already there on the server.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2010-10-ftpas400task.png&quot; alt=&quot;FTPAS400Task&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Success! There were a total of three files that needed to go through this routine, and the rest of them took on the magnitude of minutes to accomplish, as opposed to a good 2 hours for the first one. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Exporting A Gridview To Excel</title><link>https://dillieo.me/posts/development/2010-10-19-soup-to-nuts-exporting-a-gridview-to-excel/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-10-19-soup-to-nuts-exporting-a-gridview-to-excel/</guid><description>Soup To Nuts Exporting A Gridview To Excel</description><pubDate>Tue, 19 Oct 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Excel spreadsheets are a subtle form of currency in LOB and other environments. If you can get some data off the screen and into a spreadsheet to an Excel guru, they will love you for life and can do some amazing things with the data. In the ASP.Net WebForms world, GridViews still run rampant. They are easy to configure, easy to extend to include update/edit/delete controls, and provide a nice way to interact with data in a common interface.&lt;/p&gt;
&lt;p&gt;Making these two items work together has been a little daunting in the past. Interfacing with the GridView wasn&apos;t the issue, it was generating an Excel document. You could easily generate a CSV file with the data needed, but that doesn&apos;t allow you to generate a header and potentially format some key cells in the spreadsheet. There are the Interop libraries, but these are older COM wrappers and are generally frowned upon with .Net apps. Visual Studio Tools for Office (VSTO) is a robust library for working with all of the Office document types, but it also requires Office on the system to generate the objects fully.&lt;/p&gt;
&lt;p&gt;I recently stumbled upon a new library, called &lt;a href=&quot;http://npoi.codeplex.com/&quot;&gt;NPOI&lt;/a&gt;, which makes this entire process quick and painless. The library isn&apos;t terribly new. It is a port of Apache&apos;s POI library, which is a Java library used create and read Office documents. The POI library has been around a while and is well written, so getting the .Net version of it puts you ahead, even for its 1.2.3 release.&lt;/p&gt;
&lt;p&gt;The example package you can download has some great samples and its really simple to iterate through the row/column structure of the document you&apos;re creating. Since the GridView is equally easy to interate through its row/column structure, I was able to tap into an existing web application and create a basic spreadsheet in about 20. The code is as simple as this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DocInfo = PropertySetFactory.CreateDocumentSummaryInformation(); DocInfo.Company = &quot;Dillie-O Digital&quot;; Workbook.DocumentSummaryInformation = DocInfo;

SummaryInfo = PropertySetFactory.CreateSummaryInformation(); SummaryInfo.Subject = &quot;Soup to Nuts GridView Export Example&quot;; Workbook.SummaryInformation = SummaryInfo;

DataSheet = Workbook.CreateSheet(&quot;Employees&quot;);

for(int i = 0; i &amp;amp;lt;= GridData.Rows.Count - 1; i++) { CurrRow = DataSheet.CreateRow(i);

for(int j = 0; j &amp;amp;lt;= GridData.Rows\[i].Cells.Count - 1; j++) { if(!IgnoreColumns.Contains(j)) { CurrCell = CurrRow.CreateCell(i); CurrCell.SetCellValue(GridData.Rows\[i].Cells\[j].Text); } } }

ResultStream = new FileStream(EndPath, FileMode.Create); Workbook.Write(ResultStream); ResultStream.Close();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All of the dirty work is handled by the libraries in the API and you do not need Office installed on the machine generating the documents! It is really simple and effective, which is a HUGE credit to the library, and the authors porting it to help .Net developers. There is a lot more available in these libraries, which is worth looking into!&lt;/p&gt;
&lt;p&gt;Similar to my other &quot;Soup to Nuts&quot; type articles, I&apos;ve created a C# and a VB.Net project that contains everything you need to export a GridView to Excel for viewing. I&apos;ve done a little header formatting in the example, as well as include an option to exclude columns from being exported (as in the case when you have a GridView with action links in one of the columns. I&apos;ve also included a sample on how to export the GridView to a file and how to export the GridView to a file and prompt the user to download/open it. Many thanks to &lt;a href=&quot;http://npoi.codeplex.com/&quot;&gt;NPOI&lt;/a&gt; for making my life a lot easier, and hopefully this will help you to!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Visual Studio 2010 Solutions&lt;/strong&gt; &lt;a href=&quot;https://www.sugarsync.com/pf/D6057691_8153298_87179&quot;&gt;S2NGridViewExcelCS&lt;/a&gt; (C#) &lt;a href=&quot;https://www.sugarsync.com/pf/D6057691_8153298_87173&quot;&gt;S2NGridViewExcelVB&lt;/a&gt; (VB)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Visual Studio 2008 Solutions&lt;/strong&gt; &lt;a href=&quot;https://www.sugarsync.com/pf/D6057691_8153298_87177&quot;&gt;S2NGridViewExcelCS&lt;/a&gt; (C#) &lt;a href=&quot;https://www.sugarsync.com/pf/D6057691_8153298_87171&quot;&gt;S2NGridViewExcelVB&lt;/a&gt; (VB)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: You&apos;ll need &lt;a href=&quot;http://www.7-zip.org/&quot;&gt;7-Zip&lt;/a&gt; to extract these files:&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>Converting Formatting And Padding Values In Tsql</title><link>https://dillieo.me/posts/development/2010-10-12-converting-formatting-and-padding-values-in-tsql/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-10-12-converting-formatting-and-padding-values-in-tsql/</guid><description>Converting Formatting And Padding Values In Tsql</description><pubDate>Tue, 12 Oct 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is another hat tip (HT) to my fellow coffee drinker co-worker Anne for some hard work in figuring out some tricky code.&lt;/p&gt;
&lt;p&gt;Anne is working on a data conversion project between two systems. She needs to take some data and convert it to decimal format, round the value to remove the decimal places, and then pad it to the left to 9 places, to have leading 0s in front of the data.&lt;/p&gt;
&lt;p&gt;While this task isn&apos;t difficult, this is a little tricky, especially considering you have to convert the values to various types in order to to parse into other data types and do the padding. PL/SQL has a nice LPAD function for padding strings that T-SQL is currently lacking.&lt;/p&gt;
&lt;p&gt;After a bit of testing, tweaking, and brain mungling (a technical term) the following solution was found:&lt;/p&gt;
&lt;p&gt;See, LOTS of casting and wrapping and converting, but it works, and I&apos;m keeping dibs on this for the next time I have to deal with something similar.&lt;/p&gt;
</content:encoded></item><item><title>Windows Server 2003 64Bit Iis 6 32Bit Aspnet 4 Framework And Targeting</title><link>https://dillieo.me/posts/development/2010-10-07-windows-server-2003-64bit-iis-6-32bit-aspnet-4-framework-and-targeting/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-10-07-windows-server-2003-64bit-iis-6-32bit-aspnet-4-framework-and-targeting/</guid><description>Windows Server 2003 64Bit Iis 6 32Bit Aspnet 4 Framework And Targeting</description><pubDate>Thu, 07 Oct 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is nothing but a hat tip (HT) to &lt;a href=&quot;http://redtrails.com&quot;&gt;my buddy Ben&lt;/a&gt; at work for his awesome work.&lt;/p&gt;
&lt;p&gt;Here&apos;s the rundown. There is a server at work that is running Windows Server 2003 x64 with IIS 6 and and .Net 4 Framework. Due to an existing application on the server, IIS has to run in 32bit mode. Ben had recently put a new web application on the server, which needed to use the .Net 4 Framework. Since the server was initially setup with the .Net 2.0 Framework, the new application defaulted to the 2.0 Framework. Typically you can go to the IIS settings for the application and use the ASP.Net tab to re-target the appropriate Framework. But for some reason, when he went into IIS to set the properties on the Virtual Directory/Web Application, the ASP.Net tab was missing.&lt;/p&gt;
&lt;p&gt;After a LOT of digging, head beating against the wall, and some good thinking, he wasn&apos;t able to get the tab to appear, but he was able to get the application to retarget the proper framework by doing the following:&lt;/p&gt;
&lt;p&gt;1. Open up the command prompt on the server and figure out how IIS is running by executing the following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cscript C:\inetpub\adminscripts\adsutil.vbs GET W3SVC/AppPools/Enable32BitAppOnWin64&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2. You should see &apos;Enable32BitAppOnWin64 : (BOOLEAN) True.&apos;&lt;/p&gt;
&lt;p&gt;3 Is the server setup for 32-bit compatibility mode for legacy apps? If not execute the following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32BitAppOnWin64 True&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;4. Assuming it has been installed, make sure .Net 4 Framework is registered for ASP.Net by executing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;aspnet_regiis -i&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;5. Find out what IIS extensions are enabled (0) and disabled (0) by executing teh following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;C:\Windows\System32 &quot;cscript iisext.vbs /ListFile&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;6. If the .Net 4 Framework is disabled you will need to run the following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and verify that you now see a &apos;1&apos; in the status of the desired Framework.&lt;/p&gt;
&lt;p&gt;7. Now navigate to your Framework version folder and run the following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;aspnet_regiis -lv&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;to list the status and installation path of all versions of ASP.NET that are installed on the computer. Notice the (Root) note that specifies this is the default Framework.&lt;/p&gt;
&lt;p&gt;8. Execute the following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;aspnet_regiis -lk&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;to list the path and version of all IIS metabase keys where ASP.NET is mapped.&lt;/p&gt;
&lt;p&gt;9. Note in the attached image that the desired application DSMapApp is still targeting the 2.0 framework EVEN THOUGH running aspnet_regiis -i is supposed to switch all apps to the specified Framework.&lt;/p&gt;
&lt;p&gt;10. To switch a particular application&apos;s targeted Framework we&apos;ll need the -s switch to Update scriptmaps and application-pool assignments for the specified application and for all sub-applications.:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;aspnet_regiis -s W3SVC/1/Root/[AppName]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;...and that should do it. The following screen shot below traces the commands executed.&lt;/p&gt;
&lt;p&gt;Mad props to you Ben!&lt;/p&gt;
</content:encoded></item><item><title>Tame Your Configurationdeployments With Web Config Transforms</title><link>https://dillieo.me/posts/development/2010-09-27-tame-your-configurationdeployments-with-web-config-transforms/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-27-tame-your-configurationdeployments-with-web-config-transforms/</guid><description>Tame Your Configurationdeployments With Web Config Transforms</description><pubDate>Mon, 27 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Starting out with ASP.Net web apps, one of the maintenance hassles I ran into was managing connection strings and application settings in the web.config file. I typically have three environments for a single application (development on my box, the test server, the live server), which offer a mix of e-mail server, database server, and general configuration changes that affect the app.&lt;/p&gt;
&lt;p&gt;Initially, I kept all of my configuration settings in the web.config file, and then commented or uncommented out the appropriate section based on the environment involved. This worked fine until I had to do a &quot;mixed&quot; test where my reference data was reading from the production database and my record data was in the test database. Maintaining the XML there was hideous. In addition, it became difficult at times to explain to the SysAdmin where and how to modify the XML when migrating the application to production. I didn&apos;t have access to the production site, and they aren&apos;t XML experts.&lt;/p&gt;
&lt;p&gt;The next step, and long term solution, was to create separate files for each environment. In this case I&apos;d create a web.config.test, and web.config.prod file and update them with the proper values. When I migrated the application to test, I simply copied the web.config.test file up with it. I then deleted the existing web.config file and rename the .test file accordingly. While not nearly as crazy as the single config file, there still were management issues with the various files. There were plenty of times where I had updated something in the web.config file in an atypical section, and it tricked into test or production. This caused a big headache when the same forms authentication cookie was being used in multiple environments.&lt;/p&gt;
&lt;p&gt;With the release of Visual Studio 2010, a new feature came out called Web Configuration Transforms. To create a set of transforms, simply right click on the Web.config file in your ASP.Net project select &quot;Add Config Transforms.&quot; That&apos;s it! You&apos;ll see two new files associated with your web.config file called &quot;Web.Debug.config&quot; and &quot;Web.Release.config&quot;. Transformations work by doing simple XSLT transformations on your web.config file to create a new config file. If you open one of these files, you&apos;ll see that it is a &quot;diet&quot; version of a web.config file with a few sample values added. The structure of the tranform file matches the architecture of the web.config file, but only where you need changes to occur. For instance, if you needed to modify the connection string for your test environment, open the Web.Debug.config file and add the following lines:&lt;/p&gt;
&lt;p&gt;This tells the transform to go to the &amp;lt;connectionStrings section&amp;gt; match the entity with the name &quot;AppSecurity&quot; and replace the connectionString attribute with the new value we specify. The transform requires a unique way of identifying a entity and can then perform the modifications necessary. If you had an application setting that needed updating, you can do the following:&lt;/p&gt;
&lt;p&gt;In this case we match the &quot;key&quot; attribute in order to set the value.&lt;/p&gt;
&lt;p&gt;You can remove values as well. For instance, by default the following transform is added to your Web.Release.config file:&lt;/p&gt;
&lt;p&gt;This entry removes the debug option from the compilation settings so that your production apps don&apos;t have the debug data compiled in can slow down the app.&lt;/p&gt;
&lt;p&gt;Armed with this data, I was able to easily update my transform files to have the proper application settings and connection strings needed. I also realized that I could keep my forms authentication name updated for the proper environment as well. Going back into the &amp;lt;system.web&amp;gt; section of the transform, I added the following section:&lt;/p&gt;
&lt;p&gt;This transform finds my forms authentication section and renames my authentication ticket to my new production value.&lt;/p&gt;
&lt;p&gt;The beauty of this is that any section in your web.config can be transformed without maintaining a complete web.config file. You simply apply the transform and get a new file out of it.&lt;/p&gt;
&lt;p&gt;The one restriction with web config transforms is that you need to use the Publishing or Deployment tools that are a part of Visual Studio 2010. This in itself isn&apos;t that bad either. If you don&apos;t have direct access to your deployment locations, you can use the simple publishing tool and specify a new folder on your local machine. That way you get your web.config file tranformed and you have a single location in which to launch from in your deployment process. Up until now I&apos;ve had to write my own batch file to prep my deployment process, but that isn&apos;t an issue either.&lt;/p&gt;
&lt;p&gt;If you haven&apos;t had a chance to try them out yet, I HIGHLY recommend getting your hands dirty with Web Config Transformations. They&apos;ll save you a lot of time and effort with your development process.&lt;/p&gt;
</content:encoded></item><item><title>Finding And Replacing Text In Sql Server</title><link>https://dillieo.me/posts/development/2010-09-23-finding-and-replacing-text-in-sql-server/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-23-finding-and-replacing-text-in-sql-server/</guid><description>Finding And Replacing Text In Sql Server</description><pubDate>Thu, 23 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While cleaning up some WordPress hacks last week, I followed some documentation and noticed that MySQL has a nice function for doing a search and replace with text in a given column. All I had to do was execute the following statement:&lt;/p&gt;
&lt;p&gt;This worked out great. I could easily update many rows, or a single one.&lt;/p&gt;
&lt;p&gt;The other day at work, I ran into a situation where I needed to update some bad HTML tags that were sitting in a content field in one of our applications. This database was SQL Server, so I checked the documentation, and they had a REPLACE command as well. The only problem was that it didn&apos;t work in a similar manner, it only worked with actual variables or string content.&lt;/p&gt;
&lt;p&gt;After digging around, I discovered you can accomplish the same effect by simply wrapping up your update statement around a retrival statement that replaces the text at the same time. This is how I got mine to work:&lt;/p&gt;
&lt;p&gt;Since the replace statement requires a string, we have to use the SUBSTRING command to pull out all of the text of the column in question. Its a little crazy, but hey it works.&lt;/p&gt;
&lt;p&gt;SQL Gurus, if you have a better alternative, please share!&lt;/p&gt;
</content:encoded></item><item><title>New Home For The Ccg Toolkit</title><link>https://dillieo.me/posts/development/2010-09-15-new-home-for-the-ccg-toolkit/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-15-new-home-for-the-ccg-toolkit/</guid><description>CCG Toolkit</description><pubDate>Wed, 15 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With the transfer of the blog and the shut down of the domain, I needed to find a new home for the CCG Toolkit code (Deck Studio, Netrep, RONIN), since I believe it is a great resource for anybody looking to cut their teeth on some code or want an idea for building a similar application suite. Most notably I think the use of separate libraries in a SQLite format, plus the potential use of the EAV database model to add new CCGs into the system has a lot of merit.&lt;/p&gt;
&lt;p&gt;That said, I&apos;ve gotten most of the files organized and transfered over to &lt;a href=&quot;http://ccgtoolkit.codeplex.com&quot;&gt;CodePlex&lt;/a&gt;. I hope a few programmers might be able to stumble across the code too and benefit from it. I still need to trip up the main project zip for Deck Studio and the master database SQL file, but I should have that done soon.&lt;/p&gt;
&lt;p&gt;Update: Thanks to Mickey&apos;s comment below, here&apos;s the &lt;a href=&quot;http://ccgtoolkit.codeplex.com/releases/view/52394&quot;&gt;direct link&lt;/a&gt; to the &quot;binaries&quot; or the &quot;installer&quot; version of the apps. No need to worry about source code.&lt;/p&gt;
</content:encoded></item><item><title>Centering Tables With Htmlcss</title><link>https://dillieo.me/posts/development/2010-09-09-centering-tables-with-htmlcss/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-09-centering-tables-with-htmlcss/</guid><description>Centering Tables With Htmlcss</description><pubDate>Thu, 09 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What?! You&apos;re not using CSS layouts for a table-less presentation. How awful!&lt;/p&gt;
&lt;p&gt;Don&apos;t cry foul just yet.&lt;/p&gt;
&lt;p&gt;There ARE still some places out there on the web (notably internal LOB apps that have predefined grids like objects) that are using tables to display their content. As a matter of fact, there are still some places where tables work better, especially when you&apos;re doing just that, displaying tabluar data.&lt;/p&gt;
&lt;p&gt;With the older versions of web browsers and HTML, you could simply add an align=&quot;center&quot; snippet to your table, or even wrap the table in a div or paragraph tag that has it&apos;s text alignment centered and be done with it.&lt;/p&gt;
&lt;p&gt;In today&apos;s browsers, you get mixed results, with most of them leaving the table aligned to the left side of the screen The reason this worked though, was that the browsers weren&apos;t adhering as strictly to HTML guidelines and giving the box element of the table a pass and went ahead and centered the table for you. As HTML5 is finalized and browsers stick closer to CSS3 guidelines, I&apos;m sure none of them will use this old method.&lt;/p&gt;
&lt;p&gt;Fortunately though, the solution to this is simple, almost too simple. It surprised me how long it took me to figure this one out. To my credit (or excuse 8^D) I was still getting the hang of CSS and learning how the box model does things. Alas, enough babble and on to the code.&lt;/p&gt;
&lt;p&gt;To center your table (or GridView objects if you&apos;re using ASP.Net), simply create for yourself two classes:&lt;/p&gt;
&lt;p&gt;.align-center { text-align: center; }&lt;/p&gt;
&lt;p&gt;.CenterTable { margin-left: auto; margin-right: auto; }&lt;/p&gt;
&lt;p&gt;The first class is self explanatory. It is really just an alias to the standard text alignment. However, I like to use this class because it is named a little more friendly for me and allows me to use multiple classes when necessary on an element without having to mix style and class tags within.&lt;/p&gt;
&lt;p&gt;The second class was a bit trickier. What this class does is allows the browser to calculate the left and right margins for the table, which in turn makes sure it centers itself up within whatever containing box it is in, or the page itself. I&apos;ll admit that I&apos;m no CSS guru, so that explanation still seems a bit magical to me.&lt;/p&gt;
&lt;p&gt;Regardless, when you&apos;re ready to roll, all you have to do is this:&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;align-center&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;table class=&quot;CenterTable&quot;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Woot!&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Centerized!!!&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;Or similarly:&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. Simple, handy, reusable.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>The Thorough Vs The Simple Followup</title><link>https://dillieo.me/posts/development/2010-09-08-the-thorough-vs-the-simple-followup/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-08-the-thorough-vs-the-simple-followup/</guid><description>The Thorough Vs The Simple Followup</description><pubDate>Wed, 08 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, I &lt;a href=&quot;/the-thorough-vs-the-simple&quot;&gt;brought up the issue&lt;/a&gt; of the problems developers face in dealing with some everyday type problems with apps. Most of the time, there are two ways of solving an issue, the thorough or the simple. I weighed the pros of each approach.&lt;/p&gt;
&lt;p&gt;Now for the verdict. In the issue I faced last week, I took the simple approach. Why? Primarily because taking the thorough approach would have taken too much time to re-implement, and risked damaging the existing code base, which would have been a far worse situation to deal with.&lt;/p&gt;
&lt;p&gt;Typically I prefer the thorough approach, since it provides for a longer lifespan of an application, but I also believe in using the right tool for the job. In this case, it meant getting a simple solution in place. The customer could be up and running immediately and we didn&apos;t risk breaking the main code base of the application. Even so the &quot;simple&quot; approach took me about a full day of work to bring live.&lt;/p&gt;
&lt;p&gt;Just remember that there are about 100 ways to skin a cat, so there can often be several &quot;right&quot; solutions, as long as you way the impact of that method.&lt;/p&gt;
&lt;p&gt;So what situations have you run into where you evaluated the thorough vs. the simple? Which route did you take?&lt;/p&gt;
</content:encoded></item><item><title>Digital Relocation</title><link>https://dillieo.me/posts/development/2010-09-04-digital-relocation/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-04-digital-relocation/</guid><description>Digital Relocation</description><pubDate>Sat, 04 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a few of your folks may have noticed as of late, the dillieodigital.net domain is now forwarding over here to WordPress. Sadly the time has come where I need to close up the &lt;a href=&quot;/whats-in-a-domain-name&quot;&gt;digital cottage&lt;/a&gt; for a little while. I&apos;ve been able to import all of the posts over, and hopefully I can make a few tweaks as I go along.&lt;/p&gt;
&lt;p&gt;Most of the projects I&apos;ve been working on over time already have a new home, and I&apos;m working on getting a new home setup for the CCG Toolkit / Netrep Archives.&lt;/p&gt;
&lt;p&gt;I&apos;m also using my Gmail account as my primary account now, so feel free to hit me up using the contact page over here. I think most of you know how to get in contact with me otherwise.&lt;/p&gt;
&lt;p&gt;While it would be nice if things were different, this will be an interesting experiment of moving more into &quot;the cloud&quot; for my &quot;digital cottage&quot; Instead of 1 permanent address, I&apos;ll have several, that are tightly connected.&lt;/p&gt;
&lt;p&gt;That&apos;s the latest. Thanks for reading!&lt;/p&gt;
&lt;p&gt;[:: Sean ::]&lt;/p&gt;
</content:encoded></item><item><title>The Thorough Vs The Simple</title><link>https://dillieo.me/posts/development/2010-09-03-the-thorough-vs-the-simple/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-03-the-thorough-vs-the-simple/</guid><description>ThoroughSimple Flowchart</description><pubDate>Fri, 03 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The other morning I ran into an urgent issue with one of our applications. I had recently made some updates, and had assumed that the end users had tested the full process of uploading data into their system. The process included generating a preview document (which looked fine) upon initial submission, with an import to the database.&lt;/p&gt;
&lt;p&gt;As a result of a feature change, the preview document allowed for white spaces in some fields. However, the database itself truncated these white spaces during the scripted import, and caused the import job to fail. This left our end users with missing data, and an urgent time table to get things functional again.&lt;/p&gt;
&lt;p&gt;The application itself is nearly 5 years old now (potentially longer), written in an older version of the .Net framework. It is a little &quot;finicky&quot; when it comes to updates, according to other developers that have updated the application. This put me in an interesting situation when it came to fixing the problem. In addition, another bug was discovered with the submission process as a result of this update. There were additional records being saved for the end user, when there shouldn&apos;t be. This was due to the end user not having the proper way to &quot;abort&quot; a data entry item, when the previous workflow had a workaround process to make this happen. The page also served as an insert AND edit page, with a few variables in place to indicate which &quot;mode&quot; to function in.&lt;/p&gt;
&lt;p&gt;Typically, there are two approaches in resolving this issue:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Thorough&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the thorough approach, I&apos;d evaluate the entire workflow and note where the process is failing and where the workflow is using some bad processing models. In this case I discovered that additional records were being bypassed when the validator count exceeded a certain number, essentially saying, &quot;Don&apos;t worry about having THAT many errors, it means we are to ignore this.&quot; In addition, we noted that the temporary tables being used to store the preview data didn&apos;t quite match the database tables, since whitespace values were getting truncated, causing null column exceptions.&lt;/p&gt;
&lt;p&gt;This is where a &quot;refactor&quot; comes in. The entire page/module would be rewritten to accommodate for the new feature and workflow. Using a validator count as a &quot;bypass&quot; would be removed. The local tables would be updated to prohibit space characters from going in, to eliminate problems during the import. Doing this would take a bit of time, but it would make the workflow cleaner, and potentially more efficient. In addition, future updates would be easier to perform as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Simple&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the simple approach, I&apos;d look at the existing workflow and data model, and I&apos;d find the &quot;nook&quot; in the code where I could inject some code to resolve the issues at hand. In this case I discovered that I could simply change my blank fields to &quot;N/A&quot;. In addition, I find the part in the code when the data values are saved, and do a secondary check to clean up the records.&lt;/p&gt;
&lt;p&gt;This is where a &quot;patch&quot; comes in. There are only two major points in the code where changes need to be made, as well as a couple smaller places as well. Doing this gets the job done fast and fixes the known issues we have at this time. We can get the application up and running by midday, clean up a few data problems caused by the bug, and the user can be on smooth sailing again.&lt;/p&gt;
&lt;p&gt;Having been in the field for a while, I will note that there are people heavily set in one camp or the other. Sometimes some heated discussions arise between how to resolve an issue like this, and I found both of those camps going to war in my head during the initial diagnosis process of this bug.&lt;/p&gt;
&lt;p&gt;How would you resolve it? Which route would you take, the thorough or the simple? I think I&apos;ve laid out the caveats for both solutions, with all the prerequisite information in place. Let me know what you would do and I&apos;ll come back with how I resolved things in a few days...&lt;/p&gt;
</content:encoded></item><item><title>Whats In A Domain Name</title><link>https://dillieo.me/posts/development/2010-09-01-whats-in-a-domain-name/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-09-01-whats-in-a-domain-name/</guid><description>Matrix Code Tunnel</description><pubDate>Wed, 01 Sep 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was first getting into computers, the BBS was the &quot;internet&quot; of the day, and it was confined to your local area. If you were lucky, you had big pockets and could afford the phone bills to call out to other systems, or just decided to eat my &quot;double credits&quot; by accessing the 800 number line (MetroBBS was well worth it).&lt;/p&gt;
&lt;p&gt;So when the Internet was just starting to come to the masses, the entire world became your neighborhood. This was insanely cool, and even cooler still was to have your own niche of this wide world of 1s and 0s out there. GeoCities and AngelFire were just getting off the ground, and they were Ad-laden and didn&apos;t you do lots of then.&lt;/p&gt;
&lt;p&gt;No, the key was to get your own domain name and hosting space out there. Then you could setup your own digital cottage, stick up a sign welcoming visitors to sit and enjoy some conversation, and even let them see what you&apos;re working on in the workshop. Some places you found were massive and amazing. Some were simply and cozy. But it was your own place, free (within reason) to do so as you see fit.&lt;/p&gt;
&lt;p&gt;As I was finishing college. I did just that. Domains and hosting was getting reasonable enough for the average person interested in their own digital plot, and I had picked up the nickname Dillie-O (odd story for another time) as my college career was coming to an end. I wanted to focus a little on the &quot;internet&quot; side of things, so the domain dillieodigital.net was born. A little odd to spell, but easy enough to remember, and most importantly, I liked it and though it had a bit of &quot;me&quot; worked into it.&lt;/p&gt;
&lt;p&gt;That&apos;s how the cottage and thrived since then. I&apos;ve done a smidge of webhosting from it. I&apos;ve had countless projects running out of the workshop over the years. Some of them even made it to their own space for a while as well. While the cottage itself hasn&apos;t always looked the tidiest (I had an old free template that didn&apos;t render well on modern browsers, I&apos;ve always been around for a quick e-mail, or to hold some digital packages for folks since I had the space.&lt;/p&gt;
&lt;p&gt;So I guess to some extent, the domain name is a digital extension of me. That&apos;s pretty cool and potentially scary at the same time, but there is a good amount of &quot;me&quot; (programming time, skills, ideas, thoughts) that I&apos;ve put out into that place and have tried to be as open as possible in that regard. I have no need to try and use a different persona out there (minus the nickname) so it seems very natural at time as well.&lt;/p&gt;
&lt;p&gt;What about you? What&apos;s a domain name to you? Just an easy place to find your blog, or something else?&lt;/p&gt;
</content:encoded></item><item><title>Legacy</title><link>https://dillieo.me/posts/growth/2010-08-29-legacy/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-08-29-legacy/</guid><description>H R Pancakes</description><pubDate>Sun, 29 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week when my mom was out visiting, I learned a couple of neat things while making breakfast for everybody. I learned that my Grandpa Welles always made breakfast for his girls (my mom and two aunts) every Saturday morning. I also learned that one thing he liked to do was make &quot;initial pancakes&quot;, as shown above. I had tried a few things myself, but never came close. My mom gave me the details. The trick is to lay down the letters first and let them cook. For letters such as &apos;R&apos;, make sure to do them backwards. Then when the letters are about 90% done, fill in the batter around them. Finish cooking pancakes as you usually do and you&apos;re set. So this Saturday morning, I made pancakes for the girls, as I typically do, but I got to surprise them with the pancakes you see above. Even though I never did meet my Grandpa Welles, I felt a sense of tradition being passed on as I made these. Thanks Grandpa. What family legacies are you preserving?&lt;/p&gt;
</content:encoded></item><item><title>Three Hours A Week Thatand039S All I Ask</title><link>https://dillieo.me/posts/development/2010-08-27-three-hours-a-week-thatand039s-all-i-ask/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-08-27-three-hours-a-week-thatand039s-all-i-ask/</guid><description>dhai clock</description><pubDate>Fri, 27 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being a programmer is rough, especially when technology moves so fast. I&apos;m sure there are about two new libraries, three new APIs, and a plethora of new widgets that have just come out by the time I finish typing and posting these thing.&lt;/p&gt;
&lt;p&gt;If you&apos;re working in a standard LOB (line of business) you&apos;re stuck between two perils. One hand there is ALWAYS work to do and programming requests typically pile up before you finish. Where I work, we&apos;re down a couple of folks and with the economy, departments are looking to IT to do more of their &quot;processing&quot; work for them. This makes things even more frantic.&lt;/p&gt;
&lt;p&gt;On the other hand, I owe it to myself, and my employer, to keep up with the current trends. This way I can become a better craftsman &lt;em&gt;[Yes, I said that.]&lt;/em&gt; and offer new solutions to problems we face in the future. Keeping up with the current trends, in my opinion, also involves understanding common bugs that are happening with various frameworks and seeing new ways to &quot;skin the cat.&quot;&lt;/p&gt;
&lt;p&gt;All of this takes time, and a bit of detail. Walk up to your supervisor and say, &quot;Hey boss, I want to take some time to research Framework X and maybe write a little app with it.&quot; and you&apos;ll probably get some odd looks. Some supervisors understand this and will let things go, and others will want you to take your own vacation time to do such things. Worse, they may expect you to do those things on your own time. But with a family and a life outside of the job, who&apos;s going to do that? I will sheepishly admit that I enjoy doing my own projects outside of work &lt;em&gt;[I&apos;m a freak that way]&lt;/em&gt;, but that&apos;s a different story and irrelevant here.&lt;/p&gt;
&lt;p&gt;After doing my own scheming and pondering, I think I&apos;ve finally come up with a suitable solution to this situation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Three hours a week, that&apos;s all I ask.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Take three hours out of your work week and devote it to doing the &quot;upkeep&quot; of your trade. How you split it up is up to you. Often times I like to take a half an hour in the morning and a half hour after getting back from lunch to &quot;read my feeds.&quot; I&apos;ve collected a large amount of RSS feeds (and read them nicely thanks to &lt;a href=&quot;http://netvibes.com&quot;&gt;Netvibes&lt;/a&gt;) and I skim through them looking for relevant articles. I look for articles both directly related to my programming language du jour (.Net) but also for programming concepts in general. I also keep some dibs on some aggregated sites so I can see what&apos;s going on with other programming languages, new and old.&lt;/p&gt;
&lt;p&gt;Sometimes I&apos;ll take an hour once or twice during the week and work on a small project using the new framework or technology I&apos;ve been reading about. This is how my &lt;a href=&quot;http://hacksaw.codeplex.com&quot;&gt;Hacksaw&lt;/a&gt; application got off the ground a good 3 or 4 years back. I haven&apos;t had much time to do a lot of upkeep since, but with the new release of MVC 3 and Razor, I&apos;m looking to rewrite the application to leverage the new features. It doesn&apos;t have to, but it also helps if the project you work on has some kind of direct benefit at work.&lt;/p&gt;
&lt;p&gt;You&apos;d be surprised at what 3 hours (a mere 7.5% of a 40 hour work week) will do to hone your skills, and make you aware of technology at large. I don&apos;t think your supervisor will get too mad either, provided you give due priority to servers that catch on fire and apps that go wonky. But talk to them about it, I think they&apos;ll appreciate the benefits you provide to their overall goals. Don&apos;t forget to &lt;a href=&quot;/10/01/phatcodeshare&quot;&gt;share&lt;/a&gt; your discoveries with your fellow programmers as well.&lt;/p&gt;
</content:encoded></item><item><title>Three Hours A Week Thats All I Ask</title><link>https://dillieo.me/posts/development/2010-08-27-three-hours-a-week-thats-all-i-ask/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-08-27-three-hours-a-week-thats-all-i-ask/</guid><description>dali clock</description><pubDate>Fri, 27 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being a programmer is rough, especially when technology moves so fast. I&apos;m sure there are about two new libraries, three new APIs, and a plethora of new widgets that have just come out by the time I finish typing and posting these thing.&lt;/p&gt;
&lt;p&gt;If you&apos;re working in a standard LOB (line of business) you&apos;re stuck between two perils. One hand there is ALWAYS work to do and programming requests typically pile up before you finish. Where I work, we&apos;re down a couple of folks and with the economy, departments are looking to IT to do more of their &quot;processing&quot; work for them. This makes things even more frantic.&lt;/p&gt;
&lt;p&gt;On the other hand, I owe it to myself, and my employer, to keep up with the current trends. This way I can become a better craftsman &lt;em&gt;[Yes, I said that.]&lt;/em&gt; and offer new solutions to problems we face in the future. Keeping up with the current trends, in my opinion, also involves understanding common bugs that are happening with various frameworks and seeing new ways to &quot;skin the cat.&quot;&lt;/p&gt;
&lt;p&gt;All of this takes time, and a bit of detail. Walk up to your supervisor and say, &quot;Hey boss, I want to take some time to research Framework X and maybe write a little app with it.&quot; and you&apos;ll probably get some odd looks. Some supervisors understand this and will let things go, and others will want you to take your own vacation time to do such things. Worse, they may expect you to do those things on your own time. But with a family and a life outside of the job, who&apos;s going to do that? I will sheepishly admit that I enjoy doing my own projects outside of work &lt;em&gt;[I&apos;m a freak that way]&lt;/em&gt;, but that&apos;s a different story and irrelevant here.&lt;/p&gt;
&lt;p&gt;After doing my own scheming and pondering, I think I&apos;ve finally come up with a suitable solution to this situation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Three hours a week, that&apos;s all I ask.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Take three hours out of your work week and devote it to doing the &quot;upkeep&quot; of your trade. How you split it up is up to you. Often times I like to take a half an hour in the morning and a half hour after getting back from lunch to &quot;read my feeds.&quot; I&apos;ve collected a large amount of RSS feeds (and read them nicely thanks to &lt;a href=&quot;http://netvibes.com&quot;&gt;Netvibes&lt;/a&gt;) and I skim through them looking for relevant articles. I look for articles both directly related to my programming language du jour (.Net) but also for programming concepts in general. I also keep some dibs on some aggregated sites so I can see what&apos;s going on with other programming languages, new and old.&lt;/p&gt;
&lt;p&gt;Sometimes I&apos;ll take an hour once or twice during the week and work on a small project using the new framework or technology I&apos;ve been reading about. This is how my &lt;a href=&quot;http://hacksaw.codeplex.com&quot;&gt;Hacksaw&lt;/a&gt; application got off the ground a good 3 or 4 years back. I haven&apos;t had much time to do a lot of upkeep since, but with the new release of MVC 3 and Razor, I&apos;m looking to rewrite the application to leverage the new features. It doesn&apos;t have to, but it also helps if the project you work on has some kind of direct benefit at work.&lt;/p&gt;
&lt;p&gt;You&apos;d be surprised at what 3 hours (a mere 7.5% of a 40 hour work week) will do to hone your skills, and make you aware of technology at large. I don&apos;t think your supervisor will get too mad either, provided you give due priority to servers that catch on fire and apps that go wonky. But talk to them about it, I think they&apos;ll appreciate the benefits you provide to their overall goals. Don&apos;t forget to &lt;a href=&quot;/phatcodeshare&quot;&gt;share&lt;/a&gt; your discoveries with your fellow programmers as well.&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Persisting Dynamic Controls In Aspnet</title><link>https://dillieo.me/posts/development/2010-08-23-quick-tip-persisting-dynamic-controls-in-aspnet/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-08-23-quick-tip-persisting-dynamic-controls-in-aspnet/</guid><description>Quick Tip Persisting Dynamic Controls In Aspnet</description><pubDate>Mon, 23 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;All of the fundamental pieces to this process are out there on this topic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can dynamically create controls (drop down lists, textboxes, AJAX Editors) on the fly using the friendly Controls.Add() command to any objects that will support it (Panels, PlaceHolders, Page).&lt;/li&gt;
&lt;li&gt;The ViewState is enabled by default, and any controls that are rendered have their property details stored there (hence why it can be evil if abused).&lt;/li&gt;
&lt;li&gt;When a post back occurs, the dynamic controls are lost because that&apos;s just it, they were created dynamically. You have to recreate them during every post back in order to interact with them.&lt;/li&gt;
&lt;li&gt;The ViewState identifies controls by their Id.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After running into numerous issues, and finding all these pieces lying around the Internet, I was finally able to get my dynamic controls to survive the trip to the server and back. Here&apos;s the quick rundown:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When creating your dynamic controls, make sure to set the ID property to something that is unique.&lt;/li&gt;
&lt;li&gt;Use the Controls.Add() method to add your controls to the page within the appropriate container.&lt;/li&gt;
&lt;li&gt;Use the PreLoad() event in your page to call the proper method(s) to generate your dynamic controls.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By the time the Page_Load event fires, your dynamic controls will exist in the page structure, and since the controls have the same Id as they did during the previous rendering of the page, the ViewState will be able to properly apply the properties to the control, allowing them to persist it&apos;s state between post backs.&lt;/p&gt;
&lt;p&gt;Voila! Dynamic Controls that persist their properties after a post back.&lt;/p&gt;
</content:encoded></item><item><title>Running Tech</title><link>https://dillieo.me/posts/growth/2010-08-17-running-tech/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-08-17-running-tech/</guid><description>running tech</description><pubDate>Tue, 17 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Back when I was in high school, I ran cross county and track. Outside of the shoes and some of the &quot;power bar&quot; type food we had, the most tech we had for our runs was a a simple watch with a stopwatch on it. You could check your start and stop time, that was it. I kept a log on paper of all the miles I ran. My coach was pretty serious about our progress, so he invested in a large stop watch that had a tiny receipt printer attached to it. It could track splits so he could send us around the track for workouts and keep all of our times.&lt;/p&gt;
&lt;p&gt;When I moved on to college and continued running, the tech had gotten better. I now was the proud owner of an &quot;IronMan&quot; stopwatch (they had been around for a while and I just didn&apos;t know) that had the stopwatch feature and would store about 100 splits in it. In addition, a few of us would use a heart rate monitor on the run to track how we handled some hills or extended runs. By now I was logging my runs in my own spreadsheet, with a bunch of extra macros built in to aggregate weeks, give me averages, and some other nice stuff.&lt;/p&gt;
&lt;p&gt;After taking a running hiatus, I&apos;m getting back into running and the tech is light years ahead. I was given one of the Nike+ running kits a little while back as a gift. Sadly I never got a chance to try it out, but it would track your time and your distance onto your iPod Nano and then automatically synchronize the splits and the stats back to your online account to track. In addition, you could program some &quot;power music&quot; in so that if you were feeling the burn, you could pump up the tunes to get you through that last mile. I pulled out the device recently and it won&apos;t work with my 1st generation iPod Touch. I need the 2nd or 3rd generation device for it.&lt;/p&gt;
&lt;p&gt;I couldn&apos;t find any hardware or software hacks, so I figured detailed stats were out for the moment. I still wanted to start logging all of my runs, and didn&apos;t want to go the spreadsheet route, so I thought I&apos;d don my Googlian Monk robes and look around a bit more. I soon found &lt;a href=&quot;http://runkeeper.com&quot;&gt;Run Keeper&lt;/a&gt; and fell in love and amazement. I think I&apos;ll do a full review in the next day or so, but I was amazed by the fact that I could track my routes using Google maps, which would then give me the distance and elevation change for the run I did. I now have a bunch of routes pre-programmed in, and I know the distance I&apos;m running. Now that I live where there are a lot of trails and small roads, this saved me a TON of guesswork and &quot;pre-driving&quot; routes so I could have some mileages to work with.&lt;/p&gt;
&lt;p&gt;I&apos;ll readily admit I&apos;m just getting back into the game, so I&apos;m bound to have missed a lot of stuff, but it is really amazing at how far the &quot;personal running tech&quot; has come. What am I missing? What are you using? Oh, and if you&apos;re curious, you can check out my running log by going &lt;a href=&quot;http://runkeeper.com/user/DillieO/profile&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Burgadillieo</title><link>https://dillieo.me/posts/growth/2010-08-06-worth-sharing-burgadillieo/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-08-06-worth-sharing-burgadillieo/</guid><description>Worth Sharing Burgadillieo</description><pubDate>Fri, 06 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I doubt there&apos;s anything profoundly new with this recipe, but I wanted to share it since it came off REALLY well last night at dinner.&lt;/p&gt;
&lt;p&gt;I&apos;ve done &quot;stuffed&quot; burgers in the past. To do that you essentially use twice the meat, put a pocket in one of the patties, stuff it with some goodies, and then put the other on top. When you start eating the burger, you reach the middle and your mouth explodes with a variety of flavors. Its great! This time though, I only had one pound of meat to work with and I wanted to try to duplicate that explosion experience in every bite.&lt;/p&gt;
&lt;p&gt;I started with my &quot;standard&quot; hamburger recipe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 pound Ground Turkey (we do this for dietary reasons, feel free to use hamburger)&lt;/li&gt;
&lt;li&gt;Worcestershire Sauce&lt;/li&gt;
&lt;li&gt;Garlic Pepper&lt;/li&gt;
&lt;li&gt;Italian Bread Crumbs (not necessary if using hamburger. It&apos;s used to keep the meat together)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I really can&apos;t give you any solid measurements. I break up the meat into a bowl to spread it out. I put enough Worcestershire that will keep the meat wet on the grill, but not dripping. I cover the meat with a fair amount of garlic pepper and bread crumbs. Usually one &quot;coating&quot; will mix in well with the meat, but sometimes I&apos;ll add more if I&apos;m not seeing enough of the ingredients mixed in with the meat.&lt;/p&gt;
&lt;p&gt;After this, then I add the goodies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shredded Cheese (this time was a Colby/Jack mix, though I think Sharp Chedder would be amazing)&lt;/li&gt;
&lt;li&gt;Bacon Bits (the real stuff, not the imitation. Its easy enough to make your own)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I added another &quot;layer&quot; of cheese and bacon on top of the meat. Then you make your patties. Use your hands &lt;em&gt;[always the best way]&lt;/em&gt; and work all of the ingredients into the meat. You want things to blend together as good as possible, so that you don&apos;t hit pockets of garlic or cheese when you eat. Once thoroughly mixed, let them sit in the fridge for an hour or so, to let the Worcestershire and garlic flavoring soak into the meat, though it is not necessary.&lt;/p&gt;
&lt;p&gt;Grill up the burgers and eat! What happens is that the Worcestershire and cheese keep the meat nice and moist and the bacon and garlic infuse the meat with flavor. From the first to the last bite I had this wonderful variety of flavors with the burger, enhanced even more with the deli mustard and works tossed onto the bun.&lt;/p&gt;
&lt;p&gt;So give it a whirl sometime, and customize to your liking. I think the next time I make this up I&apos;m going to substitute bacon with a little chorizo...&lt;/p&gt;
</content:encoded></item><item><title>Musings Of A Tire Change</title><link>https://dillieo.me/posts/development/2010-08-02-musings-of-a-tire-change/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-08-02-musings-of-a-tire-change/</guid><description>Musings Of A Tire Change</description><pubDate>Mon, 02 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I took an early lunch and drove over to the tire shop. I had talked to them on Friday, since they had a price matching policy in place. I didn&apos;t have any local ads, but I did have some online quotes. They couldn&apos;t match those directly, due to shipping and support they provide, but they&apos;d try to help me out. I had a few printouts to take with me, just in case they hadn&apos;t had anything done yet. I forgot to bring a book to work with me today, and thought this was going to be a rather long lunch break.&lt;/p&gt;
&lt;p&gt;I dropped off my truck and walked across the street and grabbed a sandwich to eat. My phone was nearly out of batteries, but I realized that text goes a lot smoother and could save some battery life, so I chatted with Jen a little while I ate. I felt a little sheepish about having my cell phone out on the table while I ate, but I&apos;m enough of a geek to enjoy it.&lt;/p&gt;
&lt;p&gt;After eating I walked back over to the tire shop, and the truck was next in the queue, so I had about another 20 minutes or so to kill. With my cell phone on the side for the incoming messages, I pulled out Baffle (my iPod Touch) and figured I could get some fun in on Peggle or Plants vs. Zombies while I waited. The ever obsessive Internet junkie in me (sometimes we call him 7) started a conversation...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Wait!!! WiFi! See if there is access here!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Umm, its a tire shop. They typically don&apos;t...&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Just do it!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Okay fine. [:: checks a connection ::] Hey cool, there is one.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Go! go! go!!!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Okay, we&apos;re connected, but 9 times out of 10 its internally protected or you have a login screen. We&apos;ll check e-mail and... oh snap, we&apos;re in!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Woo Hoo!!!! Intarwebz is da coolerz!!!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was surfin&apos; the web from an Adirondack chair in the nice cool weather while my tires were replaced. I found out my friend&apos;s brother was on his way to the hospital, having his first child. I checked up on a couple of messages from friends. I continued to text Jen back and forth as I went, since she couldn&apos;t get into chat at the moment. I looked down at my clock and realized that I was due back to work in two minutes! My phone wouldn&apos;t survive past two rings. I had no clue as to the status of my truck. Then it hit me, e-mail! I jumped back in to my e-mail, and fired off a quick message saying I was going to be late, but not too late. Problem solved!&lt;/p&gt;
&lt;p&gt;As I clicked the send button, I looked up at my surroundings and my eyes drifted up to the gorgeous sky filled with clouds, some clear, some ready to burst with rain &lt;em&gt;[the clouds ALWAYS draw my attention up here, I don&apos; t know what it is. It was never like this before]&lt;/em&gt; and I thought:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What kind of crazy, techno-mobile do we live in. Previous trips to the tire shop constituted in either a long session with a book, or a simple drop off of the vehicle in the morning and pick up at the end of the day. All the while I was never disconnected from anything I use at home or at work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;None of this is really new, but sometimes it takes the experience of the full power of a mobile environment that makes you stop and ponder. What kind of internet fused world are we in, and what can we do to make it better for people, and not just passing bits through the air.&lt;/p&gt;
</content:encoded></item><item><title>The Duck House</title><link>https://dillieo.me/posts/development/2010-07-26-the-duck-house/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-26-the-duck-house/</guid><description>The Duck House</description><pubDate>Mon, 26 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After about two weeks of planning, and a lot of work over the weekend, our ducks have finally moved downstairs to their &quot;play yard&quot;, or &quot;duck house&quot; as I like to call it. Jen is charting the adventures of the ducks &lt;a href=&quot;http://nonrubberduckies.wordpress.com/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Everything came together nicely, and pretty cheap, thanks to some extra fence that family had and Jen&apos;s amazing find of a dog house up on Craigslist. We reused some of the fence posts from the yard and it cost me about $45 to put together the two gates (yes, there&apos;s a little gate to lock the ducks in safely at night.&lt;/p&gt;
&lt;p&gt;While we had debated about exactly where to position the duck yard, we came to the conclusion that under the deck was perfect because it would be more protected during the winter from the snow, there was already a roof and a back wall, which meant less material to purchase, and the space wasn&apos;t being used anyway.&lt;/p&gt;
&lt;p&gt;The one thing you can&apos;t see is that one side of the roof was ripped open and hinges put in so that we can easily get into the house to clean it out and (hopefully) get eggs in the next couple of months. The other thing you may or may not see in the photo is the big galvanized tub that serves as a &quot;duck pond&quot; hiding right behind the green branch in the lower right hand side of the photo.&lt;/p&gt;
&lt;p&gt;The ducks love their new space. There&apos;s lots more room to run around in, though they spent nearly all of their first afternoon sitting in their pond, floating around and ducking under to clean up. In another week or so we&apos;ll let them start exploring the entire back yard.&lt;/p&gt;
&lt;p&gt;As always, there&apos;s a few minor things to update. There are some slight gaps from the roof to the fence towards the front of the yard where there was a bit of a downward slope. I just need to get a little more fence or lattice work put there to keep extra critters out. There are a slew of nails in the roof from the rain tiles installed, and I need to clip those off.&lt;/p&gt;
&lt;p&gt;All in all a very successful project, a lot of hard work, and a lot of fun. I tend to spend my weeks hacking the matrix of 1s and 0s and the weekends hacking lumber, logs, or weeds to seek some balance. 8^D&lt;/p&gt;
&lt;p&gt;...oh, and of course no duck entry would be complete without showing the girls and their pets:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2010-07-101_2162.jpg&quot; alt=&quot;The girls and the ducks.&quot; title=&quot;Girls and Ducks&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Setting Focusdefaults On The Login Control</title><link>https://dillieo.me/posts/development/2010-07-23-quick-tip-setting-focusdefaults-on-the-login-control/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-23-quick-tip-setting-focusdefaults-on-the-login-control/</guid><description>Quick Tip Setting Focusdefaults On The Login Control</description><pubDate>Fri, 23 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When working with Forms Authentication on an ASP.Net application, its quite convenient that there is a Login web control already available for you. It has all the necessary buttons, and you can easily customize and add text to the login prompts. You can disable the remember password and reset options if you want as well.&lt;/p&gt;
&lt;p&gt;The one problem though is that by default, the Username field doesn’t have focus, and pressing the Enter key doesn’t click the “Login” button for you. However, you can get both of these features in two simple lines of code. Assuming the name of your login control is “AppLogin”, simply add the following code to the Page_Load method of your login page:&lt;/p&gt;
&lt;p&gt;https://gist.github.com/Dillie-O/5709773&lt;/p&gt;
&lt;p&gt;That’s all you need. The odd naming convention when setting the default button is due to the fact that the control is going to be rendered at runtime, and ASP.Net likes to add some additional text to enforce that all controls are uniquely named. You may need to view your login page for the first time and search for the text “LoginButton” to find out how the control is uniquely named. In my case, I have my login page as a content page within a master template.&lt;/p&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;
</content:encoded></item><item><title>Removing Rows With Duplicate Ids In Sql Server</title><link>https://dillieo.me/posts/development/2010-07-20-removing-rows-with-duplicate-ids-in-sql-server/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-20-removing-rows-with-duplicate-ids-in-sql-server/</guid><description>Removing Rows With Duplicate Ids In Sql Server</description><pubDate>Tue, 20 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yes, you say it can&apos;t be done. You have a table where the Id field is set to be unique and the primary key, yet SOMEHOW there are two rows in a content table that have the same Id. When you try to delete one of the rows, it says it can&apos;t delete the row because there are duplicate unique keys. &lt;em&gt;[Then why did you insert the extra one in the first place!!!!]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Queue spontaneous head pounding against the wall /&amp;gt;&lt;/p&gt;
&lt;p&gt;On an interesting side note however &lt;em&gt;[Yes, I tangent a lot]&lt;/em&gt;, it appears the culprit was SQL Server Management Studio and its ability to allow you to paste data from Excel into the data view, thus inserting extra rows. Maybe it is temporarily disabling all constraints on the table behind the hood, I&apos;m not sure, and I still need to duplicate it, but we saw an instance of this once before that seemed to have the same path.&lt;/p&gt;
&lt;p&gt;I&apos;m aware of the internal fields, such as row_number, that are available for queries, but I wasn&apos;t sure how to access it in this case. After passing word on to our almighty DBA, he did some research and came back with a really simple SQL statment that does the job for us:&lt;/p&gt;
&lt;p&gt;SET ROWCOUNT 1&lt;/p&gt;
&lt;p&gt;DELETE FROM dbo.content WHERE content_id = 40598&lt;/p&gt;
&lt;p&gt;Problem solved and we cleaned out a good handful of records in this manner. What the first line of the script does is restrict any operations to stop after the first row is processed. Our second statement deletes a record (which you would expect), but since our rowcount statement halts the gathering of any additional records for processing after the first one, the constraint isn&apos;t triggered.&lt;/p&gt;
&lt;p&gt;If you&apos;re stuck in a duplicate Id bind, let this one do the trick for you.&lt;/p&gt;
</content:encoded></item><item><title>Changing Log4Net Configurations Dynamically</title><link>https://dillieo.me/posts/development/2010-07-15-changing-log4net-configurations-dynamically/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-15-changing-log4net-configurations-dynamically/</guid><description>Changing Log4Net Configurations Dynamically</description><pubDate>Thu, 15 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One issue I&apos;ve run up against over my time using &lt;a href=&quot;http://logging.apache.org/log4net/index.html&quot;&gt;log4net&lt;/a&gt; is being able to change the logging levels dynamically. When I build an application, I put in both top level Error/Fatal log messages, but I also put Debug/Info level messages when issues arise that I need to handle (check out my &lt;a href=&quot;/log4net-a-quick-start-guide&quot;&gt;Quick-Start Guide&lt;/a&gt; if you&apos;re curious on how to set this all up). By default I have the logging level set to WARN, but I want to be able to quickly see DEBUG level messages when things aren&apos;t working properly.&lt;/p&gt;
&lt;p&gt;Changing the configuration on the fly works fine in a development environment, but in a production environment, I don&apos;t have access to the configuration file to make the proper modification due to the security restrictions we have in our environment. In addition, if I&apos;m working on an application through a web host, it would be nice to change the configuration without having to FTP into the server.&lt;/p&gt;
&lt;p&gt;Thanks to the LINQ to XML features announced in the .Net 3.5, being able to change the configuration on the fly became really easy. To note, I&apos;m sure there were ways of dynamically updating the configuration pre-3.5, but parsing XML documents and searching/updating them can be tricky and time intensive at times. Not so anymore.&lt;/p&gt;
&lt;p&gt;Without going into too much detail, the solution comes through using the XDocument object and the . For instance, if I wanted to get the logging level being used, and I know the proper XML path to the node, I can use the following code:&lt;/p&gt;
&lt;p&gt;Similarly, each the entire document can be exposed as an enumerable XElement object, so you can iterate through a collection of appenders, looking through the proper filename value through the following code:&lt;/p&gt;
&lt;p&gt;XDocument ContentDoc; IEnumerable&amp;amp;lt;XElement&amp;amp;gt; DocPoints;&lt;/p&gt;
&lt;p&gt;ContentDoc = XDocument.Parse(File.ReadAllText(LogPath)); DocPoints = ContentDoc.Descendants(&amp;amp;quot;log4net&amp;amp;quot;).Descendants(&amp;amp;quot;appender&amp;amp;quot;); foreach (XElement Item in DocPoints) { if (Item.Attribute(&amp;amp;quot;name&amp;amp;quot;).Value == &amp;amp;quot;XmlSchemaFileAppender&amp;amp;quot;) { Results = Item.Ancestors().Descendants(&amp;amp;quot;file&amp;amp;quot;).Attributes().First().Value; } }&lt;/p&gt;
&lt;p&gt;From here you can see that accessing and modifying values becomes quick and easy to do. The XDocument object also allows you to easily add new nodes to an existing document. You could easily add an ASP.Net appender, or any other appender to the system on the fly, or enable/disable appenders on the fly as well.&lt;/p&gt;
&lt;p&gt;But for today, we&apos;re going to keep things simple and only worry about updating the logging level. This way you can easily make your application dump out diagnostic data in the production environment and then revert back to its simple error logging after you have the necessary data.&lt;/p&gt;
&lt;p&gt;Most of the code is given to you above. The final step in the process is to update the log level value and then write it back out to an XML file. The XDocument object provides for this as well:&lt;/p&gt;
&lt;p&gt;It really is that simple. The trickiest part of the whole process is learning how to navigate through the XML document with the proper use of the Descendants(), Ascendants(), and Elements() structure used within the object.&lt;/p&gt;
&lt;p&gt;In an effort to share the love, I&apos;ve written a really simple ASP.Net application that will show demonstrate all of this, and give you the complete code blocks to make this happen for you. There are two items to note when setting up your own configuration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The configuration file needs to be in a separate [Assembly].dll.log4net file. Modifying the web.config file on the fly will cause the application to restart its worker process, and eliminate the goals in mind. See my &lt;a href=&quot;/log4net-a-quick-start-guide&quot;&gt;Quick-Start Guide&lt;/a&gt; if you need details on setting it up.&lt;/li&gt;
&lt;li&gt;You will need to make sure your ASP.Net application has proper write privileges to your configuration file, otherwise the process will file when it attempts to write to the file.&lt;/li&gt;
&lt;li&gt;The log entries generated are using the built in lo4net XML format, so you&apos;ll either need to read the XML or maybe take a peek at an old and ugly (but still usable) &lt;a href=&quot;http://hacksaw.codeplex.com&quot;&gt;log4net viewer app&lt;/a&gt; I wrote 8^D.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The apps have been tested and compiled to use the Visual Studio Development Server, so you should be able to unzip, fire up the solution, and run the project.&lt;/p&gt;
&lt;p&gt;If you run into some additional clever uses with XDocument and log4net configuration, by all means share them here. Hopefully I can get a really robust configuration tool developed to extend things even further.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Quick Tip Taking Your Aspnet Application Offline</title><link>https://dillieo.me/posts/development/2010-07-08-quick-tip-taking-your-aspnet-application-offline/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-08-quick-tip-taking-your-aspnet-application-offline/</guid><description>Quick Tip Taking Your Aspnet Application Offline</description><pubDate>Thu, 08 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;ASP.Net is friendly enough that if you have to make a change to your application, you can simply copy the files up to the server location and be done with it (the noted XCopy method). A user currently using the application will work with an old copy of the DLL until their session is finished, whereas the new users will get a new copy of the DLL.&lt;/p&gt;
&lt;p&gt;There are times, however, where a more robust update process is involved (adding some database entities, making sure session data is completely flushed, adding resource files) and you need to take the user offline. If you are running your own server, or have a single application on the server, this is a pretty simple process. You can simply shut down IIS altogether, or have the IIS entry redirect to a different page at the domain level, that way users can&apos;t get into the application through any vector.&lt;/p&gt;
&lt;p&gt;If you&apos;re on a shared host, or have multiple applications using the same application pool, or just want a really quick way to take your application offline, there is a simple method by using one single file. I discovered this trick about a year and a half back while working on my netrep project and we just used it again the other day here at work.&lt;/p&gt;
&lt;p&gt;Starting with .Net 2.0, if you need to take a web application offline, you simply need to upload a properly formatted HTML document named app_offline.htm and IIS/ASP.Net Worker Process handles the rest. Any users, current or new, reaching the application will be presented with your offline HTML page, as well as send a Server 200 response back to the browser. When you&apos;re ready to bring the application online again, simply remove the file, or better yet, rename it to app_offline_disabled.htm or something else and save it for the next time you need to take things offline.&lt;/p&gt;
&lt;p&gt;That&apos;s it! No mess, no fuss, IMMENSE benefit! There were even some delusions of grandeur in my group about making a simple web application for our server admins to to allow them to simply check the web apps that need to go offline when an update is being made and it would automatically process these files.&lt;/p&gt;
&lt;p&gt;The one small caveat to this is that you have to make your HTML file greater than 512 bytes in size. Otherwise, Internet Explorer (and potentially other browsers) will attempt to display a &quot;friendly&quot; error message to you, like they would on other sites when encountering 400, 200, 500, and other server return codes.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Migrating Blogml To Wordpress 30</title><link>https://dillieo.me/posts/development/2010-07-03-migrating-blogml-to-wordpress-30/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-03-migrating-blogml-to-wordpress-30/</guid><description>Migrating Blogml To Wordpress 30</description><pubDate>Sat, 03 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Update (1/18/2013): An amazing developer by the name of &lt;a href=&quot;http://developdaly.com/&quot;&gt;Patrick Daly&lt;/a&gt; has updated this plugin through GitHub to import tags too. Go grab it &lt;a href=&quot;https://github.com/developdaly/BlogML-Importer-for-WordPress&quot;&gt;here&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: My plugin has been approved by WordPress! I&apos;ve updated the documentation and links accordingly.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As part of my &lt;a href=&quot;/bienvenue-wordpress&quot;&gt;migration&lt;/a&gt; to WordPress 3.0, I needed to get all of my posts migrated over. My comments were stored via &lt;a href=&quot;http://disqus.com&quot;&gt;Disqus&lt;/a&gt;, and I&apos;m working with them on migrating that data to the new URL slugs.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dotnetblogengine.net/&quot;&gt;BlogEngine.Net&lt;/a&gt; uses &lt;a href=&quot;http://blogml.codeplex.com/&quot;&gt;BlogML&lt;/a&gt; as their sole export format, which became a little tricky, since there is still no WordPress importer built in to handle this.&lt;/p&gt;
&lt;p&gt;As is with most things in life, we are all standing on the shoulders of giants. In this case, &lt;a href=&quot;http://www.aaronlerch.com&quot;&gt;Aaron Lerch&lt;/a&gt; was my giant and he had created a great BlogML importer, which included all of the necessary XPath information needed to import blog entries.&lt;/p&gt;
&lt;p&gt;The only problem is that the plugin was created to work with WordPress 2.6, and the format for importing content has changed since then. The &apos;wp-admin/imports&apos; folder no longer exists in 3.0, and it could have been earlier than that as well.&lt;/p&gt;
&lt;p&gt;An initial peek of the importer code didn&apos;t yield any results to me, but installing the simple RSS importer and examining that code allowed me to see what was going on. With the newer format for importing, you downloaded a plugin, which upon activation registered itself with the import module used in WordPress. All I needed to do was to put this registration wrapper around the existing code, update some documentation, and voila, a working BlogML importer!&lt;/p&gt;
&lt;p&gt;Just as my giant has opened the code up, I&apos;m doing the same, for any BlogEngine.Net, &lt;a href=&quot;http://subtextproject.com/&quot;&gt;SubText&lt;/a&gt;, or other BlogML formatted folks out there that are thinking of migrating to WordPress.&lt;/p&gt;
&lt;p&gt;Before importing, you&apos;ll want to go into your BlogML file and look for any file or image references that exist and update them accordingly. For instance, with BlogEngine.Net, it uses a &apos;file.axd&apos; HTTP helper to deliver a lot of its files. You can always update this data after the import. It is up to you.&lt;/p&gt;
&lt;p&gt;Using the importer is rather simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log into your WordPress site and go to the &apos;Plugins&apos; section.&lt;/li&gt;
&lt;li&gt;Click the &quot;Add New&quot; button and search for the term &quot;blogml&quot;.&lt;/li&gt;
&lt;li&gt;Find the &apos;blogml-importer&apos; plugin and install it.&lt;/li&gt;
&lt;li&gt;Activate the plugin.&lt;/li&gt;
&lt;li&gt;Go to the Tools-&amp;gt;Import screen, and select the &apos;BlogML&apos; option.&lt;/li&gt;
&lt;li&gt;Follow the directions to complete the process.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As an added bonus (thanks to Aaron), the import process will create a CSV file that maps the old permalinks found in the BlogML file to the new permalinks that WordPress generated. It will also give you the option of mapping posts to a current user, or to create a new user account for them.&lt;/p&gt;
&lt;p&gt;I ran this process and had all of my posts migrated over in a few seconds. Granted I only had 65 posts, but it still saved me a lot of time. I&apos;m still doing a bit of image/link cleanup, but that is simple to do.&lt;/p&gt;
&lt;p&gt;One other important item to note is that categories and tags may or may not be properly imported. In my case, none of my tags came over, and my categories came over named as GUIDs. Renaming the categories didn&apos;t take long and I&apos;ll simply need to retag my posts. Again, considering the time it would have taken me to renter all of my posts (and I know others have lots more), I&apos;m not too worried about this.&lt;/p&gt;
&lt;p&gt;I hope this helps other folks out their with their WordPress migrations. I&apos;m hoping to look through the import code again, and work on getting some of the category/tag issues resolved. I may even try to do some kind of auto-detecting on the image/file links to provide a proper &quot;remap&quot; option like with the user import. Once the plugin is approved in the codex, I&apos;ll update my link to point there.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;If you want to download the plugin go to the direct link &lt;a href=&quot;http://wordpress.org/extend/plugins/blogml-importer&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;UPDATE: If you want a standalone tool that will migrate BlogML to WordPress, check out the &lt;a href=&quot;http://blogmigrator.codeplex.com&quot;&gt;Blog Migration Tool&lt;/a&gt; I wrote over on CodePlex.&lt;/p&gt;
</content:encoded></item><item><title>Bienvenue Wordpress</title><link>https://dillieo.me/posts/development/2010-07-02-bienvenue-wordpress/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-07-02-bienvenue-wordpress/</guid><description>Bienvenue Wordpress</description><pubDate>Fri, 02 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, here I am on WordPress 3.0.&lt;/p&gt;
&lt;p&gt;Some of you may be wondering why I&apos;m rolling a new blog engine, and a PHP based one at that &lt;em&gt;[yeah Mr. .Net Junkie!].&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I have nothing against BlogEngine. I love it. I recommend it for any .Net folks out there that want to do get into blogging and tweak with their themes/plugins a bit. You&apos;ll feel quite at home there. I was impressed with the layout of it when I went through the process of migrating Disqus into my theme.&lt;/p&gt;
&lt;p&gt;Lately though, my side work has drifted into the realm of WordPress (through my support of &lt;a href=&quot;http://evangelicaloutpost.com&quot;&gt;Evangelical Outpost&lt;/a&gt; as well as some upcoming work with &lt;a href=&quot;http://theprescottproject.com&quot;&gt;The Prescott Project&lt;/a&gt;). I felt it best if I could get some more hands on work with WordPress and PHP. As they say, &quot;Never stop learning&quot; right? I&apos;ve already gotten back in the groove a bit by modifying a BlogML import script out there to work with 3.0 so I could migrate my posts in. More details on that later.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Summer Reading</title><link>https://dillieo.me/posts/growth/2010-06-11-summer-reading/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-06-11-summer-reading/</guid><description>Summer Reading</description><pubDate>Fri, 11 Jun 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just a quick note that I had a small mention on the &lt;a href=&quot;http://evangelicaloutpost.com/archives/2010/06/summer-reading-symposium.html&quot;&gt;Evangelical Outpost&lt;/a&gt; site where I am helping keep all the technical bits in order. You should take a peek at the list and find some good summer reading.&lt;/p&gt;
&lt;p&gt;I&apos;m already about half way through Dallas Willard&apos;s &lt;em&gt;The Divine Conspiracy&lt;/em&gt; and it is blowing my mind! There is so much stuff I missed the first time I read it about 10 years back and my outlook on things is changing. Give it a read!&lt;/p&gt;
&lt;p&gt;As a side note, I was also fortunate to get a small &lt;a href=&quot;http://evangelicaloutpost.com/archives/2010/05/farewell-to-lost.html&quot;&gt;feature&lt;/a&gt; to post my thoughts on the LOST series finale, if you&apos;re curious.&lt;/p&gt;
</content:encoded></item><item><title>Is The Api The Next Killer App</title><link>https://dillieo.me/posts/development/2010-06-01-is-the-api-the-next-killer-app/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-06-01-is-the-api-the-next-killer-app/</guid><description>Is The Api The Next Killer App</description><pubDate>Tue, 01 Jun 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The ?killer app? is a term for those of a geekish lean that describes the ultimate application out there that you simply can?t live without. It is typically used identify a utility or program that provided countless opportunities to create new things, or tweak out your computer, or give you immense flexibility over content consumption. If was a mark of good standing if your application was tossed around in the question, ?Is this the killer app?? I dreamed I could write something remotely close to this.&lt;/p&gt;
&lt;p&gt;By most references, VisiCalc was the first killer app since it open the doors to spreadsheets for the average user on a computer. Around the time I was getting into computers (the glorious age of DOS 5.2 of 14.4K baud modems), you could look to archive tools, such as PKZip, as the killer app that allowed people to move large sizes or numbers of files around with minimal hassle. Around this time I also found QModem to be my own killer app, since it allowed me to connect to my local BBS with plenty of custom scripting options &lt;em&gt;[yep, I scripted out my own ZModem downloads before the protocol came standard 8^D]&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As computers became more ?average Joe friendly? (no derogatory implications in any form), the killer app migrated out a bit more into the public sphere. Compuserve, then AOL. Became the killer app because users could send messages to friends, shop online, and check out special products from vendors. I?m sure there?s plenty of folks who remember when TV commercials had the tagline ?Check out AOL keyword X? at the end of them. Further still, browsers became the killer app, since you could use various plugins, or sites that were JavaScript heavy, to do things without downloading or installing anything. Even this trend seems to have passed by and the ?social portal? seems to be the next killer app. Facebook has held the lead on this one for a while now, but there are a good number of clones or similar type websites that will allow folks to share photos, discuss common interests, play games, and easily consume your free time.&lt;/p&gt;
&lt;p&gt;But on the edge of the social portal I think lies the next, or potentially current, killer app, the API. For those not familiar with term, API is an acronym for Application Programming Interface. In simple terms, it is a programming library that the creator of a program has opened up to allow other programmers to interact with the core of the system, or the data within it. For example, in the process of updating the CCG Toolkit, I chose to create web services to be used as an API to view the Tournament Card Registry data. That way, anybody that knew how to consume a web service (or had a program that did so), could easily get at card data and rulings for their cards.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.mozilla.com/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt; became immensely popular due to its plug-in interface, which was made possible by an API that allowed programmers to create nearly any kind of ?widget? that would load with Firefox and allow the end user to do more with their browser. The &lt;a href=&quot;http://www.flock.com/&quot;&gt;Flock&lt;/a&gt; browser took the best plug-ins it could find and integrated them natively into the browser to enhance the user?s browsing experience.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt; is probably the best example of leveraging the API to its advantage. By itself, Twitter is simply a protocol for displaying status updates and passing on other people?s statuses you find interesting. The interface was incredibly simplistic: a web page. You had to various searches if you wanted to check out what else was going on in the ?twitterverse.? That all changed with the release of the Twitter API. Now every programmer under the sun could create a desktop or web based application that did all the fancy searching/sorting/following that you wanted. You could create widgets on top of the Twitter API in order to display your recent status updates, or trending topics on your blog page.&lt;/p&gt;
&lt;p&gt;The beauty of this is that Twitter developers themselves only had to focus on the infrastructure and the protocols to be used. They can then let the creativity of developers and the demand of the users dictate which applications bubble to the surface and are used. As a result there are huge amount of twitter clients out there on every platform imaginable. By doing this, usage of Twitter itself has increased without the actual developers of Twitter having to worry about aesthetics, UX, or even platforms specifics, something that has plagued desktop applications for a long time.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://developers.facebook.com/&quot;&gt;Facebook&lt;/a&gt; has an API. Various &lt;a href=&quot;http://code.google.com/googleapps/docs/index.html#app&quot;&gt;Google Apps&lt;/a&gt; (including &lt;a href=&quot;http://code.google.com/apis/calendar/&quot;&gt;Calendar&lt;/a&gt; and &lt;a href=&quot;http://code.google.com/apis/maps/index.html&quot;&gt;Maps&lt;/a&gt;) have APIs. MySpace has an API. My favorite programming site, &lt;a href=&quot;http://stackoverflow.com/&quot;&gt;StackOverflow&lt;/a&gt;, has recently released an &lt;a href=&quot;http://stackapps.com/&quot;&gt;API&lt;/a&gt; and is hosting a &lt;a href=&quot;http://blog.stackoverflow.com/2010/05/stack-exchange-api-contest/&quot;&gt;contest&lt;/a&gt; to see who can build the most awesomeness out of it. I could go on and on.&lt;/p&gt;
&lt;p&gt;So while people are getting less and less tied down to a specific platform for their data and day to day interactions (I use a Windows 7 box at home, an iPod Touch while I?m out and about, and have an XP box at work), the killer app has to keep up with this. Since keeping up with the plethora of platforms out there is insane, the killer app has had to take itself one level deeper, to the core of the code itself, or the API. The new killer app is really an API on top of a framework that is going to generate users across any platform somebody is willing to write for, without troubling the original developer at all.&lt;/p&gt;
&lt;p&gt;I guess the next question that arises, does the API need to come first for your product, or do you generate the product and use the API to seal the deal?&lt;/p&gt;
</content:encoded></item><item><title>Netrep Archive Deck Studio Ronin Installers Now Available</title><link>https://dillieo.me/posts/development/2010-05-18-netrep-archive-deck-studio-ronin-installers-now-available/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-05-18-netrep-archive-deck-studio-ronin-installers-now-available/</guid><description>Netrep Archive Deck Studio Ronin Installers Now Available</description><pubDate>Tue, 18 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A quick note for any of you still looking for Netrep/Deck Studio/RONIN details&lt;/p&gt;
&lt;p&gt;A little while back I went ahead and took down the CCG Toolkit site, since there was no more news and updated being pushed out.&lt;/p&gt;
&lt;p&gt;I received an e-mail &lt;em&gt;[thanks Tyler]&lt;/em&gt; looking for the latest version of Deck Studio and I realized I didn&apos;t put the installers out on the archive page for download by anybody interested.&lt;/p&gt;
&lt;p&gt;You can now get the Deck Studio 1.9 and RONIN 1.7.3b installers on the Netrep archive site. Just in case you&apos;re still using Deck Studio on the side or are interested in seeing how the apps run without having to compile the code. I also tossed in some Sheep and Ojama tokens I created a LONG time ago, they were rather fun.&lt;/p&gt;
&lt;p&gt;The site for all of this is &lt;a href=&quot;http://ccgtoolkit.codeplex.com&quot;&gt;http://ccgtoolkit.codeplex.com&lt;/a&gt;. Feel free to drop me a line if you have any questions.&lt;/p&gt;
&lt;p&gt;Enjoy all!&lt;/p&gt;
</content:encoded></item><item><title>Four By Two Reflections On A Birthday</title><link>https://dillieo.me/posts/growth/2010-05-17-four-by-two-reflections-on-a-birthday/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-05-17-four-by-two-reflections-on-a-birthday/</guid><description>Rylee Haylee getting ready to blow out their candles.</description><pubDate>Mon, 17 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s amazing how one day changes things. My girls turned 4 yesterday and it seems like overnight they became new girls all at once! I&apos;m sure when I stop and think about it I can see the subtle changes. But for some reason, they looked a lot older today than the other day. They talked a lot older than the other day. They even acted a lot older than the other day. I reflected upon this a bit last night in my weariness and could only comment as follows:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My girls turned 4 today. They were baptized, we had a kickin&apos; party, and I&apos;m feeling old. I am truly blessed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When asked, the thing that still amazes me the most is how two souls born at the same time, in the same womb, can be so different. They aren&apos;t identical twins, so it makes sense that they would be different. But all the same, the differences still produce an awe that never ceases.&lt;/p&gt;
&lt;p&gt;Rylee is our artist/drama queen. After waking up, she lasts about 10 minutes before asking if she can draw/paint something. I think I went through a ream of paper in about two weeks since I forgot about her coloring books. We&apos;re trying to figure out what to do with all the drawings, since she values them so much. All suggestions welcome. 8^D Rylee loves to dress up as well and has a purse I think she takes nearly everywhere now on errands with mommy.&lt;/p&gt;
&lt;p&gt;Haylee is our adventurer. She fears nothing, or at least nothing she can&apos;t jump on/over/through. I&apos;ll place my bets she is the one that instigates playing in the dirt/mud and we typically have to pull her out of the sandbox for dinner. I don&apos;t know how she got so fast and there are honestly times when I can barely catch her. Haylee&apos;s generosity knows no end. On numerous occasions Rylee has had a fit because Haylee is wearing the shirt she wants to wear. In the midst of trying to explain to Rylee how sharing works, Haylee runs over, shirt in hand, and says Here sissy, you can wear it. without any sign of resignation. It melts us every time.&lt;/p&gt;
&lt;p&gt;Despite the differences, they both love to go hiking and discover new things. They have a good sized back yard and there&apos;s lots of nature to see every day, and bugs (some good and some bad) to trickle by. They both love book and are quite proud of their very own library cards that they have. They both know who Jesus is and have an inkling of what he&apos;s done.&lt;/p&gt;
&lt;p&gt;A couple days ago my girls were three. They were toddlers. Most of the time I felt like I was shepherding them to go here or there, and letting them babble. Now I have conversations with them, I teach a little, and I learn a little. What a profound new world we&apos;ll be entering and discovering.&lt;/p&gt;
</content:encoded></item><item><title>Accessing Ajax Rendered Controls Via Javascript</title><link>https://dillieo.me/posts/development/2010-05-11-accessing-ajax-rendered-controls-via-javascript/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-05-11-accessing-ajax-rendered-controls-via-javascript/</guid><description>Accessing Ajax Rendered Controls Via Javascript</description><pubDate>Tue, 11 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The AJAX library and Control Toolkit provided for ASP.Net helps you do some really cool things that previously would have taken a lot of work. AutoComplete Textboxes (like when you start typing into Google&apos;s search box), rounded corners, post backs without the flicker, and even more become something you can be easily added into basic line of business apps that would often be reserved for front facing apps due to the time or complexity involved with them.&lt;/p&gt;
&lt;p&gt;However, there is one gotcha with the way that the dynamic controls are created. In order to preserve the uniqueness of control Ids, the AJAX library will put a prefix in front of the Id you assign to a control, to make sure duplicates do not occur. Go ahead and take a peek at your AJAX enabled application, you&apos;ll find a lot of controls named&lt;/p&gt;
&lt;p&gt;when you named your control&lt;/p&gt;
&lt;p&gt;as its name. Sometimes you&apos;ll also run into this issue when you&apos;re dealing with a lot of master/child templates, especially when tossing in user controls into the mix.&lt;/p&gt;
&lt;p&gt;Normally this isn&apos;t much of a problem. Most of the client side interaction is already handled by the dynamic JavaScript code AJAX generates for you. In addition, when you go to access the controls through your code behind page, you can get to them just fine using their original names.&lt;/p&gt;
&lt;p&gt;The problem arises when you need to do some additional magic through JavaScript with these dynamically created control. For example, I created a simple employee search box for our internal applications that leverages the AutoCompleteExtender control. When you type in a partial last name, like Patt, it returns all employees in the list that match that last name. In my particular case, I had additional textboxes that contained the employee&apos;s first name and Id that I wanted populated into additional textboxes on the page.&lt;/p&gt;
&lt;p&gt;The mechanics behind making this work isn&apos;t hard at all. The AutoCompleteExtender has an event called OnClientItemSelected that allows you to write your own client side code to handle what happens once the user selects an item. A little bit of work later and I had the following client side code:&lt;/p&gt;
&lt;p&gt;function SetEmployeeDetails(source, eventArgs) { var RawData = eventArgs.get_value(); var RawDataRegex = /(\d{5}):\s(.+),\s(\w+)/; var EmployeeInfo = RawData.match(RawDataRegex);&lt;/p&gt;
&lt;p&gt;$get(&apos;txtSearchEmployeeId&apos;).value = &apos;c&apos; + EmployeeInfo[1]; $get(&apos;txtSearchEmployeeLastName&apos;).value = EmployeeInfo[2]; $get(&apos;txtSearchEmployeeFirstName.ClientId&apos;).value = EmployeeInfo[3]; }&lt;/p&gt;
&lt;p&gt;The basic interpretation of the code is that the selected value is split into the individual fields and put into the textboxes.&lt;/p&gt;
&lt;p&gt;The problem we run into is that when the AutoComplete controls are rendered, they are given the ctl00_ type markup in front of the code. This breaks the JavaScript code listed above. One way to resolve this issue is to peek at your rendered page and then hard code the JavaScript code to the extended names. I&apos;ve done this. It works. However, once you move this control to another page, or if you want to wrap your AutoComplete controls within a user control, the name changes and you are back to square one.&lt;/p&gt;
&lt;p&gt;The answer to this is to escape your JavaScript code with a little bit of .Net code. This is how classic ASP works and there is a lot of .Net code (particularly when it comes to data binding GridView controls) that still leverages this trick. I personally don&apos;t like to escape code out of my ASPX pages, but I also code by the rule the right tool for the job and this is the case where it is the right tool. The other alternative would be to dynamically register a JavaScript block when the page (or control) is rendered, but in my opinion that would create more hassle than it is worth.&lt;/p&gt;
&lt;p&gt;So in our case, we take advantage of the fact that each server control has a property called ClientId which contains the name of the control as it is rendered on the page. We can get at this value and escape it into our $get() function to get our extended control name. When we do things this way, the code looks like this on our ASPX page:&lt;/p&gt;
&lt;p&gt;function SetEmployeeDetails(source, eventArgs) { var RawData = eventArgs.get_value(); var RawDataRegex = /(\d{5}):\s(.+),\s(\w+)/; var EmployeeInfo = RawData.match(RawDataRegex);&lt;/p&gt;
&lt;p&gt;$get(&apos;&amp;lt;%= txtSearchEmployeeId.ClientId %&amp;gt;&apos;).value = &apos;c&apos; + EmployeeInfo[1]; $get(&apos;&amp;lt;%= txtSearchEmployeeLastName.ClientId %&amp;gt;&apos;).value = EmployeeInfo[2]; $get(&apos;&amp;lt;%= txtSearchEmployeeFirstName.ClientId %&amp;gt;&apos;).value = EmployeeInfo[3]; }&lt;/p&gt;
&lt;p&gt;When the page is rendered to the user, the &amp;lt;%= %&amp;gt;sections will be processed before the HTML is written (just like our PHP/ASP works) and the server will inject the extended name of the control. From there, you can take this code to any page you need, or create as many controls as you need, and the page will make sure the proper Id is injected into the JavaScript code to be used with your method.&lt;/p&gt;
&lt;p&gt;If you&apos;&apos;ve found any other clever ways around this issue (with jQuery or anything else for that matter), share it here! I&apos;m always looking for new tricks to add to my toolkit. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Soup To Nuts Sortingpagingmanaging A Gridview</title><link>https://dillieo.me/posts/development/2010-04-28-soup-to-nuts-sortingpagingmanaging-a-gridview/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-04-28-soup-to-nuts-sortingpagingmanaging-a-gridview/</guid><description>Soup To Nuts Sortingpagingmanaging A Gridview</description><pubDate>Wed, 28 Apr 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As much as I love the latest and greatest stuff coming out of the .Net camp (still catching up on my MVC2 video tutorials) I work in a pretty standard “Line of Business” (LOB) environment. We use ASP.Net Webforms and I doubt things will change anytime soon.&lt;/p&gt;
&lt;p&gt;One of the most used items when developing our applications is the GridView. Its a great server control. There are a lot of features built into it that make for a great control to manage data with. You can sort, page, update, delete, and even perform custom commands within it.&lt;/p&gt;
&lt;p&gt;That said, I’ve never found a really nice comprehensive article/source to cover all of these features available, though the MSDN documentation helped a bit. Since I had just finished a project in which I was doing all of these features with the GridView, I thought now would be the perfect time to put together a “Soup to Nuts” solution that had all of these features. It would be packed up into a solution that you could actually run and interact with, instead of just looking at snippets and imagining how they came together.&lt;/p&gt;
&lt;p&gt;So I humbly present to you my S2N (Soup to Nuts) GridView. Simply download the appropriate file, unzip it to the location of your choice, and open up the solution file in Visual Studio. The solutions have already been compiled and tested. They have also been configured to use the built-in web server with Visual Studio, so you don’t need to worry about having IIS installed on your machine if it isn’t already there. I’ve packed the following “features” into the solution and provided a little bit of documentation within the code outlining:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sorting records in the GridView.&lt;/li&gt;
&lt;li&gt;Paging records in the GridView.&lt;/li&gt;
&lt;li&gt;Inline Edit &amp;amp; Delete of records in the GridView.&lt;/li&gt;
&lt;li&gt;Using the footer of the GridView to add new records (a great space saver).&lt;/li&gt;
&lt;li&gt;(Bonus) Using an XML/XSD file to function as a simple database (&lt;a href=&quot;/using-xsds-for-quick-datatables-in-net&quot;&gt;based on my article&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To some degree there is a lot to be said about the various features of the GridView, and maybe I’ll do some individual posts about the various features found within the samples.&lt;/p&gt;
&lt;p&gt;A couple of disclaimers to note:&lt;/p&gt;
&lt;p&gt;The data isn’t that robustly structured. You can have multiple folks with the same name (different departments). In addition, the department should have been a separate table, but hey, this is a demo. 8^D&lt;/p&gt;
&lt;p&gt;You’ll notice on the .aspx page that there are no databinding &amp;lt;%= %&amp;gt; type elements within the template columns. I’ve always had a preference to do my custom column data binding through the RowDataBound event. I find this a bit cleaner to manage and gives you some extra options to work with. I guess I’ll have to write up an article on that at a later date. 8^D&lt;/p&gt;
&lt;p&gt;If you’re looking for some extra magic to do with a GridView, especially with AJAX, I highly recommend &lt;a href=&quot;http://mattberseth.com/blog/gridview/&quot;&gt;Matt Berseth’s&lt;/a&gt; blog. He hasn’t done any updates in about a year now, but there are a lot of great articles to read through there.&lt;/p&gt;
&lt;p&gt;Hopefully these code samples will give you an good overview of the GridView if you’re just getting started with it. If you’re a “veteran” of the control, hopefully these code samples will make for a nice template to use when rolling out a new GridView in your application.&lt;/p&gt;
&lt;p&gt;As always, all comments/suggestions are greatly appreciated.&lt;/p&gt;
</content:encoded></item><item><title>Using An Inner Join On A Sql Update Statement</title><link>https://dillieo.me/posts/development/2010-04-27-using-an-inner-join-on-a-sql-update-statement/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-04-27-using-an-inner-join-on-a-sql-update-statement/</guid><description>Using An Inner Join On A Sql Update Statement</description><pubDate>Tue, 27 Apr 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I made a slight blunder in my application that crept up yesterday at work. We have an internal task tracking application and I&apos;ve been writing some supplementary web pages to interface with the application.&lt;/p&gt;
&lt;p&gt;It was discovered that in my code, I was incorrectly assigning the department Id of the user when inserting a new time track record into the database. I should have been inserting the Id of the requesting department instead, so that the proper time would be billed.&lt;/p&gt;
&lt;p&gt;There were about 1500 records that had been affected over a period of a month or so. While this wasn&apos;t drastic, it was a sufficiently large enough count that it would take me too long to manually update all the records. Some of the time tracking records did have the proper department assignment, since the main web page was also being used to enter time. Finding the bad records in question was simple enough to do:&lt;/p&gt;
&lt;p&gt;However, updating the records in a SQL statement was a little bit trickier, at least to this non Jedi/Ninja SQL guy. After a little bit of tweaking and testing, I found that I could use an INNER JOIN as part of an UDPATE statement, you just had to phrase the INNER JOIN through the FROM clause of the statement. A generic form of this statement looks like this:&lt;/p&gt;
&lt;p&gt;In my case, with the additional WHERE clause to find the mismatching the departments, I was able to update the records quickly with this query:&lt;/p&gt;
&lt;p&gt;Just another blade to add to your ninja skills, force trick to add to your Jedi skills, or tool to add to your trunk if you don&apos;t have it already. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Encrypt That Connection String Pronto</title><link>https://dillieo.me/posts/development/2010-04-23-encrypt-that-connection-string-pronto/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-04-23-encrypt-that-connection-string-pronto/</guid><description>Encrypt That Connection String Pronto</description><pubDate>Fri, 23 Apr 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I?m pulling this one out of the ?oldie but a goodie? based on a deployment I was doing today.&lt;/p&gt;
&lt;p&gt;If you have a database connection string that has the password sitting in clear text in your web.config file, you might have some security woes. Granted IIS does a good job and making sure end users can?t get to your web.config file through the browser, you may wind up having other security holes that would expose this data.&lt;/p&gt;
&lt;p&gt;I distinctly remember back in the 1.1 days working out a scheme with some fellow developers to protect out connection strings by actually having them sit in a separate file on the server (our ever beloved homer.ini file) and writing a library that would find this mystery file, do some fancy decryption, create a connection object, and return it to the calling code. It was a nice solution, but tricky to establish and even trickier to maintain.&lt;/p&gt;
&lt;p&gt;The .Net Framework 2.0 came out a short time later and eliminated all of these woes by creating an executable that will encrypt your connection strings for you! In order to do this, simply log on to the server, open the command prompt, and enter the following command:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Even if you?re using the 3.0 or the 3.5 Framework, you?ll still want to reference your version 2.0 folder for the encryption, since the 2.0 core is still used for the subsequent versions of the framework.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If the physical path to your application directory has any spaces in it, you?ll want to wrap the path around quotation marks.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That?s all there is to it! There are a lot of great benefits to using this encryption:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IIS will use a key unique to the server, so that even if somebody gets ahold of the encrypted web.config file, they won?t be able to decrypt the section.&lt;/li&gt;
&lt;li&gt;Your .Net will automatically decrypt the connection string on the fly, so you don?t need to modify any of your code that digs into the connectionStrings section of your web.config file to retrieve it.&lt;/li&gt;
&lt;li&gt;You can use this same process to encrypt other sections of your web.config file as well (have some appSettings values you don?t want anybody to see?). Simply change the ?connectionStrings? parameter to the appropriate section.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you need to decrypt the connection string to verify/modify any settings, the command is identical, except you change the ?pef parameter to ?pdf:&lt;/p&gt;
&lt;p&gt;No provider details needed on the decryption.&lt;/p&gt;
&lt;p&gt;If the server unique encryption key is insufficient, or you need a more global way of managing your encryption, you can also use your own RSA generated keys to manage the encryption/decryption. More details on that can be found &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy your hassle free encrypted connection strings!&lt;/p&gt;
</content:encoded></item><item><title>A Matter Of Perspective</title><link>https://dillieo.me/posts/development/2010-04-21-a-matter-of-perspective/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-04-21-a-matter-of-perspective/</guid><description>A Matter Of Perspective</description><pubDate>Wed, 21 Apr 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night the family was running around in the back yard a bid, playing on the new playhouse that I?m just about done building.&lt;/p&gt;
&lt;p&gt;It was getting dark and blustery, so we rounded up the girls to come in for dinner.&lt;/p&gt;
&lt;p&gt;Haylee, pointing to the sky, shouted, ?Look! Its Luna!!!? Of course we all looked up into the sky, and there was the moon. More intriguing was the fact that the wind was blowing pretty fast up in the jet stream, and the clouds were rapidly brushing in front of the moon.&lt;/p&gt;
&lt;p&gt;After a moment, Rylee asks, ?Why is Luna running away??&lt;/p&gt;
&lt;p&gt;I laughed to myself, easily remembering all the times when I looked at a similar windy sky and it seemed like the moon, or even the mountains were running away. I remembered the times at the beach where I had the same effect with my own body, watching the waves move over and back on my feet.&lt;/p&gt;
&lt;p&gt;It took a little explanation, and having the girls look at our own trees for them to see that it wasn?t the moon that was moving, but rather the clouds. Their perception of reality was now restored, or reestablished, and we moved into the house for dinner.&lt;/p&gt;
&lt;p&gt;In hindsight, I stopped to wonder how many times my own perspectives about reality have focused on the wrong point of reference and what I had to ground myself to in order to see restore or reestablish reality.&lt;/p&gt;
&lt;p&gt;I wonder what things I still have out of perspective.&lt;/p&gt;
</content:encoded></item><item><title>Random Musing About The Force The Universe And Balance</title><link>https://dillieo.me/posts/growth/2010-03-24-random-musing-about-the-force-the-universe-and-balance/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-03-24-random-musing-about-the-force-the-universe-and-balance/</guid><description>Random Musing About The Force The Universe And Balance</description><pubDate>Wed, 24 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Peace is a lie; there is only passion.&lt;br /&gt;
Through passion, I gain strength.&lt;br /&gt;
Through strength, I gain power.&lt;br /&gt;
Through power, I gain victory.&lt;br /&gt;
Through victory, my chains are broken.&lt;br /&gt;
The Force shall free me.&lt;br /&gt;
&lt;em&gt;&lt;a href=&quot;http://starwars.wikia.com/wiki/Sith_code&quot;&gt;- The Sith Code&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There is no emotion, there is peace.&lt;br /&gt;
There is no ignorance, there is knowledge.&lt;br /&gt;
There is no passion, there is serenity.&lt;br /&gt;
There is no chaos, there is harmony.&lt;br /&gt;
There is no death, there is the Force.&lt;br /&gt;
&lt;em&gt;&lt;a href=&quot;http://starwars.wikia.com/wiki/Jedi_Code&quot;&gt;- The Jedi Code&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Passion without Reason is anarchy. Reason without Passion is stagnation. Neither is optimal.&lt;/p&gt;
&lt;p&gt;Discuss.&lt;/p&gt;
</content:encoded></item><item><title>Using Html Server Controls</title><link>https://dillieo.me/posts/development/2010-03-23-using-html-server-controls/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-03-23-using-html-server-controls/</guid><description>Using Html Server Controls</description><pubDate>Tue, 23 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Did you know that you can attach the &lt;strong&gt;runat=server&lt;/strong&gt; tag to basic HTML controls in ASP.Net? What you get is something like this:&lt;/p&gt;
&lt;p&gt;When you do this, you create what is known as an HTML Server Control or what I prefer to call a Hybrid Control. What this does is expose the HTML control to your code behind pages and allows you to access them directly, without having to register jQuery scripts to modify the control.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Why bother with this at all? ASP.Net has a great WebControls that I interact with all the time.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is true. For the most part I stick with WebControls as well, but there are a couple of distinct advantages you get with the Hybrid Controls:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Less overhead on the web page.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes all you need is a simple image or a simple hyperlink with dynamic interaction with the standard features, like the display text. Using the hybrid control will keep all of the additional web control features out.&lt;/p&gt;
&lt;p&gt;Here&apos;s an example. In a previous application I wrote, I had a table layout with various options that a user was selecting to add/remove. I was stuck with the table due to layout restrictions, but I needed a simple way of hiding certain rows and changing the background on certain rows. I could have worked with panels within the table rows, but this was starting to make the code look pretty ugly.&lt;/p&gt;
&lt;p&gt;Instead, I simply gave each table row an id and converted them into a hybrid control. The ASPX code then looked something like this:&lt;/p&gt;
&lt;p&gt;I then created a couple of CSS classes to highlight or hide the row. Modifying the style of the row became as simple as doing the following in my code behind:&lt;/p&gt;
&lt;p&gt;That was it. Little overhead was added to the ASPX page, and I had easy code behind access to the rows in question without having to worry about Panels and potential formatting issues of embedding div tags within table elements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Allows for .Net referencing tricks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of the tricky issues when working with Hyperlinks or Images with master pages or user controls path reference issues that can occur. WebControls allow you to use the ~/ prefix to reference the application root of your web application, but normal HTML controls do not. This forces you into hard coding the full path of your image/hyperlink, or limiting the folder structure of your application so you don&apos;t have reference issues.&lt;/p&gt;
&lt;p&gt;However, if you create a hybrid control out of your Hyperlink or Image tag, it will allow you to use the referencing options that you get in Web Controls. Let&apos;s look at my first example again:&lt;/p&gt;
&lt;p&gt;This snippet comes from a menu user control that I have nested in a controls folder within my application. The control is embedded into a master page, which resides in a master folder within my web application. The application itself has a root level of common files, as well as subfolders that are limited to certain roles within the application.&lt;/p&gt;
&lt;p&gt;Without creating a hybrid control, the href of this tag would be difficult to maintain, since .Net is assembling my pages dynamically based on the master page and the controls involved. Since I did use the hybrid control, I&apos;m able to simply use the ~/ reference and expand the actual hyperlink by embedding an image, which is what I did in the full version of the menu control.&lt;/p&gt;
&lt;p&gt;So there&apos;s a quick overview of HTTP Server Controls or Hybrid Controls and how they can benefit you in your next ASP.Net application.&lt;/p&gt;
&lt;p&gt;Has anybody else come up with clever tricks for the hybrid controls? I&apos;d love to hear them!&lt;/p&gt;
</content:encoded></item><item><title>Daddy Tricks The Super Juice Box</title><link>https://dillieo.me/posts/growth/2010-03-21-daddy-tricks-the-super-juice-box/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-03-21-daddy-tricks-the-super-juice-box/</guid><description>Daddy Tricks The Super Juice Box</description><pubDate>Sun, 21 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday at a birthday party, the girls got a silly/crazy/wiggly/ straw as a party favor.&lt;/p&gt;
&lt;p&gt;This morning, Rylee was asking for a juice box to drink.&lt;/p&gt;
&lt;p&gt;For some reason, the two items came together to form the super juice box and all it took was an extra two seconds to wiggle the original straw around to make the hole large enough for the super straw.&lt;/p&gt;
&lt;p&gt;Rylee is quite happy with her surprise. Haylee doubly so. 8^D&lt;/p&gt;
&lt;p&gt;I&apos;ll have to remember this one, maybe start a series or something. Anybody else have some daddy/mommy tricks out there to share?&lt;/p&gt;
</content:encoded></item><item><title>Wordpress Plugin Recommendations</title><link>https://dillieo.me/posts/development/2010-03-16-wordpress-plugin-recommendations/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-03-16-wordpress-plugin-recommendations/</guid><description>Wordpress Plugin Recommendations</description><pubDate>Tue, 16 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a follow-up to my &lt;a href=&quot;/tracking-down-wordpress-hacks&quot;&gt;previous post&lt;/a&gt; about tracking down a WordPress hack that plagued a site, the next step was to be proactive in making sure these hacks did not occur again. There were also some site optimizations that needed to go into place, since the load time was extremely slow.&lt;/p&gt;
&lt;p&gt;Again, I&apos;ll admit that I&apos;m no WordPress guru, but I knew the mechanics of the web, and I knew what was needed to get a page to load fast. That said, here are the plug-ins I wound up installing on the &lt;a href=&quot;http://evangelicaloutpost.com&quot;&gt;Evangelical Outpost&lt;/a&gt; site that has really improved things:&lt;/p&gt;
&lt;p&gt;_On the security front
_&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/si-captcha-for-wordpress/&quot;&gt;SI CAPTCHA Anti-Spam&lt;/a&gt;&lt;br /&gt;
Are you getting too many messages clogging up your posts? This typically occurs by scripts or bots that can easily walk in, fill out the comment fields, and move on to your next post. What CAPTCHA does is provide some obfuscated text that a robot cannot read, and requires some form of intervention to interact with before the commented it submitted.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/exploit-scanner/&quot;&gt;WordPress Exploit Scanner&lt;/a&gt;&lt;br /&gt;
This plug-in can be run from the admin panel and will look over all your files and folders for folder permission issues and other items that can open security holes in your site. Don&apos;t run this during the middle of the day, since this scanner will take up a bit of time and resources.&lt;/p&gt;
&lt;p&gt;_On the performance front
_&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/w3-total-cache/&quot;&gt;W3 Total Cache&lt;/a&gt;&lt;br /&gt;
W3 Total Cache provides a wide variety of ways to improve the performance of your site. It will allow you to compress your JavaScript and CSS files on the fly. It has several methods of caching posts, which include memcaching if you have the capabilities to do so on your hosting account. It will distribute your content over a CDN if you have one. It also caches database queries to optimize performance. Enabling the total cache after installation shows great improvement, but taking a bit more time to add your CSS and JavaScript files for minification and altering compression algorithms will make things work even better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/add-meta-tags/&quot;&gt;Add Meta Tags&lt;/a&gt;&lt;br /&gt;
This plug-in is a simple tag that allows you to insert the proper meta tags into the head of your front page and/or post pages. There are no frills to it, but if you need to put a tracking code in and not worry about doing it across themes, this plug-in works great.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/pc-robotstxt/&quot;&gt;PC Robots.txt&lt;/a&gt;&lt;br /&gt;
The default robots.txt file does not help at all for getting your search engine details in place. It also was causing a few problems during our spam problems because the cached content was getting consumed by GoogleBot as well. Since the file is dynamically generated by WordPress, this plug-in allows you to configure what your robots.txt file will look like to the crawlers to your site. You can read up on various configurations for your robots.txt file and configure yours accordingly.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/google-sitemap-generator/&quot;&gt;Google XML Sitemaps&lt;/a&gt;&lt;br /&gt;
Having a sitemap file that Google reads does wonders to your site. It helps with your search results, and it also helps generate site links that appear right below your main site link to help users dig deeper into your site. Unless you have your own complete site map or index generator, odds are your older posts will slowly get lost within your site, and only a rare search will pull it up again into the Google cache. This plug-in will generate a compressed sitemap file that includes ALL of your posts and topics, plus it includes the proper refresh keywords to make sure things are updated within Google frequently. Our previous sitemap was only grabbing about 20 items. Setting up this plug-in submitted all 3000+ articles for indexing/caching on Google.&lt;/p&gt;
&lt;p&gt;All of these plug-ins installed quickly and most required little to no configuration details to get running. Having these items installed has helped both our security and performance on the site. I hope they help you as well.&lt;/p&gt;
&lt;p&gt;Have you found any plug-ins that are helping performance/security on your WordPress install? I&apos;m always looking for new ones, so let me know!&lt;/p&gt;
</content:encoded></item><item><title>Tracking Down Wordpress Hacks</title><link>https://dillieo.me/posts/development/2010-03-15-tracking-down-wordpress-hacks/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-03-15-tracking-down-wordpress-hacks/</guid><description>Tracking Down Wordpress Hacks</description><pubDate>Mon, 15 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been volunteering my time over the last month or so helping to debug some spam and performance problems at the &lt;a href=&quot;http://evangelicaloutpost.com&quot;&gt;Evangelical Outpost&lt;/a&gt; blog. The blog is running WordPress, and while I’m no WordPress guru in any regard, I’ve spent enough time on the web that I could lend my expertise to these issues.&lt;/p&gt;
&lt;p&gt;The spam issue wound up being a rather nasty exploit that I believe was traced to some file permission hacks in older versions of WordPress. What made them really difficult was that the spam was only showing up in the Google cache and search results, effectively driving the sites search ratings down, but not degrading the post content an active viewer would have. Since the average person would only see the live good content, the issue was unnoticed for a while and more difficult to track down. The full details of this is a post for another day.&lt;/p&gt;
&lt;p&gt;However, one thing I did want to share was the process of elimination/cleansing I went through in order to find the issues. After the initial attack I believe there were a few other issues that compounded the problem at multiple levels (application, files, database). Hopefully this list will give you a nice process to go through if you’ve recently had your own WordPress hack and need to flush it out:&lt;/p&gt;
&lt;p&gt;1. Go into the admin section and do a search on all comments for the following keywords (in separate searches): “tramadol” (this was the spam vendor ailing us), “javascript”, “hover”, “style=”. Those are typically some of the injection vectors that get used in the comments themselves.&lt;/p&gt;
&lt;p&gt;2. Go into the theme editor and browse through all of the files in all of the themes you have installed on your WordPress install, even if inactive. Look for “base64” in there and also look for some blatant links to the spam sites. Sometimes the hackers aren&apos;t picky, if they have file access, they&apos;ll just inject it straight away with none of the encoding shenanigans. Look for other PHP method calls that just don’t seem right for your template. Its hard to make a specific list, but sometimes you’ll get a “code smell” of something that doesn’t seem like it should be happening and is worth investigation.&lt;/p&gt;
&lt;p&gt;3. Log into the file manager on your hosted site. Look for any .txt files in the root of your directory and the root of your Wordpress install. This is how I found a massive cached dump file of some old E-mails and posts, which had the tramadol keyword in it, and I suspect it was getting added to the cache, or skewing the search results, since there was a generic robots.txt file.&lt;/p&gt;
&lt;p&gt;4. Flush out your wp-cache folder, or at least look through them for the spam keywords. Whatever caching program you use is probably rebuilding this folder, so I&apos;m not as worried about this, but flushing this out is helpful. That&apos;s why I really like the W3 Total Cache plug-in I installed for EO.&lt;/p&gt;
&lt;p&gt;5. Finally, go directly into the database manager and search through the comments at this level. The reason for this that a lot of the spam injection happens by putting HTML code into the database so that when it comes out, you don&apos;t see it on the page unless you go into the source code, and sometimes that is even filtered down. Use the following query to search your posts and comments for the common attack vectors:&lt;/p&gt;
&lt;p&gt;SELECT * FROM wp_posts WHERE post_content LIKE &apos;%&amp;lt;iframe%&apos; UNION SELECT * FROM wp_posts WHERE post_content LIKE &apos;%&amp;lt;noscript%&apos; UNION SELECT * FROM wp_posts WHERE post_content LIKE &apos;%display:%&apos; UNION SELECT * FROM wp_posts WHERE post_content LIKE &apos;%&amp;lt;?%&apos; UNION SELECT * FROM wp_posts WHERE post_content LIKE &apos;%&amp;lt;?php%&apos;&lt;/p&gt;
&lt;p&gt;SELECT * FROM wp_comments WHERE comment_content LIKE &apos;%&amp;lt;iframe%&apos; UNION SELECT * FROM wp_comments WHERE comment_content LIKE &apos;%&amp;lt;noscript%&apos; UNION SELECT * FROM wp_comments WHERE comment_content LIKE &apos;%display:%&apos; UNION SELECT * FROM wp_comments WHERE comment_content LIKE &apos;%&amp;lt;?%&apos; UNION SELECT * FROM wp_comments WHERE comment_content LIKE &apos;%&amp;lt;?php%&apos;&lt;/p&gt;
&lt;p&gt;And that covers a pretty wide range of ways your site can get hacked. Last this week I’ll list a few WordPress plug-ins I’ve particularly useful for the EO site, as well as a diagnosis of the particular Google Cache hack, just in case you run into similar issues.&lt;/p&gt;
</content:encoded></item><item><title>Developers Toolkit Mmx Edition</title><link>https://dillieo.me/posts/development/2010-03-10-developers-toolkit-mmx-edition/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-03-10-developers-toolkit-mmx-edition/</guid><description>Developers Toolkit Mmx Edition</description><pubDate>Wed, 10 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Looking over my site, which needs a severe update, I realize that my “developers toolkit” is really out of date. The premise still remains the same: as robust and feature rich as most IDEs are nowadays, it is still difficult to have an &quot;all in one&quot; package for developing your applications. The database tool might be missing that handy view or export for the data. The graphics editor doesn&apos;t handle layering. You just need a place to store that code snippet you found in that forum thread until you&apos;re ready to paste it into your method.&lt;/p&gt;
&lt;p&gt;However, there have been new tools that have come and gone, and I felt it was time for a revisit, partially to see how things have changed:&lt;/p&gt;
&lt;p&gt;**File Management&lt;br /&gt;
**&lt;em&gt;Then: PowerDesk&lt;br /&gt;
Now: None.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Having a really good file manager used to be key to all of the file transfers and management on my projects. I think the most critical part was having a handy split view so that I could quickly migrate files from my local development sandbox up to the test server. Thanks to Windows 7 and the quick docking feature, the most important piece is a few simple keystrokes away.&lt;/p&gt;
&lt;p&gt;Simply hold down the shift key while clicking on the Windows Explorer icon two times (not double clicking) so that two instances of Windows Explorer starts. From there hold down the window key and tap the right arrow so that one window docks on the right hand side. A quick ALT-TAB to go to the other Windows Explorer instance and use the left arrow with the window key and the window is docked on the left. Copy/Move becomes a nice and simple drag process, and there’s one less program for me to worry about.&lt;/p&gt;
&lt;p&gt;When I’m dealing with a large batch of files to synchronize, I found the Microsoft’s &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=c26efa36-98e0-4ee9-a7c5-98d0592d8c52&quot;&gt;SyncToy&lt;/a&gt; to be excellent at handling this. Of course, I couldn’t do anything without having &lt;a href=&quot;http://www.7-zip.org/&quot;&gt;7-Zip&lt;/a&gt; around to handle all my archiving/packaging needs.&lt;/p&gt;
&lt;p&gt;**Quick Notes&lt;br /&gt;
**&lt;em&gt;Then: Stickies&lt;br /&gt;
Now: Stickies&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.zhornsoftware.co.uk/stickies/&quot;&gt;Stickies&lt;/a&gt; is one of those gems that has been around forever and is still being updated. Much hasn’t changed from when I installed version 5, and it is at version 7 now. That’s the beauty of it. There’s no bloat in the app. I use Stickies to pull off code snippets, e-mail details, and practically anything else I need to keep in note format during my coding/debugging process. Stickies will allow you to hide or place your note always on top, sleep for a designated period of time, and a myriad of handy features. You can even skin your stickies or synchronize them with your PocketPC or Palm device.&lt;/p&gt;
&lt;p&gt;**Database Management&lt;br /&gt;
**&lt;em&gt;Then: Toad&lt;br /&gt;
Now: Toad&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.toadsoft.com/&quot;&gt;Toad&lt;/a&gt; is another one of those tools that has only gotten better with age. If you&apos;re not familiar with Toad, they have established themselves as the premiere Oracle development / management tool. The interface is crisp, the tools are feature rich, and the install size isn&apos;t too intense. The best thing is that the makers decided to release a freeware model that is lacking a few features, but nothing that interrupts your day to day tasks. They currently have version for you to use for all the major databases out there. As an added bonus, they have released a free version of their data modeling tool which will give you a great resource to design/document your database schema in ERP format and have the DDL auto-generated for your database.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Text Editing&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;Then: PSPad&lt;br /&gt;
Now: Notepad++&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is one of those categories where are so many great tools to choose from and choosing any of the top tools works great. I think the line numbers and built in differential tool of &lt;a href=&quot;http://notepad-plus.sourceforge.net/&quot;&gt;Notepad++&lt;/a&gt; is what brought me over to it. Its interface is what I’m most comfortable with when working with files. Again, each of the top editors has its nuance, so go with one that suits you best.&lt;/p&gt;
&lt;p&gt;**Image Manipulation&lt;br /&gt;
**&lt;em&gt;Then: Paint.Net&lt;br /&gt;
Now: Paint.Net / Inkscape&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.getpaint.net/&quot;&gt;Paint.Net&lt;/a&gt; was just getting off the ground when I first wrote about it and since then it has turned into the defacto windows image editing program out there for the “average Joe.” Paint.NET gives you all of the tools you need for graphics development (plenty of export formats, layering, effects plug-ins, etc.) and is completely free. I use it for tweaking up some of my web images or creating new ones from scratch. Unless you need the advanced features of Photoshop, Paint.Net will work great for you.&lt;/p&gt;
&lt;p&gt;Along the way, I’ve also needed to work on scaling images to higher resolutions and do some general vector based image manipulation. I’ve found that &lt;a href=&quot;http://www.inkscape.org/&quot;&gt;Inkscape&lt;/a&gt; is an excellent tool that gives me all of my vector imaging needs, with all of the popular pixel based formats to export to.&lt;/p&gt;
&lt;p&gt;Once you get the hang of vector image manipulation, especially tracing existing images into vector format, you’ll be amazed at what you can accomplish between the two programs.&lt;/p&gt;
&lt;p&gt;**Network Analysis&lt;br /&gt;
**&lt;em&gt;Then: TCPView / Packetyzer&lt;br /&gt;
Now: TCPView / Wireshark&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Are you wondering if your application is actually sustaining a connection with the database? If the connection is properly established, is the parameterized query being constructed and executed properly? I use &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx&quot;&gt;TCP View&lt;/a&gt; and &lt;a href=&quot;http://www.wireshark.org/&quot;&gt;Wireshark&lt;/a&gt; to validate these issues at a very granular level. TCP View will allow me to view which Internet connection I have open in real-time. If I really need to get to the minute details and/or verify that the communication between application and database is valid, Wireshark provides me with a excellent packet sniffer that has searching capabilities and the ability to retrace an entire communication between two endpoints by tapping into one packet.&lt;/p&gt;
&lt;p&gt;**HTML / Javascript Analysis&lt;br /&gt;
**&lt;em&gt;Then: Firefox Plugins&lt;br /&gt;
Now: Chrome Developer Tools&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I became a Chrome convert around version 2.0. I wasn’t overly impressed with version 1.0, but the new features and updates in version 2.0, plus my plugin overload/slowdown in Firefox, brought me over to the “Spartan” side of web browsing. I do need Firebug on occasion, so I do have the install on there for that and Page Speed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code Snippet Manager&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;Then: None/PSPad&lt;br /&gt;
Now: Snip-a-Dillie-O&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I’ve tried the Visual Studio manager, but I like to maintain HTML snippets, SQL queries, VB and C# code and even some other code related stuff that just didn’t quite fit into the snippet manager tool. Searching around the Internet really didn’t pan out to much, so when it doubt, code it yourself! I wrote a simple little tool that allows me to maintain my snippets, and easily drag and drop them into the editor of the moment for use. It’s great! I’m currently rewriting it to try my hand at WPF, LINQ, and use some new features with Windows 7. I’ll try to get it out to the public then.&lt;/p&gt;
&lt;p&gt;So what about you? What tools are in your arsenal? I’m always looking for new ones!&lt;/p&gt;
</content:encoded></item><item><title>Your Career The Microcosm Of Your Life Part 2</title><link>https://dillieo.me/posts/development/2010-03-08-your-career-the-microcosm-of-your-life-part-2/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-03-08-your-career-the-microcosm-of-your-life-part-2/</guid><description>MacroCosmos Image</description><pubDate>Mon, 08 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/your-career-the-microcosm-of-your-life-part-1&quot;&gt;Last week&lt;/a&gt;, I commented on how I’ve been finding a lot of aspects to my career that function as a microcosm to my life as a whole. In particular, I noted how life needs to be “1.0” release, in that we need to get out there and live. If we take too much time waiting to get everything perfect, we’ll never get our life going. Similarly, by getting our life at 1.0 status, we can then slowly work “upgrading or modifying” our life to 1.1 status, 1.2 status, and so on.&lt;/p&gt;
&lt;p&gt;Related to this concept is the “how” of going from the various “versions” of your life:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Life needs to be lived in an agile manner.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea of “&lt;a href=&quot;http://agilemanifesto.org&quot;&gt;agile programming&lt;/a&gt;” has been in the works for a while now. It has seen various names and has undergone various approaches, but from all I’ve seen, tried, and read, the core concepts of agile programming (as listed by the manifesto) are to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Individuals and interactions over processes and tools&lt;/li&gt;
&lt;li&gt;Working software over comprehensive documentation&lt;/li&gt;
&lt;li&gt;Customer collaboration over contract negotiation&lt;/li&gt;
&lt;li&gt;Responding to change over following a plan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After reading over these tenants, and applying them in some of my recent projects, the focus of programming/engineering/crafting/insert clever acronym here has a shift to put more emphasis on the process. The reason for this is that too often in the older models of creating software, there was a HUGE amount of time devoted to setting out what the finished project looked like. There were rules, workflow models, data diagrams, and LOTS of meetings to establish precisely what would happen with the project. The timeline would then be set, a good 6 months, maybe a year to implement the large system.&lt;/p&gt;
&lt;p&gt;The problem with this arises with the fact that the environment the project is designed for is a rapidly changing environment. So three months into the project, workflow requirements must change due to the way business is done. You’re then stuck with a dilemma: alter the project in progress (which starts to create something called “scope creep”) or stay fixed to the initial requirements/design documents (treated as a strict contract) and implement those changes when the process is done. This is just getting the 1.0 version released. Incremental changes from 1.0 to 1.1 suffer a similar fate, though not often as drawn out.&lt;/p&gt;
&lt;p&gt;What agile seeks to do is eliminate such a rigid process by acknowledging that changes come fast and furious. To work with this, and still have a successful product, you need to have a workflow that accommodates to change and can deliver updates rapidly. By comparison, your agile 1.0 project will most likely not be as “feature rich” as “traditional” 1.0 application, but the application will be able to adapt easier to business rules changes and getting new features or fixing bugs will move a lot faster in the agile model than the traditional model because the process or infrastructure in which the application was built was designed to handle this.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[That’s all great and fantastic Mr. CodeFreak, but how does this apply to life?]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Thanks for stopping me from waxing eloquent on the 1s and 0s! As we progress through our life, there’s no doubt that changes come at us fast and furiously. One day the water heater dies and the budget for your nice summer sod lawn is gone. You get that phone call saying a dear relative has passed away. You read a new book that contains some wonderful grains of wisdom that you want to apply to your everyday living. You hear a sermon that convicts you of some serious changes that you need in your life. This list can go on and on.&lt;/p&gt;
&lt;p&gt;How are we to respond to these kinds of situations? If we are living life in an agile manner, we easily integrate these changes into our life and learn from them. This is because we were expecting them to happen, to some small degree. The exact details are always unknown to us until they occur, but the underlying concept is there. You may worry that adopting a change to your life will make things worse. There’s a chance to that. There’s a chance to most of these things. But the nice thing is that if we’re living our life in an agile manner, we’ll realize that “change item X” didn’t work out as well and we’ll roll it back in the next release.&lt;/p&gt;
&lt;p&gt;In facing the pressures and forces in our life, its easy to think, “I know what I need to know, I can handle this. I will stand as firm as a rock and will myself through it.” I’m pretty sure this will get you through a lot of things. There will be something out there that WILL crush you to the ground. If you’re still treating yourself like a rock, you’ll be decimated. Hopefully you’ll get back on your feet, but it’ll be a long and painful process. But consider this, if you stand as a rubber ball, you tend to think, “I know a lot of stuff, but I don’t know it all. Pressure will come, and it will probably squish me flat. But after that, I’ll spring back into shape, having learned something new, and continue forward.”&lt;/p&gt;
&lt;p&gt;One thing I want to briefly mention is that while looking at this “agile” manner of living, I am by no means throwing everything out the window with each iteration, or even with the “1.0” release. There is still a clear and concise goal or core to the project (and you), its the process of building and fixing that becomes a little more flexible, in response to the joys and trials of life. My own experience has shown me that there is a core set of values and traits that defines you, and that needs to stay fixed. However, there are a lot of stuff not as important that are open to “revisional change” and probably should be done.&lt;/p&gt;
&lt;p&gt;So that’s how I see it, life as an agile process. Flexible to the changes that come, but still driven to make things bigger and better.&lt;/p&gt;
&lt;p&gt;I ask again. What about you? What parallels or “microcosms” do you see in your career that apply to your life as a whole? I want to know.&lt;/p&gt;
</content:encoded></item><item><title>Your Career The Microcosm Of Your Life Part 1</title><link>https://dillieo.me/posts/development/2010-03-02-your-career-the-microcosm-of-your-life-part-1/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-03-02-your-career-the-microcosm-of-your-life-part-1/</guid><description>MacroCosmos Image</description><pubDate>Tue, 02 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While I&apos;ve been categorically a geek for all of my life, I&apos;ve only really been a software engineer for about 10 years now, starting with an online profile creator I created for a person using Perl and flat files. &lt;em&gt;[ahh the memories]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;From time to time I like to sit and reflect from time to time about technologies old and new, patterns and practices I used in my programs, and projects that have succeeded and failed. In doing this I&apos;ve noticed that a lot of things that I&apos;ve done in &quot;programmer land&quot; also seem to apply to life. For example:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Life is a &quot;1.0&quot; Application&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the realm of programming, your 1.0 application is a significant first step, full of potential and features, but often full of bugs and desired functionality. That&apos;s why you&apos;ll find a lot of professionals snark that they&apos;ll wait for the service pack or the 1.1 release of the application before using it.&lt;/p&gt;
&lt;p&gt;The thing to realize though, is that if you waited until you had all the bugs out of the application, had all the perfect features in the application, you&apos;d NEVER get it released. Nobody would get to see the awesome app you&apos;ve released, and you would have any feedback on how to make it better and to fix what went wrong. In addition, no amount of code tests, usability tests, and coding standard can prepare an application for the permutations and nuances of &quot;real world use.&quot; This metaphor gets a little skewed nowadays with the massive amount of applications that are great, but keep the &quot;beta&quot; or &quot;release candidate&quot; status (see Gmail or Windows 7), but these are really exceptions and not the norm. If your application is to be taken seriously, you put it out there at 1.0 status and move forward.&lt;/p&gt;
&lt;p&gt;This applies to life as well. There&apos;s no amount of preparation, book reading, and &quot;testing&quot; that would fully prepare me for marriage, kids, and life in general. You do your best to prepare, focus on your fundamentals or semantics (&lt;a href=&quot;/its-the-semantics-silly&quot;&gt;see an old post of mine&lt;/a&gt;) and then you get out there and live! Sure you have bugs/flaws in your life, and additional features/characteristics about you are yet to be discovered and implemented, but you won&apos;t discover those with out some real world experience to expose them.&lt;/p&gt;
&lt;p&gt;As you live, and the &quot;bug fixes&quot; and &quot;feature enhancements&quot; come in, you eventually get to 1.1, status and slowly move forward. Sometimes a new &quot;version release&quot; of you removes some features you found non-essential or undesired, but that&apos;s the beauty of it. You&apos;re still the 1.0 &quot;core&quot; you, but with a lot of improvements along the way. I&apos;m not sure if we ever reach a 2.0 status this side of the grave. Typically 2.0 releases represent a complete rewrite of the system, or a wide variety of features that weren&apos;t available in the original system. But that&apos;s probably a topic for another time.&lt;/p&gt;
&lt;p&gt;There&apos;s a second idea I have that ties nicely in with this one, but I&apos;m saving it for another entry, since there is plenty to chew on here for now.&lt;/p&gt;
&lt;p&gt;What about you? What parallels or &quot;microcosms&quot; do you see in your career that apply to your life as a whole? I want to know.&lt;/p&gt;
</content:encoded></item><item><title>Personal Kanban Agilezen</title><link>https://dillieo.me/posts/development/2010-02-07-personal-kanban-agilezen/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-02-07-personal-kanban-agilezen/</guid><description>Personal Kanban Agilezen</description><pubDate>Sun, 07 Feb 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Back in October, I &lt;a href=&quot;/personal-kanban-3-weeks-in&quot;&gt;wrote a post&lt;/a&gt; about my venture in the world of personal kanban. To date, it has been a rousing success. I&apos;ve tried to pitch the idea (formally and informally) to a few of my colleagues, but the idea has yet to stick. Such is life.&lt;/p&gt;
&lt;p&gt;In a random twitter reply last week, I had suggested to somebody that they try personal kanban. A couple other twitter people picked up on the conversation (thanks &lt;a href=&quot;http://www.twitter.com/senfo&quot;&gt;@senfo&lt;/a&gt; and &lt;a href=&quot;http://www.twitter.com/topsurf&quot;&gt;@topsurf&lt;/a&gt; ) as well, and the reference as made to try out an online app called &lt;a href=&quot;http://agilezen.com/&quot;&gt;AgileZen&lt;/a&gt;. So I decided to give it a peek. The nice thing is that they offer a single project account for free, which is perfect for keeping dibs on my workload.&lt;/p&gt;
&lt;p&gt;So after signing up (took less than a minute), accessing my account, and doing getting familiar with the environment (maybe five minutes tops), I setup my workload board to look like this:&lt;/p&gt;
&lt;p&gt;Notice the following things I&apos;ve done slightly different here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I wanted to change the standard &quot;Ready, Workload, Complete&quot; items to &quot;Doing, Fire!!!, Complete&quot; which matches my current layout.&lt;/li&gt;
&lt;li&gt;You can optionally set the max number of items that can be in a give phase. It gives you the number next to the name, and the entire column will turn red if you&apos;ve exceeded the number. That helps nicely for a simple visual cue that you&apos;re doing too much work.&lt;/li&gt;
&lt;li&gt;I can color code items as I see fit. My fire ones will get a nice red color to it. I have &quot;pending complete&quot; items in green and &quot;fully complete&quot; items in blue. At the end of the day I&apos;ll move the &quot;fully complete&quot; items to my archive. Now I could have added another column called &quot;Pending Done&quot; like on my physical board, but this color option actually works really nice and prevents things from getting to squished on the main screen.&lt;/li&gt;
&lt;li&gt;I also have tags for each of my items, relating to the project involved. I accomplish this same task by putting the project in the &quot;header&quot; of my sticky notes in my physical board. I should also point out that each &quot;story&quot; in AgileZen can have a list of tasks associated with them, which would work great on a larger scale for my projects. But since I tend to have to jump back and forth between projects I maintain, having each task individualized is better for me. The point here is that AgileZen is nice enough to let you be flexible either way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If I need to add new tasks, or &quot;stories&quot; as they are called in classic Scrum language, the screen is nicely integrated into the main page:&lt;img src=&quot;@assets/images/posts/2010-02-agilezenaddtask1.jpg&quot; alt=&quot;&quot; title=&quot;AgileZenAddTask&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll notice that you can add items to your Backlog or directly to your board. I personally like to see my backlog just to keep in mind upcoming items I may have to change priorities on. A simple click and the Backlog and Archives are integrated:&lt;img src=&quot;@assets/images/posts/2010-02-agilezenfullboard1.jpg&quot; alt=&quot;&quot; title=&quot;AgileZenFullBoard&quot; /&gt;&lt;/p&gt;
&lt;p&gt;All in all I find AgileZen very flexible, easy to work with, and the free account works perfectly with what I need in my Personal Kanban account. This also resolves the issue that arose in the original twitter discussion about how you can take your personal kanban board with you if you&apos;re working out of multiple offices.&lt;/p&gt;
&lt;p&gt;AgileZen probably won&apos;t replace my personal kanban board at the moment. I only say that because I work in one cube and I had to call in too many favors to find a white board to use. 8^D I WILL, however, be running AgileZen in parallel with my kanban board, because if I never need to send an update to my manager on my current/upcoming tasks and status, a simple screenshot will get them up to date.&lt;/p&gt;
&lt;p&gt;If you&apos;re looking to get off the ground with personal kanban, definitely give &lt;a href=&quot;http://agilezen.com/&quot;&gt;AgileZen&lt;/a&gt; a try. You can&apos;t complain for the features, the price, and you won&apos;t have sticky notes taped to your white board after one too many shifts between Backlog and Active. 8^D&lt;/p&gt;
</content:encoded></item><item><title>In Which I Graciously Thank Altec Lansing For Their Generous Gift</title><link>https://dillieo.me/posts/growth/2010-01-27-in-which-i-graciously-thank-altec-lansing-for-their-generous-gift/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2010-01-27-in-which-i-graciously-thank-altec-lansing-for-their-generous-gift/</guid><description>Altec Lansing Logo</description><pubDate>Wed, 27 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The year was 1997. Pentium IIs were starting to invade the market and I was a budding college student and had scored a paid internship (yes, they still had paid ones back then!) at Tandem Computers (bought out by Compaq, then absorbed into HP) with a fellow geek buddy from school. His parents were gracious enough to let me live with them, so we had a blast playing computer games into the late night.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2010-01-altecacs495.jpg&quot; alt=&quot;Altec Lansing ACS495&quot; title=&quot;AltecACS495&quot; /&gt;Being my first real venture into endless summer nights of computer gaming, I wanted to get me a really nice set of computer speakers to go with the experience. Drifting down the aisle at Fry&apos;s Electronics, I stumbled up on a set of Altec Lansing ACS 495 speakers.&lt;/p&gt;
&lt;p&gt;These speakers were awesome. There was a really crisp sound and the subwoofer pounded some great beats. My computer only had a basic sound card installed on it, but using the USB port and special drivers, I was able to get a surround sound experience. The design was nice too since the 4 speakers were mounted into two &quot;towers&quot; so I didn&apos;t have to send wires everywhere. There was many a game, and a DVD (the quality was just as great) enjoyed on these speakers that summer.&lt;/p&gt;
&lt;p&gt;But that was only the beginning of my relationship with these speakers. As I moved back to college, on to other colleges, got married, went to work, these speakers followed me everywhere. My coworkers would chuckle a little at me when I first brought them in to my office computer, but when they heard the sound through them, they knew why I loved these so much. It was especially nice when I worked a few late nights and could really crank the sound up.&lt;/p&gt;
&lt;p&gt;Alas, as such things are with life, a couple weeks back the ACS 495s finally came to rest. Nothing crazy or annoying, they just stopped working. I checked all the necessary plugs and settings, but they just lasted for a good long life. Having the geekish tendency that I do, I decided to put a quick RIP out on the twitter-verse:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Today I say goodbye to my Altec Lansing speakers. They have served the family well for 13 years. Hard to find good quality like that. 8:32 AM Jan 13th from threadsy&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To my utter shock and amazement I received the following reply via Twitter the next day:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;@DillieO Hey Sean, you&apos;ve been so loyal over 13 years, we would love to send you some new Altec speakers... how are you listening? 9:11 AM Jan 14th from TweetDeck in reply to DillieO&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This couldn&apos;t be real now, could it&apos;! I checked out the profile, poked around the web a little bit, and sure enough, this was the real deal! This was the VP of Marketing and Product Management for Altec Lansing!&lt;/p&gt;
&lt;p&gt;We exchanged a few more twitter messages, an e-mail or so, and the following package arrived on my doorstep yesterday:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2010-01-altecfx50511.jpg&quot; alt=&quot;Altec Lansing FX5051&quot; title=&quot;AltecFX5051&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That, my friends, is the &lt;a href=&quot;http://www.alteclansing.com/ae/us/archive-computer-speakers/fx5051/invt/fx5051/&quot;&gt;Altec Lansing FX5051&lt;/a&gt;. A 6 speaker system (including the subwoofer) that delivers amazing performance out of some pretty small speakers that are unobtrusive to the desk in which the family computer sits. It uses a similar USB connector, but now no special software is needed. Windows 7 detects a 5.1 speaker system and away you go!&lt;/p&gt;
&lt;p&gt;The sound is simply amazing. While testing the sound out last night and dancing with my wife, it felt as if Norah Jones was in our living room with her band serenading just us. Early this morning I kicked up some of my trance music and I&apos;m surprised I didn&apos;t wake up the wife, the beats were that good. Tonight I test out the movie surround sound with my the Star Wars Podracer scene, it always gives a great test for the low rumble of the engines and the zoom of the racers flying by. I&apos;m giddy all over again!&lt;/p&gt;
&lt;p&gt;Out of all this &quot;geek gushing&quot; I do REALLY want to thank the folks at Altec Lansing, and especially Bernice Cramer. I never expected in my wildest dreams that a random tweet would upgrade my computer speakers at home. More importantly, your generosity and dedication to the customers out there is simply amazing. You could of easily tossed out that initial tweet, waited for my response, then gotten busy with most important issues and lost me in the paperwork. I wouldn&apos;t have thought anything of it for that. But the fact that you kept in contact and came through on your initial offer speaks volumes to your integrity.&lt;/p&gt;
&lt;p&gt;I&apos;m not sure if I&apos;ll actually need to buy a new set of speakers again (considering the lifespan of my last set) but I won&apos;t be going anywhere else to you guys for my next set of speakers. Thank you, thank you, thank you!&lt;/p&gt;
&lt;p&gt;P.S. My twin 3 year old twins want to thank you too. The box came with lots of bubble wrap that they had fun dancing on and making popping sounds with while I was unpacking everything. 8^D&lt;/p&gt;
</content:encoded></item><item><title>My Tombstone And Yours</title><link>https://dillieo.me/posts/development/2010-01-25-my-tombstone-and-yours/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-01-25-my-tombstone-and-yours/</guid><description>Tombstone</description><pubDate>Mon, 25 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This may seem like a rather morbid question, but it also a rather interesting one as well. My youth pastor often referred to this as ?the dash.? What are you going to do with that dash between the date of your birth and the date of your death. Similarly, how would you summarize your life or what you wanted to be remembered by, in such a short space.&lt;/p&gt;
&lt;p&gt;While letting question process in the background of my mind for a few days, I stumbled upon a song on &lt;a href=&quot;http://www.superchickonline.com/music_bfp.php&quot;&gt;one of my CDs&lt;/a&gt; (find the song ?We Live? that I was listening to on the way to work. The chorus struck me instantly as what I would want on my tombstone. Augmenting the lyrics a little, my tombstone would read as such:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;He lived.&lt;br /&gt;
He loved.&lt;br /&gt;
He forgave.&lt;br /&gt;
He never gave up.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Each one is simple, but can be unraveled to expand a lifetime of adventures, thinking, and shaping of who I am, and who I am for others, and most importantly, who God wants me to be.&lt;/p&gt;
&lt;p&gt;What do you want your tombstone to say?&lt;/p&gt;
</content:encoded></item><item><title>Worth Sharing Java Rib Rub</title><link>https://dillieo.me/posts/life/2010-01-19-worth-sharing-java-rib-rub/</link><guid isPermaLink="true">https://dillieo.me/posts/life/2010-01-19-worth-sharing-java-rib-rub/</guid><description>Worth Sharing Java Rib Rub</description><pubDate>Tue, 19 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: I can&apos;t take credit for this recipe, other than trying it out and loving it! You can get this recipe and others from &lt;em&gt;&lt;a href=&quot;http://search.barnesandnoble.com/How-to-Grill/Steven-Raichlen/e/9780761120148/?itm=1&amp;amp;USRI=how+to+grill&quot;&gt;&lt;em&gt;this book&lt;/em&gt;&lt;/a&gt;&lt;/em&gt;. It is the perfect book for beginners and experts. I highly recommend it!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After getting some eager requests, and trying it myself, I had to share this Java rib rub recipe with you. It is nothing short of amazing, has a wonderful rich taste, with a few spots of sweetness or spiciness depending on where you bite into. I unofficially call this rub Perk dat Pig! Rib Rub. Here is the recipe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6 tbsp Ground Coffee (the fresher the better)&lt;/li&gt;
&lt;li&gt;2 tbsp Course Salt (I use Kosher Salt)&lt;/li&gt;
&lt;li&gt;2 tbsp Brown Sugar&lt;/li&gt;
&lt;li&gt;2 tbsp Sweet Paprika (regular works too)&lt;/li&gt;
&lt;li&gt;2 tsp Black Pepper&lt;/li&gt;
&lt;li&gt;2 tsp Garlic Powder&lt;/li&gt;
&lt;li&gt;2 tsp Onion Powder&lt;/li&gt;
&lt;li&gt;1 tsp Ground Cumin&lt;/li&gt;
&lt;li&gt;1 tsp Ground Coriander&lt;/li&gt;
&lt;li&gt;1 tsp Unsweetened Cocoa Powder&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simply combine those ingredients in a bowl and mix together. It actually works best if you use your hands, because you can use your fingers to break up the brown sugar clumps that sometimes. Put this in an airtight jar and it&apos;ll keep for a good 6 months.&lt;/p&gt;
&lt;p&gt;How to make ribs? Well, here&apos;s the quick route I took with this latest batch.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cover the meat side of the ribs with the rub. Be generous with the coat, but don&apos;t cake it on. Rub it in lightly, the salt and other spices will allow the flavor to soak in.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wrap up the ribs in foil and let it sit in the fridge for at least 2 hours.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fire up your grill and have the temperature set for the lowest temp in the grill range. I&apos;ll admit I don&apos;t do charcoal, so you&apos;ll want to get better guidelines in a book. I usually fire up all the burners to get to the setting quicker.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once preheated, put your ribs on the grill, meat side down, for 2 minutes. While not proven, I like to put a light sear on the meat to help keep the rub and flavors in.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After the sear, transfer the ribs to a rib rack. This allows the fat to drip off the ribs and also keep the grates from cooking the meat too fast.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Let these bad boys cook for an hour and a half. Every 15 to 20 minutes, take a spray bottle full of apple cider vinegar and light spray down the ribs. This is the key to keeping the ribs moist during the cook process since we&apos;re not using a rub.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After the hour and a half (sometimes 2 if you need it). Pull the ribs off, let them sit for a few minutes to cook, cut and enjoy!&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now how can I prove these are so good? Up to this point Rylee has been rather reluctant to eat anything I&apos;ve grilled, minus some simple chicken. She came over, took a bite of mine, and walked off with her own rib and ate half of it!&lt;/p&gt;
&lt;p&gt;So I&apos;m sharing the love with you. Give this a try and let me know what you think.&lt;/p&gt;
</content:encoded></item><item><title>Using A Requiredfieldvalidator For A Dropdownlist In Aspnet</title><link>https://dillieo.me/posts/development/2010-01-14-using-a-requiredfieldvalidator-for-a-dropdownlist-in-aspnet/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-01-14-using-a-requiredfieldvalidator-for-a-dropdownlist-in-aspnet/</guid><description>Using A Requiredfieldvalidator For A Dropdownlist In Aspnet</description><pubDate>Thu, 14 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Yes, chalk this up to a “well duh” moment since one has been out there for quite a while. But hey, never stop learning, right?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Typically when I’m working with DropDownLists on my web pages, I like to add a “Select…” option to the list to prompt the user for a value. I could always specify a default value when loading the page, but more often than not it adds to the confusion for my end users. So the basic DropDownList looks like this:&lt;/p&gt;
&lt;p&gt;One quick note, which I had discovered along the way. The &lt;strong&gt;AppendDataBoundItems&lt;/strong&gt; property will take any statically created ListItems you have in the control and bind them to the DropDownList before your databound elements are added. This is nice because it prevents you from having to do any fancy data sorting tricks or manual code behind additions of ListItems. The only downside to this is that if you clear the DropDownList and rebind the control, (say to present a new set of options) you’ll lose the static items. But for most of your “one time” loads, this works great.&lt;/p&gt;
&lt;p&gt;So lets attach a basic RequiredFieldValidator control to this DropDownList since we want to make sure a value has been specified:&lt;/p&gt;
&lt;p&gt;This validator displays an * next to the control itself and the error message is getting piped over to a ValidatorSummary control (not shown).&lt;/p&gt;
&lt;p&gt;The problem with this configuration is that by default, the SelectedIndex is set to 0 for the DropDownList when it is databound. If you were to drop a simple RequiredFieldValidator and target the drop down list, it would evaluate as Valid every time you submitted, since it treats –1 as a legitimate value.&lt;/p&gt;
&lt;p&gt;The trick to solving this problem is to use the &lt;strong&gt;InitialValue&lt;/strong&gt; property that comes with the RequiredFieldValidator. The InitialValue property tells the validator what the state of the targeted control was at page load, so that the control is valid if it has data in it and its not equal to the initial value specified. Our updated RequiredFieldValidator looks like this:&lt;/p&gt;
&lt;p&gt;And that’s all there is to it! No need to write any fancy client side validation, any custom server side validation controls, no special value tricks. Believe me, I’ve been through them all. You can customize your InitialValue however you like (even if you bind all of your data items dynamically) and you are set.&lt;/p&gt;
</content:encoded></item><item><title>Fixing Windows 7 User Profile Service Woes</title><link>https://dillieo.me/posts/development/2010-01-11-fixing-windows-7-user-profile-service-woes/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-01-11-fixing-windows-7-user-profile-service-woes/</guid><description>Fixing Windows 7 User Profile Service Woes</description><pubDate>Mon, 11 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve run into this pesky little problem now twice. Once on my machine at home and this morning on my machine at work.&lt;/p&gt;
&lt;p&gt;When I attempted to login to the site, I got the following message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;User Profile Service failed login.&lt;/p&gt;
&lt;p&gt;User profile cannot be loaded.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This can be a rather scary message to receive, especially if you’ve logged out of your machine successfully and haven’t done anything crazy to it. What’s worse is that one time I received this message with additional details saying the profile was corrupt, though upon inspection I couldn’t see anything wrong with the files in the profile.&lt;/p&gt;
&lt;p&gt;Searching for solutions on the Internet have brought up a lot of Vista related solutions, some of which involve folder and file manipulations that don’t exist in my Windows 7 install.&lt;/p&gt;
&lt;p&gt;While I haven’t tracked down the root cause of the issue. The primary symptom I’ve seen both times I’ve run into it relates to something gone wacky with the profile data in the registry.&lt;/p&gt;
&lt;p&gt;I know the prospect of doing “registry surgery” seems daunting to most folks, the Windows folks were smart enough to make a backup of your profile when the login goes bad and “rebuilds” your profile with a temporary one.&lt;/p&gt;
&lt;p&gt;The solution for me (and hopefully you) comes by simply replacing your current registry with the backed up one. To do this, log in under an Administrator account and follow the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start up &lt;strong&gt;regedit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate down to the registry path to the &lt;code&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList&lt;/code&gt; folder and expand this folder out.&lt;/li&gt;
&lt;li&gt;You’ll notice a bunch of the profile SIS, in which none of them will match your login Id that you’re familiar with. However, you should see a folder that is named with a profile Id with a .bak extension attached to it.&lt;/li&gt;
&lt;li&gt;Delete the matching folder that &lt;strong&gt;DOES NOT&lt;/strong&gt; have the .bak in its name.&lt;/li&gt;
&lt;li&gt;Rename the profile folder to get rid of the .bak in its name.&lt;/li&gt;
&lt;li&gt;Log out of the Administrator account and log back in under the faulty profile.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And that has done the trick!&lt;/p&gt;
</content:encoded></item><item><title>Chesterton Poets Rationalists And Code</title><link>https://dillieo.me/posts/development/2010-01-05-chesterton-poets-rationalists-and-code/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-01-05-chesterton-poets-rationalists-and-code/</guid><description>Chesterton Poets Rationalists And Code</description><pubDate>Tue, 05 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I?m only a few pages in so far on GK Chesterton?s &lt;em&gt;Orthodoxy&lt;/em&gt;, but I?m already finding a lot of great insights. Chesterton makes no bones about it that he isn?t out to prove Christianity or anything, but just show what happened in his own life. But even by reading that there are a lot of insights to find.&lt;/p&gt;
&lt;p&gt;Chesterton begins by talking about insanity, and makes the point of saying that the insane are the folks that are not the ones that have not lost their reason, but are the ones that have abandoned everything to reason and have no imagination whatsoever.&lt;/p&gt;
&lt;p&gt;One particular metaphor really struck a chord with me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The general fact is simple. Poetry is sane because it floats easily in an infinite sea; reason seeks to cross the infinite sea, and so make it finite. The result is mental exhaustion, like the physical exhaustion of Mr. Holbein. To accept everything is an exercise, to understand everything a strain. The poet only desires exaltation and expansion, a world to stretch himself in. The poet only asks to get his head into the heavens. It is the logician who seeks to get the heavens into his head. And it his head that splits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The analogy of the sea I find rather interesting. It isn?t that by floating on the sea that we?re not thinking or being rational, it is that we acknowledge that trying to chart the whole thing out is a futile attempt and detrimental to our own well being.&lt;/p&gt;
&lt;p&gt;Now how does this apply to code? By means of a loose analogy (I wouldn?t have been so loose with an analogy up to this point, so I think Chesterton is already doing a good work in me 8^D) the way I often work with an application that I?m debugging or taking over is to get to know the ?character? or the ?feel? of the program before I even bother with the code. Even when I?m debugging code, I?ll often step over lots of methods just to see how the program ?reacts? to a given situation or piece of data and work from there. Once I have seen how the program behaves, I can then figure out where things might have gone wrong and begin to dig deeper into the code itself at a particular spot.&lt;/p&gt;
&lt;p&gt;I consider this ?floating? in the application. If the first thing I did was to simply read all the source code, and thus try to map the application, I?d probably go insane. I?m incapable of retaining that kind of knowledge, not to mention the fact that I would have to do this with the dozen or so applications I maintain to some degree at work. Doing this allows me to enjoy the application more for what it is as a whole, but also enjoy the application in its specific nuances, as I journey over to this method or that and examine it.&lt;/p&gt;
&lt;p&gt;Again, I?ll admit its a loose analogy, but oddly enough it seems to fit in my odd way of thinking (remember, I am fluent in weirdo). While Chesterton is making his point to talk about the macrocosm of things like truth, I see it also pertaining to the microcosm of my small world of writing code.&lt;/p&gt;
</content:encoded></item><item><title>Welcome To Mmx Thoughts And Resolutions</title><link>https://dillieo.me/posts/development/2010-01-03-welcome-to-mmx-thoughts-and-resolutions/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2010-01-03-welcome-to-mmx-thoughts-and-resolutions/</guid><description>Welcome To Mmx Thoughts And Resolutions</description><pubDate>Sun, 03 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;By means of a &quot;yes, I&apos;m fluent in weirdo&quot; intro to the new year, did you know that MMX is the roman number for 2010? Furthermore, did you know that in 1996, Intel released the Pentium MMX chip, which stood for &quot;MultiMedia eXtensions&quot; and was the first step in getting more graphics oriented processing on the chip itself. However, if you want to play the &quot;Terminator Card&quot; you COULD wonder a bit more and ponder that maybe, just maybe, the Pentium MMX chip was ACTUALLY reverse engineered from some kind of chip they found that was really from 2010, and now we&apos;re spiraling down some crazy path towards Skynet, or the Twitter Monster, or something else?&lt;/p&gt;
&lt;p&gt;Regardless, Happy New Year everybody!!! I hope you had a rockin&apos; or relaxing transition. For me, I had no intentions of staying up until midnight, but the Mrs. and I watched a movie that kept us engaged until midnight. Then queue up the &quot;mini war&quot; since the sound of fireworks and various handguns cracks even louder against the hill in which we live. Fortunately the dogs did not freak and the kids didn&apos;t wake up. I gave my wife a kiss and fell asleep.&lt;/p&gt;
&lt;p&gt;New Years are typically about resolutions, to which I&apos;ve abstained from in the past. I&apos;ve always believed that if I had to use a specific day to get myself onto the path of discipline and regiment, then maybe I was a bit too lazy. However, this past year has opened up my eyes to the fact that I DO need to get a few things going and this is the perfect time to take that first step in a new direction. While I&apos;m not sure I&apos;ll pull all of these off, here are the three things that I&apos;d like to see happen the most this year.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Read more books&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Outside of the blogs and occasional Star Wars book I read with, I&apos;m looking to read more stuff to broaden my base. Here&apos;s the list so far:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Bible : I&apos;ve never actually done it all in a year and our church is doing a series this year to make it happen. Perfect timing!&lt;/li&gt;
&lt;li&gt;GK Chesterton&apos;s &lt;em&gt;Orthodoxy:&lt;/em&gt; Three or Four blogs I read mentioned this book or quoted it within a span of a week, so I figure this was a sign of a good place to start. I just got it in from the library, so I&apos;m eager to start.&lt;/li&gt;
&lt;li&gt;Something by Andrew Walls, or Lamin Sanneh, or Philip Jenkins: Recommended to me as experts on the &quot;global church&quot; or &quot;world Christianity&quot; as it is defined now.&lt;/li&gt;
&lt;li&gt;Twilight Series: I&apos;ve already read the first one, but owe it to the Mrs. to finish off the series.&lt;/li&gt;
&lt;li&gt;???: I need more suggestions! That&apos;s where you come in, fellow reader. Give me some ideas! Shoot, I&apos;ll even learn Python if there&apos;s a good book covering it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;2. Get Back into Running&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I live in a cross county runners dream. Trails and hills in every direction from my house. Weather that never gets too hot and even the days it would be snowing it isn&apos;t too deep that I couldn&apos;t go into a run. I can&apos;t tell you how many times I&apos;ve rolled down the window on the way to work or the store and the smell has brought me back to a cross county meet or run I went on and the great memories therein. It may start out as a simple 3 mile run on the weekends while the girls take a nap, but I&apos;ll be on the trails nonetheless.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Get a Couple small Projects Going (and make $$$)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a couple of ideas I have been kicking around that would hopefully not take too much work to put into place, and make a bit of money on the side. Nah, it wouldn&apos;t replace my career, but it would help cover the bills and make a few extra coffee runs for me and the Mrs. More details to come on these.&lt;/p&gt;
&lt;p&gt;So that&apos;s what this year is looking like for starters. How about yours?&lt;/p&gt;
</content:encoded></item><item><title>Spreading Some Musical Christmas Cheer</title><link>https://dillieo.me/posts/growth/2009-12-20-spreading-some-musical-christmas-cheer/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-12-20-spreading-some-musical-christmas-cheer/</guid><description>Spreading Some Musical Christmas Cheer</description><pubDate>Sun, 20 Dec 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;O Holy Night&lt;/em&gt; is by far my favorite Christmas carol of the season. While I&apos;m not a collector of different versions of the song, I do tend to attune ear a bit more when I hear a new version on the radio or elsewhere.&lt;/p&gt;
&lt;p&gt;A few years back, Jen and I were following the series &apos;&lt;a href=&quot;http://en.wikipedia.org/wiki/Studio_60_on_the_Sunset_Strip&quot;&gt;Studio 60 on the Sunset Strip&lt;/a&gt;&apos; which was a drama style show set to follow the behind the scenes of a SNL type show. One of the episodes close to Christmas time was reflecting upon the recent Hurricane Katrina issues, they have a New Orleans Band play a song on the show. The song was &lt;em&gt;O Holy Night&lt;/em&gt;, and while it wasn&apos;t my favorite rendition, it is definitely up there as my top 3.&lt;/p&gt;
&lt;p&gt;Imagine my surprise then when at the end of the episode they displayed a brief message saying &quot;Download this song for free on the show&apos;s website.&quot; I jumped at this immediately the next morning and have added it to my Christmas collection.&lt;/p&gt;
&lt;p&gt;Since the song was/is free, I figured this might be a nice way to spread some holiday cheer to any of the readers out there. It is a nice mellow rendition of the song, with some good New Orleans flair (it is a brass quartet if memory serves) with a little bit of that &quot;Studio&quot; flair added on to the end. For those of you that want to follow along with the lyrics, here they are in full:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;O Holy Night! The stars are brightly shining, It is the night of the dear Saviour&apos;s birth. Long lay the world in sin and error pining. Till He appeared and the Spirit felt its worth. A thrill of hope the weary world rejoices, For yonder breaks a new and glorious morn. Fall on your knees! Oh, hear the angel voices! O night divine, the night when Christ was born; O night, O Holy Night , O night divine! O night, O Holy Night , O night divine!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Led by the light of faith serenely beaming, With glowing hearts by His cradle we stand. O&apos;er the world a star is sweetly gleaming, Now come the wisemen from out of the Orient land. The King of kings lay thus lowly manger; In all our trials born to be our friends. He knows our need, our weakness is no stranger, Behold your King! Before him lowly bend! Behold your King! Before him lowly bend!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Truly He taught us to love one another, His law is love and His gospel is peace. Chains he shall break, for the slave is our brother. And in his name all oppression shall cease. Sweet hymns of joy in grateful chorus raise we, With all our hearts we praise His holy name. Christ is the Lord! Then ever, ever praise we, His power and glory ever more proclaim! His power and glory ever more proclaim!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Enjoy and Happy Holidays (since there are too many holidays to list here 8^D)&lt;/p&gt;
&lt;p&gt;[:: Sean ::]&lt;/p&gt;
&lt;p&gt;https://www.sugarsync.com/pf/D6057691_0670148_677577&lt;/p&gt;
</content:encoded></item><item><title>Its The Semantics Silly</title><link>https://dillieo.me/posts/development/2009-12-17-its-the-semantics-silly/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-12-17-its-the-semantics-silly/</guid><description>Its The Semantics Silly</description><pubDate>Thu, 17 Dec 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was a budding computer geek nearing the end of high school, I attended a &quot;meet and greet&quot; at one of the Universities I was applying at to see the campus, see the program, and get a feel of things. After the presentation of the curriculum and the highlights, there was an open question period. Not afraid to look stupid, I tossed out the question &quot;What language or technology should I learn so I can get the best job when I&apos;m done with my degree?&quot; I think nearly every aspiring programmer has asked this question looking for the &quot;inside track&quot; that the experts already know about.&lt;/p&gt;
&lt;p&gt;The answer I received was a little odd when I first heard it. I was told, &quot;Don&apos;t worry about a particular technology. The industry changes so fast that there will most likely be new technologies that weren&apos;t there when you first started. Focus on getting your degree, knowing the basics, and everything will fall into place.&quot; I took this to heart and found that while I was learning the basics of objects and pointers in class, I was teaching myself HTML and Javascript on the side since that was the stuff I heard was new and I loved it. Later on I&apos;d be teaching myself Perl and MySQL while sitting in on some computer graphics classes (just don&apos;t tell my prof that).&lt;/p&gt;
&lt;p&gt;Upon graduation, this sage advice had proved to be precisely true. The &lt;strong&gt;semantics&lt;/strong&gt; of programming included an object oriented model, proper documentation techniques, software engineering models, and other fundamental models of loops, data structures, and the like. However, the &lt;strong&gt;syntax&lt;/strong&gt; of programming was still steeped heavily into Java and C++. The .Net platform was just getting off the ground into 1.0 format. I actually left college with a pretty strong Perl knowledge under my belt (self-taught).&lt;/p&gt;
&lt;p&gt;Had I focused on the syntax of my programming career, I would be stuck working in a Perl or C++ shop (I always had small issues with Java) and would never have left that. That isn&apos;t to say that Perl or C++ are bad, but it is to say that when I stumbled upon PHP, the transition was easy. Instead of working with the Perl::DBI library, I simply used the built in methods that integrated with MySQL and iterated through a different structure of the result set. This has also applied later to transitioning into the .Net language sphere. The &lt;strong&gt;syntax&lt;/strong&gt; was different, but the &lt;strong&gt;semantics&lt;/strong&gt; of good programming and structure still applied and I could move on without much hassle.&lt;/p&gt;
&lt;p&gt;As I&apos;ve become more seasoned along this journey called life, I&apos;ve found that the same concepts apply. From a purely technological standpoint, I&apos;ve lived through the &quot;syntax&quot; of rotary phones, to push button phones, to big &quot;brick&quot; cell phones, to cell phones that you lose in your pocket. This has dramatically affected how society functions as a whole. Similarly, the &quot;syntax&quot; of my world has gotten increasingly larger as I went from growing up in a small town, to school in a major metropolitan city, to even doing a bit world travel.&lt;/p&gt;
&lt;p&gt;Through all of this, the &quot;semantics&quot; of life has remained relatively unchanged and applies to each situation. Love thy neighbor as thyself. Seek goodness, truth, and beauty in all things. People are more important than ideas. These things help shape how I interact with the syntax, but also make the syntax of life easier to transition into.&lt;/p&gt;
&lt;p&gt;To the potential programmer reading this, focus on your fundamentals, and the particulars of your language/technology/methodology will work itself out.&lt;/p&gt;
&lt;p&gt;To everybody else (and the programmer too) reading this, focus on your world view, the fundamentals of what and why you believe, and the particulars of a given situation, event, person will work itself out.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Data Management Conclusion</title><link>https://dillieo.me/posts/development/2009-12-08-lifestyle-data-management-conclusion/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-12-08-lifestyle-data-management-conclusion/</guid><description>Lifestyle Data Management Conclusion</description><pubDate>Tue, 08 Dec 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve just completed a series about &quot;lifestyle data management&quot;, which loosely translated means how can I keep dibs on all my e-mail, tweets, facebook updates, friend&apos;s blogs, and news/tech/coding blogs without going insane. You can read the introduction &lt;a href=&quot;/lifestyle-data-management-introduction&quot;&gt;here&lt;/a&gt;. My first entry on Netvibes Wasabi can be found &lt;a href=&quot;lifestyle-data-management-netvibes-wasabi&quot;&gt;here&lt;/a&gt;. My second entry on Streamy can be found &lt;a href=&quot;/lifestyle-data-management-streamy&quot;&gt;here&lt;/a&gt;. My third entry on Threadsy/Feedly can be found &lt;a href=&quot;/lifestyle-data-management-threadsyfeedly&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After spending the weekend and a half day yesterday snowed in about the apps I&apos;ve reviewed, I wanted to wrap the three up with a nice one word summary of my opinions on each web app and a few pros and cons:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Netvibes Wasabi&lt;/strong&gt; (&lt;a href=&quot;http://wasabi.netvibes.com&quot;&gt;link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Robust &lt;strong&gt;Pros:&lt;/strong&gt; The use of widgets and an open developer network gives you access to nearly anything you can think of to customize your home page. The new &quot;smart reader&quot; lives up to its name and allows you to keep good dibs on all your feeds. &lt;strong&gt;Cons:&lt;/strong&gt; Having a lot of feeds spread across multiple tabs (or even a single tab) beings to infringe upon the usability and efficiency of your home page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Streamy&lt;/strong&gt; (&lt;a href=&quot;http://www.streamy.com&quot;&gt;link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Streamlined &lt;strong&gt;Pros:&lt;/strong&gt; The home page is well organized for all of the core functionality you need between your feeds and networks. The added widget for e-mail and the mini IM chat features are a big bonus. &lt;strong&gt;Cons:&lt;/strong&gt; The suggested reading column had few &quot;relevant&quot; items to me. It could not be minimized or removed for me to fill my own content. Lack of individual feed layout customization started to lead to usability issues to to a massive list of feed items.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Threadsy&lt;/strong&gt; (&lt;a href=&quot;http://www.threadsy.com&quot;&gt;link&lt;/a&gt;) / &lt;strong&gt;Feedly&lt;/strong&gt; (&lt;a href=&quot;http://www.feedly.com&quot;&gt;link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Innovative &lt;strong&gt;Pros:&lt;/strong&gt; The quick and simple way to respond inline to comments in Threadsy (both Inbound and Unbound) really makes this app run fast and smooth. Feedly&apos;s various layout approaches makes it easy to customize a layout for your feed group that maximizes readability. &lt;strong&gt;Cons:&lt;/strong&gt; Threadsy still has some beta bugs that can cause some interaction problems at times. The lack of auto-refresh (outside of the 10 minute browser cache) starts to impose upon the continuous feel of news browsing.&lt;/p&gt;
&lt;p&gt;Overall there are no major setbacks that should keep you from using any of these applications. That&apos;s probably part of my dilemma. I&apos;ll use one app for a month or so, then get enamored with a feature of another application, and then switch over there for a while. The endless cycle ensues. 8^D&lt;/p&gt;
&lt;p&gt;So which app have I chosen as my personal setup? Oddly enough, I&apos;ve chosen a blend of Threadsy and Wasabi. After the initial curve of setting things up and understanding the interface (this took maybe a day) I really became excited about the productivity I found being able to quickly answer an e-mail, or post a comment to Facebook without having to scroll through a long history log of changes. Similarly, the way Netvibes Wasabi has their smart reader organized, I&apos;ve been able to easily navigate around to specific groups or just go up to &quot;All Feeds&quot; and see a nice timeline of things coming in, refreshed in a prompt manner with easy visual cues to the updates.&lt;/p&gt;
&lt;p&gt;I hope this series has been helpful in helping you look into some solutions for your own &quot;lifestyle data management.&quot; If you&apos;ve settled into one of these, or something else, share your experiences so I have something else to peek at and pass along.&lt;/p&gt;
</content:encoded></item><item><title>Lifestyle Data Management Streamy</title><link>https://dillieo.me/posts/development/2009-12-03-lifestyle-data-management-streamy/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-12-03-lifestyle-data-management-streamy/</guid><description>Streamy Logo</description><pubDate>Thu, 03 Dec 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve started a series about &quot;lifestyle data management&quot;, which loosely translated means how can I keep dibs on all my e-mail, tweets, facebook updates, friend&apos;s blogs, and news/tech/coding blogs without going insane. You can read the introduction &lt;a href=&quot;/lifestyle-data-management-introduction&quot;&gt;here&lt;/a&gt;. My first entry on Netvibes Wasabi can be found &lt;a href=&quot;/lifestyle-data-management-netvibes-wasabi&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As we dig into our toolbox some more, the next tool we come across is &lt;a href=&quot;http://www.streamy.com&quot;&gt;Streamy&lt;/a&gt;. Streamy lists itself to &quot;discover and share with friends everywhere. ... The best stories on the web are here. Blogs, Twitter, Facebook and more.&quot; Streamy is setup to function as a home page just like Netvibes does. However, there is not the focus on widgets and tabs like Netvibes has. To date, Streamy has only about 3 widgets, for weather, stocks, and most importantly, e-mail. Streamy has taken the approach to be more tightly integrated with some of the most popular social networks: Facebook, Twitter, Digg, Flickr, and Friendfeed. Once you setup your account to include your logins to these networks, they will show up as icons along the top of your page, as well as enable some additional widgets for getting to related features of each network.&lt;/p&gt;
&lt;p&gt;Streamy allows you to create numerous columns on your front page in which to store your widgets. The leftmost column is the &quot;suggested reading&quot; column that works some kind of magic between your feeds and their main news feeds in order to present to you what they believe you would enjoy reading for news. You are given the ability to hide links that you don&apos;t want to see and exclude news sources that you deem inappropriate (there have been a few instances during the beta where some spam/porn posts slipped into that stream, but they fixed it promptly and I was able to exclude them immediately).&lt;/p&gt;
&lt;p&gt;To some extent, I believe the Streamy folks are trying to create a social network of their own, because every news posting you have has the option to share or comment about it. These comments don&apos;t go out to Twitter or Facebook, but instead go into the internal Streamy network of folks. Those that have the same posting displayed will see your comments. It provides a means of seeing what other folks are reading that have like interests and to keep the conversation flowing through that. In addition, there are a lot of user created groups for those to share conversations and news stories that are relevant.&lt;/p&gt;
&lt;p&gt;After importing my feeds, adding my accounts, and working with the widgets and columns, I created my home page that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blog/image.axd?picture=2009%2f12%2fStreamyLayout.PNG&quot; alt=&quot;Streamy Layout&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, I created two additional columns to the main feed. Once contains a live feed of all of my blog subscriptions, and another that has the widgets for my Twitter and Facebook updates. I added the weather for fun and e-mail because I wanted that for live updates. It took me a while to figure out the master blog feed, but THAT right there was the biggest benefit, since it allowed me to keep a basic bead on the latest news without having to go into my subscriptions section. It should be worth noting that the sections on the left (Home) and right (Status/Contacts) can be collapsed to give you a little more screen space to work with. One thing I stumbled upon during my initial setup was that I could add my Instant Messenger accounts for MSN, AIM, Google Talk, and Yahoo messenger. This was a great find! I don&apos;t use IM all that much anymore, but I do have a few friends still out there and having a simple web chat window to talk with them is quite nice. If anything, it prevents me from having to install anything else. The window itself is unobtrusive when using it and can easily be minimized if I need to focus on other things on the page. The main page updates itself every minute or so and everything is quickly accessible. I should also point out that there is some text that says &quot;expand&quot; next to each Twitter/Facebook post, which gives you quick access to reply/retweet if you need to.&lt;/p&gt;
&lt;p&gt;When I need to do a little more in depth Twittering or Facebooking, I simply click the appropriate icon near the streamy logo. Here&apos;s what it looks like for Facebook:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blog/image.axd?picture=2009%2f12%2fStreamyFacebook.PNG&quot; alt=&quot;Streamy Facebook Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;and for Twitter (I added a few widgets to it):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blog/image.axd?picture=2009%2f12%2fStreamyTwitter.PNG&quot; alt=&quot;Streamy Twitter Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I should also point out now that if I click on my profile in the top right corner, I can update my status and have it to post to any of the social networks I&apos;ve registered with in Streamy. This is a nice feature that prevents you from having to go to Ping.fm or other sites.&lt;/p&gt;
&lt;p&gt;Not to brush over these items, but they&apos;re pretty straightforward and simple, which I like. The real meat and potatoes here is when I go to my subscriptions. Streamy will automatically import your Bloglines or Google Reader subscriptions (by providing account info) or if you have an OPML file, it will import that as well. Importing my OPML file went fast and my groups were created for me. By clicking the &quot;Subscriptions&quot; text next to the Streamy logo, I&apos;m brought to my subscriptions page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blog/image.axd?picture=2009%2f12%2fStreamySubscriptions.PNG&quot; alt=&quot;Streamy Subscriptions Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was really impressed with how clean and simple the layout it. I have a master list of all my feeds showing, with the breakdown of categories on the left hand side and the number of unread items. Similarly, selecting a particular group will expand it to display the new feeds for each group:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blog/image.axd?picture=2009%2f12%2fStreamySubscriptionsGroup.PNG&quot; alt=&quot;Streamy Subscription Group View&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Streamy has a nice keyboard based navigation built in to its news feeds. I can hit the &quot;A&quot; key to open the news item at the top of page, then tap &quot;S&quot; key to close it (marking it read). I next hit the &quot;F&quot; key to move to the next item, or the &quot;D&quot; key to move to the previous. Navigating in this fashion makes it very quick and easy to go through all of my posts. Viewing an individual post gives you an overlay to your main feed, so that you don&apos;t lose your place:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blog/image.axd?picture=2009%2f12%2fStreamyPost.PNG&quot; alt=&quot;Streamy Post View&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll see that in the top right hand is an icon to close the post (right) or make it a favorite (left). The middle icon, is the share icon, which I find really innovative. It brings up a small window that allows you to share it with friends you have in your Streamy network or any of the networks you&apos;ve configured in your profile. The combination of the sharing and the commenting built into the feeds has often given Streamy a comparison to FriendFeed, but with a lot more benefits. While I haven&apos;t done much interaction with FriendFeed, I can definitely see how the comparison applies. With the merging of Facebook and FriendFeed, Streamy might be able to take up the banner and provide those services a lot of users are looking for.&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. In my opinion, Streamy is simple, clean, and straightforward. This is a very good quality to have in a web application. I&apos;ve seen plenty of web sites and web applications out there that try to out glitz you with too many banners or effects. I&apos;ve also seen too many web sites and web applications out there that pack up so much functionality that you&apos;re left with a really bad layout or a site that runs too slow because it is trying to do 20 different things at once. Streamy threads this needle perfectly. As a programmer, I consider this high praise, though it sounds rather bland when reading it here.&lt;/p&gt;
&lt;p&gt;I did have a fair share of concerns though with Streamy to be noted. I was never impressed with the suggested stories feed. It could be just my taste in news, which I try to keep diverse, but I felt like I was getting peppered with too many celebrity or advertising style news articles in this feed. Over the course of the month I did notice that the quality of the articles was getting better, but nothing I was interested in seeing. To that extent, I tried to simply minimize the area that has the suggested news and move my master blog feed into that column, but Streamy does not allow this. I then started running to some clutter issues on my main page. In addition, I had some continual issues trying to import certain feeds into my account. It wasn&apos;t related to only one site, and multiple attempts over time proved not to help. The final thing I noted was that when you bring up a post in the master feed, there are little icons to read the next and previous news items, which is a nice alternative to the keyboard approach, but doesn&apos;t appear anywhere else, when viewing posts through the groups or an individual feed. I think that would work great anywhere you are viewing posts.&lt;/p&gt;
&lt;p&gt;None of these are deal breakers and Streamy is a very solid app worth checking out! I&apos;m not going to make comparisons between all of the products until I finish my reviews. As mentioned previously, if you&apos;re using Streamy, or are checking it out after reading this, add a comment and let me know your thoughts.&lt;/p&gt;
</content:encoded></item><item><title>Diy Cheap Andamp Effective Pot Rack</title><link>https://dillieo.me/posts/development/2009-11-09-diy-cheap-andamp-effective-pot-rack/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-11-09-diy-cheap-andamp-effective-pot-rack/</guid><description>Homemade Pot Rack</description><pubDate>Mon, 09 Nov 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When Jen and I got our first house, we were excited to have a decent sized kitchen. However, we still didn&apos;t have that much cabinet space and we had a new set of pots and pans that needed a good home. We loved the idea of a pot rack but our kitchen was part of the vaulted ceiling for the house. For the life of us, we couldn&apos;t find a wall mountable pot rack &lt;em&gt;[or one for a decent price]&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So donning our thinking caps, we came up with a pot rack that is quite handy, super cheap, and ALSO gives you the chance to add some personal flair to it. So head out to your favorite home improvement store and take the following path:&lt;/p&gt;
&lt;p&gt;&amp;amp;;nbsp;&lt;/p&gt;
&lt;p&gt;Prep. Measure the length that you want the curtain rod. In both our kitchens so far, we&apos;ve done it about a couple inches longer on both sides of the window in our kitchen. Mounting it high enough there allows for convenience without obstructing our nice view. You&apos;ll also want to get a feel for the size of the gap of your pots and pans that you&apos;re going to hang them on. You don&apos;t want the hook to be too thick so that they hang down, but too thin and they&apos;ll bend under the weight. You can always take a pot with you too. 8^D&lt;/p&gt;
&lt;p&gt;1. Stop off in the bathroom department &lt;em&gt;[What?! Trust me on this]&lt;/em&gt;. Pick up a package of shower curtain rings. You&apos;ll want the metal ones that don&apos;t open up for maximum safety. The last thing you need is a ring opening up and letting a big pot come crashing down in the middle of the night. Been there, done that. If you can&apos;t seem to find them with the bath stuff, you can also use curtain rings.&lt;/p&gt;
&lt;p&gt;2. Now head off to the wood section. Typically there will be a section of wooden dowels. These are the long round rods that look like closet rods or curtain rods. You could technically use a closet rod, but it gets to be a little too thick in diameter. The main point is to find one the length you desire and that the rings can slide over and still leave a small gap for the hooks.&lt;/p&gt;
&lt;p&gt;3. The third stop is the &quot;fasteners&quot; section. You&apos;re looking for S-Hooks. Yep, they look like an S. You&apos;ll hook one end to the rings and the other end to the pot. As mentioned above, get the hooks as thick as you can, but still allows for the pot to slide on and off easily. Sometimes you can have issues with the S-Hooks falling off the rings if the rack is a little too high up or you&apos;re you pull the pot off too fast. I went a little &quot;over budget&quot; the second time and picked up some hooks that had spring type clips on one side and an open hook on the other (see picture above) to make sure I didn&apos;t have this issue. They ran me $2 a piece, so if you&apos;re going for a cheaper route, start with S-Hooks and see how they handle for you. We got by just fine with our first pot rack.&lt;/p&gt;
&lt;p&gt;4. Your final stop is gardening &lt;em&gt;[What?! You talk the wacky again!]&lt;/em&gt;. What you&apos;re looking for here are two plant hangers. There are usually a handful of them that have some nice scroll design on them, which allows for the dowel to fit snugly into the scroll. This is another instance where you could use a closet rod hanger or even a curtain rod hanger. The important points are that you have a snug fit on the dowel so that it doesn&apos;t move when you put pots and pans off. Equally important is the ability to get some good sized screws into the wall to mount the hangers, so that they can support the load. If the hangars don&apos;t come with special inserts to reinforce the drywall, head back over to the &quot;fasteners&quot; section and find some.&lt;/p&gt;
&lt;p&gt;Head on home and start assembling! All in all this should be pretty easy. For us, we mounted the plant hangers, slid the rings onto the dowel, and then inserted the dowel into the hangers. We put the S-Hooks onto the rings, and then hung the pots! Not counting my &quot;super hooks&quot; I purchased later, the entire project cost us about $20, maybe $25 tops.&lt;/p&gt;
&lt;p&gt;The other nice thing, as mentioned before, is that you can add your own bling to the pot rack as you see fit. You can stain or paint the dowel in a color that goes with your kitchen. Or if the budget allows, you can swap out your dowel altogether for a curtain rod or shower curtain rod that is made of a strong iron or metal and has some fancy patterns on it. You want to make sure the rod doesn&apos;t bow at all when the pots are hung, otherwise that is a sign that there is too much weight and you risk that loud banging in the middle of the night scenario discussed above.&lt;/p&gt;
&lt;p&gt;Enjoy! We&apos;ve loved our pot rack and one day we might even bling it out a bit more. 8^D&lt;/p&gt;
</content:encoded></item><item><title>In Tribute The Water Canyon Brain Surgeon</title><link>https://dillieo.me/posts/development/2009-10-29-in-tribute-the-water-canyon-brain-surgeon/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-10-29-in-tribute-the-water-canyon-brain-surgeon/</guid><description>In Tribute The Water Canyon Brain Surgeon</description><pubDate>Thu, 29 Oct 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I found out earlier this week that my favorite coffee shop in my home town, the Water Canyon, is closing its doors this weekend. There&apos;s a chance that it&apos;ll be opening again under new management, but the way the economy is, sometimes the &quot;reopen&quot; only lasts for a month or two. I saw this with a coffee shop out here in Prescott.&lt;/p&gt;
&lt;p&gt;Regardless, I thought it would be fitting to put out a nice little tribute. The Water Canyon became a staple in &quot;old town Yucca&quot; shortly after I graduated from high school. It was a cozy place that had bands on occasion, wireless internet &lt;em&gt;[trust me, this was BIG in a small town like Yucca]&lt;/em&gt;, and most importantly, GREAT coffee. One night while there I stumbled upon a drink called the &lt;em&gt;Brain Surgeon&lt;/em&gt; I think this thing was designed for those that need to stay up all night, but my half coffee blood adapted quite early to it and I drink it whenever I&apos;m feeling like having something a little more flavorful.&lt;/p&gt;
&lt;p&gt;The beautiful thing about the &lt;em&gt;Brain Surgeon&lt;/em&gt; is that you get a really strong coffee flavor, with this undertone of sweetness after you&apos;ve taken a drink. Having a little extra caffeine ramped into the drink also helps a bit (see below). 8^D I guess it really provides this nice balance between two extremes (strong coffee and sweet drink) with a little more slant towards the coffee side to keep it &quot;pure&quot; for coffee junkies like me. 8^D&lt;/p&gt;
&lt;p&gt;Since I didn&apos;t get a chance to get back to the Water Canyon all that often, I decided to work on perfecting my own copy of the recipe wherever I went. Interestingly enough, the &lt;em&gt;Brain Surgeon&lt;/em&gt; sparked a nice friendship between a coffee shop owner out in Vegas at the hospital when the girls were there. Here&apos;s how I build my &lt;em&gt;Brain Surgeon&lt;/em&gt; when I&apos;m out and about:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Order a medium/grande sized order of dark roast coffee. The dark roast gives you a stronger taste, and technically has a little less caffeine (if you&apos;re worried about getting too amped up).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Add 4 shots of espresso. You can make it 3 shots if the coffee house knows how to brew some strong espresso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Add 3 to 4 packets of honey to taste and stir like mad. It&apos;s hard to nail this one down since each coffee shop uses different brands of honey.&lt;/p&gt;
&lt;p&gt;The goal is to stir the honey so that it blends into the drink, and doesn&apos;t just slowly coagulate down at the bottom, like a lot of honey I&apos;ve found seems to do. The coffee shop in the hospital used a brand of honey that was pumped in, just like their various flavors. This brand (I wish I knew the name) worked perfect because it actually blended into the coffee and left no residue in the bottom of the cup, which provided the perfect taste balance.&lt;/p&gt;
&lt;p&gt;There you have it! Rather simple, but profoundly good.&lt;/p&gt;
&lt;p&gt;So go out to your coffee shop this weekend and make a &lt;em&gt;Brain Surgeon&lt;/em&gt; in tribute. Keep it in your recipe list for future drinking as well. I will admit it is rather fun to see the look on the barista&apos;s face when you ask for 4 shots of espresso with a straight face. 8^D&lt;/p&gt;
&lt;p&gt;More importantly, to my fellow Yucsters, if you get a chance, go hit up the Water Canyon and order one up before they close your doors and/or post some memories you have of the Water Canyon here.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>How To Sortfind Custom Objects In A List With Vbnet</title><link>https://dillieo.me/posts/development/2009-10-13-how-to-sortfind-custom-objects-in-a-list-with-vbnet/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-10-13-how-to-sortfind-custom-objects-in-a-list-with-vbnet/</guid><description>How To Sortfind Custom Objects In A List With Vbnet</description><pubDate>Tue, 13 Oct 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Oddly enough there is nothing really new here. However, most of the documentation I&apos;ve been sifting through has all been C# related. Since I had to code this up using vb.net at work, I thought it would be helpful to have a reference available for others out there in vb.net land.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lately I&apos;ve really fallen in love with the power that generics, List(Of T) and the like, provide for my day to day operations. &lt;em&gt;[Yes, I know this came out in .Net 2.0 but things run a little slow over here...]&lt;/em&gt; What I especially like to do is create my own custom objects and maintain them in a List collection for easy iteration and retrieval. Recently I created user information object that I use for somebody logged in as part of the data model. I created a List(Of UserInfo) and could add/remove/list these users without hassle. However, I also needed to sort this list from time to time. In addition, I would need to find an individual user to display particular data about them on a page. Doing this took a small amount more work, but is quick and easy once you know what to do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UserInfo Object&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For starters, here is the object I&apos;ve created to store user information (property/method information has been removed for brevity):&lt;/p&gt;
&lt;p&gt;Public Class UserInfo&lt;/p&gt;
&lt;p&gt;&apos; Private Members Private m_UserId As String Private m_FirstName As String Private m_LastName As String Private m_SecurityLevel As Integer Private m_Roles As List(Of String)&lt;/p&gt;
&lt;p&gt;&apos; Public Properties&lt;/p&gt;
&lt;p&gt;Public Property UserId() As String Get Return m_UserId End Get Set(ByVal value As String) value = m_UserId End Set End Property&lt;/p&gt;
&lt;p&gt;Public Property FirstName() As String Get Return m_FirstName End Get Set(ByVal value As String) m_FirstName = value End Set End Property&lt;/p&gt;
&lt;p&gt;Public Property LastName() As String Get Return m_LastName End Get Set(ByVal value As String) m_LastName = value End Set End Property&lt;/p&gt;
&lt;p&gt;Public Property SecurityLevel() As Integer Get Return m_SecurityLevel End Get Set(ByVal value As Integer) m_SecurityLevel = value End Set End Property&lt;/p&gt;
&lt;p&gt;Public Property Roles() As List(Of String) Get Return m_Roles End Get Set(ByVal value As List(Of String)) m_Roles = value End Set End Property&lt;/p&gt;
&lt;p&gt;&apos; Constructors&lt;/p&gt;
&lt;p&gt;Public Sub New()&lt;/p&gt;
&lt;p&gt;m_Roles = New List(Of String)&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;p&gt;Public Sub New(ByVal UserId As String, ByVal SecurityLevel As Integer)&lt;/p&gt;
&lt;p&gt;m_UserId = UserId m_SecurityLevel = SecurityLevel&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;p&gt;Public Sub New(ByVal UserId As String, ByVal Roles As List(Of String))&lt;/p&gt;
&lt;p&gt;m_UserId = UserId m_Roles = Roles&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;p&gt;Public Sub New(ByVal UserId As String, ByVal FirstName As String, _ ByVal LastName As String, ByVal SecurityLevel As Integer, _ ByVal Roles As List(Of String))&lt;/p&gt;
&lt;p&gt;m_UserId = UserId m_FirstName = FirstName m_LastName = LastName m_SecurityLevel = SecurityLevel m_Roles = Roles&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;p&gt;&apos; Public methods&lt;/p&gt;
&lt;p&gt;Public Sub AddUserRole(ByVal RoleName As String)&lt;/p&gt;
&lt;p&gt;If Not m_Roles.Contains(RoleName) Then&lt;/p&gt;
&lt;p&gt;m_Roles.Add(RoleName)&lt;/p&gt;
&lt;p&gt;End If&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;p&gt;Public Sub RemoveUserRole(ByVal RoleName As String)&lt;/p&gt;
&lt;p&gt;If m_Roles.Contains(RoleName) Then&lt;/p&gt;
&lt;p&gt;m_Roles.Remove(RoleName)&lt;/p&gt;
&lt;p&gt;End If&lt;/p&gt;
&lt;p&gt;End Sub&lt;/p&gt;
&lt;p&gt;End Class&lt;/p&gt;
&lt;p&gt;All of this is pretty straightforward. You can easily work with a UserInfo object to modify details and add it into a List collection without a problem.&lt;/p&gt;
&lt;p&gt;But what happens if you need to find a given user within the list, or sort the list after adding several users to it? In the past you&apos;ve had to essentially write your own collection type object, but thanks to existing interfaces and generics, we simply have to implement two features to make this possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IComparer(Of T)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The IComparer interface provides an interface for comparing one object to another. With the advent of generics, we can take the comparer one step further and specify the type of item we are comparing to, which eliminates the need to additional type casting within the method itself.&lt;/p&gt;
&lt;p&gt;With out existing UserInfo object, simply add the following line to the class declaration:&lt;/p&gt;
&lt;p&gt;Then within our method, we need to implement the proper Comparer signature that the interface is looking for:&lt;/p&gt;
&lt;p&gt;Public Function Compare(ByVal x As UserInfo, ByVal y As UserInfo) _ As Integer _ Implements System.Collections.Generic.IComparer(Of UserInfo).Compare&lt;/p&gt;
&lt;p&gt;Return String.Compare(x.UserId, y.UserId)&lt;/p&gt;
&lt;p&gt;End Function&lt;/p&gt;
&lt;p&gt;In our case, we are going to use the UserId as the item to sort with since we know the usernames are going o be unique. The String.Compare() method returns the proper integer comparison (-1 for less than, 0 for equal, 1 for greater than) that the compare method uses when sorting a collection. You can easily wire this method up however you&apos;d like based on what you want to compare. You can even write up multiple comparison type operators, and then feed a given comparison into the sort method of a collection to sort according to your needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Predicate Methods&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In order to find a given user within the collection, we leverage a feature called the Predicate to make this happen. Again, in the old way of doing things you&apos;d have to iterate through your custom object and manually look for the item you wanted. While the predicates are essentially doing the same thing, you can define them in ways that will allow you to return more than a single item. So you can do things like find all items in the collection where the last name is like &quot;son&quot; or something to that effect. I&apos;m no expert on predicates, I&apos;m just learning to use them myself, but there is a nice MSDN article on them &lt;a href=&quot;http://msdn.microsoft.com/en-us/magazine/cc163550.aspx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In our case, we want two simple predicates. One to find a given UserInfo object, and one to find a given UserInfo object based on the user Id (since that is our &quot;primary key&quot;) without having to create the entire object. Defining these methods looks like this:&lt;/p&gt;
&lt;p&gt;Public Shared Function FindPredicate(ByVal User As UserInfo) _ As Predicate(Of UserInfo)&lt;/p&gt;
&lt;p&gt;Return Function(User2 As UserInfo) User.UserId = User2.UserId&lt;/p&gt;
&lt;p&gt;End Function&lt;/p&gt;
&lt;p&gt;Public Shared Function FindPredicateByUserId(ByVal User As String) _ As Predicate(Of UserInfo)&lt;/p&gt;
&lt;p&gt;Return Function(User2 As UserInfo) User = User2.UserId&lt;/p&gt;
&lt;p&gt;End Function&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. When you&apos;re ready to use this object with a collection, you can do simple stuff like this:&lt;/p&gt;
&lt;p&gt;Dim UserList As New List(Of UserInfo) Dim LoadUser As UserInfo Dim LostUser As UserInfo Dim FoundUser AS UserInfo&lt;/p&gt;
&lt;p&gt;LoadUser = New UserInfo(&quot;Sammy&quot;, 25) UserList.Add(LoadUser) LoadUser = New UserInfo(&quot;Hobart&quot;, 50) UserList.Add(LoadUser) LoadUser = New UserInfo(&quot;Fester&quot;, 10) UserList.Add(LoadUser) LoadUser = New UserInfo(&quot;Kozaky&quot;, 25) UserList.Add(LoadUser)&lt;/p&gt;
&lt;p&gt;UserList.Sort()&lt;/p&gt;
&lt;p&gt;LostUser = New UserInfo(&quot;Hobart&quot;, 50) FoundUser = UserList.Find(LostUser)&lt;/p&gt;
&lt;p&gt;FoundUser = UserList.Find(UserInfo.FindPredicateByUserId _ (User.Identity.Name))&lt;/p&gt;
&lt;p&gt;There you have it! Simple and plain and effective. I&apos;m working on redoing the class so you can see it looks like when the interface and predicate functions are added. Stay tuned.&lt;/p&gt;
</content:encoded></item><item><title>Personal Kanban 3 Weeks In</title><link>https://dillieo.me/posts/development/2009-10-08-personal-kanban-3-weeks-in/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-10-08-personal-kanban-3-weeks-in/</guid><description>Personal Kanban Board</description><pubDate>Thu, 08 Oct 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been on a quest to work the &lt;a href=&quot;http://agilemanifesto.org/&quot;&gt;Agile&lt;/a&gt;/&lt;a href=&quot;http://www.scrumalliance.org/&quot;&gt;SCRUM&lt;/a&gt; methodologies into my workplace for a while now. I&apos;m still in the preparation/evaluation phase. We&apos;re a decent size shop, with 6 developers, but the current nature of our work and the departments we support force us to be &quot;lone gun programmers&quot; for the most part. Most of the stuff I&apos;ve read up to this point (and there is a lot out there) point to the concept that you typically have about 7 to 10 members in a SCRUM team.&lt;/p&gt;
&lt;p&gt;Not being completely discouraged, I decided to ask the almighty gurus at &lt;a href=&quot;http://stackoverflow.com/questions/1407189/can-agile-scrum-be-used-by-1-or-2-developers&quot;&gt;StackOverflow&lt;/a&gt; about applying SCRUM to 1 or 2 developers. While the general consensus is that SCRUM itself is indeed for larger teams, there is a lot of Agile methodology that can be used in smaller groups to be successful. One recommendation that came to me was to use a &lt;a href=&quot;http://personalkanban.com/personal-kanban-101/&quot;&gt;personal kanban&lt;/a&gt;. Having heard that word dropped here and there, I was intrigued and decided to invesitgate more.&lt;/p&gt;
&lt;p&gt;In a nutshell, &quot;kanban&quot; is the japanese word for billboard. A guy working for Toyota originally developed a kanban at his office to provide an easy visual representation of what is department was currently doing, and what it had to do. More importantly, it also helped to make sure not too much work was being done at once, because interestingly enough, if you&apos;re workload is at 100%, &lt;a href=&quot;http://personalkanban.com/primers/why-limit-work-in-progress/&quot;&gt;you&apos;re not efficient at all&lt;/a&gt;. A personal kanban is this billboard approach to a department, modified down to you and your workload. At the fundamental level (you can see this in my photo above) you divide your board into three sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Backlog: Work that needs to be done&lt;/li&gt;
&lt;li&gt;Doing (X): Work that is in progress. The (X) indicates how many tasks you can work on at once. Don&apos;t go over that number!&lt;/li&gt;
&lt;li&gt;Done: Stuff you&apos;ve completed. Woot! Happy Dance!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From there, the process is simple. When you get a feature request, bug fix, new project, etc, write it on a sticky note and put it in your &quot;backlog&quot; section. When you go to work on that item, put it in your &quot;doing&quot; section. What&apos;s that, another bug fix came in with a higher priority and you&apos;re at your limit? Well, move something out of the &quot;doing&quot; section back into the &quot;backlog&quot; section and move that one in. It&apos;s that simple. Hey hey! I fixed that bug! Put the sticky note to your &quot;done&quot; section and let it sit there for a day, maybe two. It helps you remember that you&apos;re actually making progress on things.&lt;/p&gt;
&lt;p&gt;That&apos;s it! Its profound in its simplicity. There&apos;s no formula to what goes into your &quot;doing&quot; section or what your maximum tasks is, that is something you figure out for yourself as you continue to work. What&apos;s more important is that it gives you a visual representation of where you&apos;re at and where you&apos;re going. Additionally, it helps my manager see where I&apos;m at if I happen to be out to lunch or something and they wanted a quick progress update. I&apos;ve also found that my mind is a little more cleared up to focus on my work, because I haven&apos;t accidentally crammed 6 bug fixes into my head to remember or work on at the same time.&lt;/p&gt;
&lt;p&gt;After a couple of weeks in, I decided to add a couple of sections that pertain to my work. Again, the beauty of this is that you tailor it to your style and needs. For me, I added the following sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fires: Yeah, the pathetic attempt at a flame integrated into my &quot;doing&quot; section. Sometimes that phone call comes in about something that has to be fixed right now. I put any of those extreme priority items into this special column to help distinguish them.&lt;/li&gt;
&lt;li&gt;Pending Done: Once I&apos;ve finished a bug fix or application update, I do my own testing on it and then notify my end users of the change so they can test it as well. But often enough they are just as busy as I am and might not get to it the same day. I created this &quot;Pending Done&quot; section so that I don&apos;t forget to check up with them. I can&apos;t quite consider the task &quot;done&quot; since I don&apos;t have sign off from them, but I don&apos;t want to lose time by waiting for them to respond. I put the sticky note into here, so I can move another item from my &quot;backlog&quot; section into my &quot;doing&quot; section.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I absolutely LOVE this personal kanban! It has really started to streamline my work, given me a good workflow to work with, and I think I&apos;ve started to peak the interest of a couple of developers in the shop since the board sits right next to me for all to see. I&apos;d suggest you give it a try. Whiteboard, markers, and sticky notes are all standard fare in office land, so it shouldn&apos;t cost you anything out of pocket and it&apos;ll take you all of 5 minutes to get up and running. From you&apos;re on your way to making your work just a little more agile.&lt;/p&gt;
</content:encoded></item><item><title>Windows 7 Dvdcd Driver Install Error Alternate Solution</title><link>https://dillieo.me/posts/development/2009-10-04-windows-7-dvdcd-driver-install-error-alternate-solution/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-10-04-windows-7-dvdcd-driver-install-error-alternate-solution/</guid><description>Windows 7 Dvdcd Driver Install Error Alternate Solution</description><pubDate>Sun, 04 Oct 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This weekend I got my barebones PC kit in the mail &lt;em&gt;[WOOOOOO HOOOOO!!!!!]&lt;/em&gt; and proceeded to assemble and put the Windows 7 RC candidate on it. Since the RC is free until next year, I figured I&apos;d use that license a bit longer while I scrape up the flow ducats to purchase a family license to put on all the machines.&lt;/p&gt;
&lt;p&gt;I have a brand spankin&apos; new motherboard, CPU, RAM, and video card. I used an existing DVD-ROM and IDE hard drive to finish off the box. All in all it is a pretty sweet way to get a new system for really cheap.&lt;/p&gt;
&lt;p&gt;Once all the hardware was installed and I post tests were successful, I went ahead and dropped in the Windows 7 ISO I had burned, rebooted, and got giddy again for all the fun I was about to have. After the initial startup of the installer, I clicked the &quot;Start Install&quot; button and came across a rather odd error message:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A required CD/DVD drive device driver is missing.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And I was prompted with the option to insert a driver disc, or attach a USB device with the drivers in order to continue. After going through all the drivers on my motherboard install disc, I still had no luck. I pulled out my wireless network card and video card, and tried the install from a &quot;bare&quot; state and I still had the same error.&lt;/p&gt;
&lt;p&gt;So I donned my Googlian Monk robes (via my iPod Touch) and hit the net for some help. Surprisingly enough, there were a lot of folks out there having the same problem. The problem seemed to be related to a bad burn of the DVD ISO, which would still function, but there was a critical driver or two missing. While I didn&apos;t rule the notion out completely, I had previously done 2 successful installs of Windows 7 on two separate laptops within the previous month, so I to rule that one out for the time being.&lt;/p&gt;
&lt;p&gt;Another solution that was frequently mentioned was to prepare a bootable USB key and simply perform the installation that way. Unfortunately I didn&apos;t have a bootable USB key that was large enough, and my USB drive stored all of my backups, so I couldn&apos;t reformat it to make it bootable.&lt;/p&gt;
&lt;p&gt;So I kept digging. I pulled out my Ultimate Boot CD for Windows to run some diagnostics and see if there was some fault with the drive, but I was able to zip around without hassle. I got the XP recovery console running, tried a few things there. Still no luck. Oddly enough I didn&apos;t think to check the Windows 7 disc through here, but thought about finding some kind of generic driver for the DVD drive and put the Googlian Monk robes on again.&lt;/p&gt;
&lt;p&gt;I found an interesting thread that was discussing the Windows 7 install and using some generic drivers, and somebody had posted a rather unique solution, use the Vista disc to start the install process, but instead of starting the install, go to the repair installation section and use the command prompt they have available. Since all the CD/USB drivers were setup at that point, you could put your Windows 7 disc in, navigate into the sources directory, and start off the install.&lt;/p&gt;
&lt;p&gt;Since I had a Vista disc (64bit too!) I went ahead and booted up with that. Started the repair process and went to the command prompt. Dropped in my Windows 7 disc, and went to navigate to the folder, but it didn&apos;t exist! Instead, there was a single README.TXT file which contained the following message:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This disc contains a &quot;UDF&quot; file system and requires an operating system that supports the ISO-13346 &quot;UDF&quot; file system specification.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now THAT was something new and perplexing. Quite honestly I had never even heard of any of that before &lt;em&gt;[My Geek Cred: -2]&lt;/em&gt;. A couple brief searches on the issue didn&apos;t bring up anything too revealing, and it just may be that my DVD drive is a little too old (circa 2000) to understand the format. I&apos;ll have to look for some firmware updates to see if I can resolve that one. How the disc actually booted up is still a mystery to me, but I&apos;ll wager that the bootable portion of the DVD disc, which includes the initial RAM disk creation and setup environment for Windows 7 is being done in a generic format, wheras the rest of the files used for installation are locked down in this UDF format.&lt;/p&gt;
&lt;p&gt;However, at this point in the game it dawned on me that I had all my piece in place, albeit fractured. I went over to my wife&apos;s laptop really quick, and copied all the files from my Windows 7 disc into a new folder on my USB portable drive. I then went back to my new machine, booted it up with the Windows 7 disc, but went to repair mode and jumped to the command prompt. At that point I had USB drivers installed, so I went over to my portable drive, jumped into the sources directory in my Windows 7 folder, and setup worked like a charm! Success!!!&lt;/p&gt;
&lt;p&gt;So the bottom line is this. If you&apos;re having issues installing Windows 7 off of a DVD since it is missing CD/DVD drivers and you don&apos;t have a bootable USB drive, find yourself a way of booting up the machine so that USB drivers are installed (even use the existing install disc). Once the initial environment is setup, you can easily run the installer from a standard USB portable hard drive that has the setup files.&lt;/p&gt;
</content:encoded></item><item><title>Simple Global Andamp Editable Application Settings In Winforms Applications</title><link>https://dillieo.me/posts/development/2009-10-02-simple-global-andamp-editable-application-settings-in-winforms-applications/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-10-02-simple-global-andamp-editable-application-settings-in-winforms-applications/</guid><description>Simple Global Andamp Editable Application Settings In Winforms Applications</description><pubDate>Fri, 02 Oct 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Global application settings are a great way to store those pieces of an application that might need to change through the life of an application, such as a client Id number, but not be stored differently for every user of the application, such as the preferred color to display items.&lt;/p&gt;
&lt;p&gt;There has always been the AppSettings part of the app.config file, but with the release of .Net 2.0 Framework, a nice new Settings class was added that made easy to get strongly-typed settings variables within your application. It also allowed you to define categorizations or groups for these variables, which allowed for additional organization. The only glitch to this is that the Application scoped variables are set to a read-only format. The thought process behind this is that the application variables would be modified by a developer or experienced person, but done outside of runtime through Notepad or something.&lt;/p&gt;
&lt;p&gt;I&apos;ve been wearing my Googlian Monk robes over the past couple days in deep meditation trying to find a way to fix this issue and there isn&apos;t one that is easy to implement. However, there &lt;strong&gt;is&lt;/strong&gt; a simple way to get Application scoped variables that are easily modifed by going back to our simple, yet friendly, AppSettings section that exists in our app.config file.&lt;/p&gt;
&lt;p&gt;To do this, simply add an &amp;lt;appSections&amp;gt; section in your app.config file: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt; &amp;lt;configuration&amp;gt; &amp;lt;configSections&amp;gt; &amp;lt;/configSections&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;appSettings&amp;gt; &amp;lt;add key=&quot;ClientId&quot; value=&quot;5017&quot; /&amp;gt; &amp;lt;add key=&quot;LocationCode&quot; value=&quot;01&quot;/&amp;gt; &amp;lt;/appSettings&amp;gt;&lt;/p&gt;
&lt;p&gt;Now this is the &quot;tricky&quot; part. By default, in an ASP.Net web application, the System.Configuration.dll file is automatically added to the references section of a new project. Oddly enough, this file is &lt;strong&gt;not&lt;/strong&gt; added in a new Winforms application. I spent a good day beating my head against a wall to discover this. It could be that the file is not referenced since a different approach is used to create the strongly-typed settings objects it you take the standard approach. But that is some sleuthing for another day. Add a reference to the file in your project and the hard work is done! You now have quick and easy access to your application level settings via code. You can see where my SettingsBox_Load function reads the settings and where my btnSave_Click method writes the updated settings to the file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Imports System.Configuration

Public Class SettingsBox

Private Sub SettingsBox_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Me.Load txtClientId.Text = ConfigurationManager.AppSettings(&quot;ClientId&quot;).ToString txtLocation.Text = ConfigurationManager.AppSettings(&quot;LocationCode&quot;).ToString

End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSave.Click

Dim MyConfig As Configuration

If Not String.IsNullOrEmpty(txtClientId.Text) AndAlso _ Not String.IsNullOrEmpty(txtLocation.Text) Then

MyConfig = ConfigurationManager.OpenExeConfiguration _ (ConfigurationUserLevel.None)

MyConfig.AppSettings.Settings(&quot;ClientId&quot;).Value = txtClientId.Text MyConfig.AppSettings.Settings(&quot;LocationCode&quot;).Value = txtLocation.Text MyConfig.Save(ConfigurationSaveMode.Modified) ConfigurationManager.RefreshSection(&quot;appSettings&quot;)

MessageBox.Show(&quot;Settings Saved.&quot;, &quot;Success&quot;, _ MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

End Sub End Class
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s all there is to it! The one caveat to all of this is that the executable must have priviliges to modify files in its own directory. If there are some unique circumstances in the folder where the application is running, then you may need to modfiy privileges accordingly. I hope this saves you time on your next Winforms app that you need global variables for. I know it will for me!&lt;/p&gt;
</content:encoded></item><item><title>Phatcodeshare</title><link>https://dillieo.me/posts/development/2009-10-01-phatcodeshare/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-10-01-phatcodeshare/</guid><description>Phatcodeshare</description><pubDate>Thu, 01 Oct 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning at work I was given a rather flattering compliment.&lt;/p&gt;
&lt;p&gt;My supervisor had indicated that a colleague had called me out by name during their performance evaluation as somebody that had been very helpful to them in figuring things out. In addition to this, they had commented that I was a very friendly geek (in so many words) and not like others they had worked with. Sure there were &quot;go to&quot; folks that could answer your coding question, but they were often arrogant, short, or ill tempered when it came to helping. I was quite the opposite of this. I usually don&apos;t do well with compliments, but I was genuinely happy to hear this.&lt;/p&gt;
&lt;p&gt;Now the point of this is not to say &quot;Yeah me!&quot; but to bring up a few values I decided to adhere to a long time ago when I started coding that I think is very worthwhile to my fellow binary magistrates out there:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. I don&apos;t know jack!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ll admit I&apos;m a little proud of my slowly gaining rep on &lt;a href=&quot;http://stackoverflow.com/users/71/dillie-o&quot;&gt;StackOverflow&lt;/a&gt;, but I&apos;m nowhere close to the upper rep folks and that&apos;s a good thing! Staying humble and realizing that you&apos;ll never start learning keeps you excited about the next project you&apos;ll face and reading up on the latest trends and technologies. It also motivates you to share your programming exploits with fellow developers in hopes of picking up a new trick or library to use to solve a given problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Standing on the shoulders of giants.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I started out at my first job (outside of a small consulting stint), I was pretty much tossed into the fray and expected to fend for myself with the code. I did have a mentor, but it was more for handling the processes that we went through in developing our apps and to be the liason to the new customer I was working with. That was it. In addition, I was still VERY green with the .NET framework, and I feel sorry for the poor person that had to maintain that code after I left.&lt;/p&gt;
&lt;p&gt;So I went about my way, turning into quite the devout &quot;Googlian Monk&quot; and figuring out what I needed to along the way. I stumbled into some blogs that helped me with some issues and some code samples. I made my way through. After the first couple of apps were under my belt and I felt more comfortable with the Framework as a whole, I resolved that just as I had &quot;stood on the shoulders of [virtual] giants&quot; I would offer my shoulders up for the next person, be it online or in my own shop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Programming as a Craftsmanship&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Developers never seem to cease with coming up with a clever analogy to describe the process we go through. Ninjas, hackers, scripters, ballerinas, code monkeys, it never stops. Its quite fun I&apos;ll admit. But when I look over all of my practices and goals for my programming, I&apos;ve come to the conclusion that programming works far better as a &lt;a href=&quot;http://manifesto.softwarecraftsmanship.org&quot;&gt;craftsmanship&lt;/a&gt; than anything else. The nature of the beast states that we&apos;re always going to be dealing with unique and odd situations, to which we have to come up with a specialized solution for. However, that doesn&apos;t mean we can&apos;t craft this solution using some set methodologies (&lt;a href=&quot;http://agilemanifesto.org/&quot;&gt;Agile&lt;/a&gt; being a primary force). More importantly, being a crafstman implies sharing my knowledge with others and helping build up the next generation of programmers.&lt;/p&gt;
&lt;p&gt;So get out there and share your programming know-how with your fellow developers! You&apos;ll do the world some good! Keep it humble, because as Qui-Gon Jinn once said, &quot;There&apos;s always a bigger fish.&quot; Most likely you aren&apos;t it. If you think you are, get to a bigger pond. Share the love!&lt;/p&gt;
</content:encoded></item><item><title>Deck Studio Postmortem</title><link>https://dillieo.me/posts/development/2009-09-21-deck-studio-postmortem/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-09-21-deck-studio-postmortem/</guid><description>Deck Studio Postmortem</description><pubDate>Mon, 21 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;For those if you that aren&apos;t in the software developer lingo, the postmortem typically occurs when a software project has been released into production, or even retired. Considering I have yet to do one, I figured I&apos;d take the instance of the latter and use it to help reflect forward. Of course, I found a nice outline for one on the &lt;em&gt;&lt;a href=&quot;http://stackoverflow.com/questions/38066/whats-your-post-mortem-meeting-format&quot;&gt;&lt;em&gt;StackOverflow&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; site and I figured I&apos;d pull a few items.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. What went wrong?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Streamlining the data entry was a big culprit. It got better over time, but initially, especially after I had inherited RONIN and netrep, having three seperate databases, using different technologies, for the same data, really made things rough. The technical divide just in handling this almost stopped the suite of apps early on.&lt;/p&gt;
&lt;p&gt;There could have been a better object oriented design, especially with the creation of controls and some common libraries (which happened during the start of the 2.0 process). Deck Studio was documented well enough that I could find the appropriate support methods when needed, but having it all in a single DSMain.vb file was very bad form.&lt;/p&gt;
&lt;p&gt;The transition to netrep 2.0 did not go as favorably as planned. There were some genuinely surprising complaints by the end folks about some of the new layout that I took to heart (most notably the auto-complete feature). Ultimately I should have done more beta testing to draw in public feedback for the new functionality. I don&apos;t think I lost much repeat traffic, but it did put a bit of tarnish on the reputation of the site.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. What went right?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It took a while to implement, but having a common database for Deck Studio, RONIN, and netrep was crucial. It cut the time of set releases dramatically and using SQLite to port things out for the &quot;public consumption&quot; allowed for a strong, normalized database for storage and a fast, denormalized database for reading records.&lt;/p&gt;
&lt;p&gt;In addition, getting the public involved through set templates and the forums went a long way to keep everything &quot;duelist oriented.&quot;&lt;/p&gt;
&lt;p&gt;Keeping a &quot;separation of concerns&quot; was always a debated, but good decision. While there was a small rulings module added at the end to Deck Studio, the &quot;heavy lifting&quot; rulings application was always RONIN, and would stay that way. There are a handful of &quot;elite duelists&quot; that are looking intensely at the rules and the deck build, but the apps themselves were lightweight enough that you could be running both just fine and have each need met. I still &lt;a href=&quot;/finding-the-balance-modules-or-apps&quot;&gt;waver back and forth on this issue&lt;/a&gt;, but I think ultimately individual apps with powerful extensions would be the way to go.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. What would you do differently if you ran the same project again?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I would have started the main database to be more &quot;portable&quot; from the beginning. The card data, and the restriction lists, and the rulings, were all tied into a single file, which didn&apos;t make much sense when doing a simple restriction list update. Having this kind of structure would have made things more amenable to plug-ins and modifications, which became more and more in demand as the apps continued on in their life. Optimizing the search user interface would be another thing to modify. I went around and around on this issue with the best way of presenting, and executing, a method of doing granular search on cards (&quot;all Fiend cards with less than 300 ATK and contain &quot;brain&quot; in their names&quot; type things). There were two main methods to the search (inclusive vs exclusive) and ironically enough RONIN and Deck Studio both took opposite approaches with mixed results on both ends.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. What hindered your progress during the project?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Documentation. Probably the number one killer of any collaborative app, but I spent a lot of time trying to figure out what my own convoluted code did a year later when making a critical update!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. What have you learned from the project?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The question should be more of what &lt;strong&gt;didn&apos;t&lt;/strong&gt; I learn from the project. This is where I get a little sentimental in a geekish manner and reveal how much I think coding is freaktastic. The CCG Toolkit (and Deck Studio primarily) was the project that I really got to sink my teeth into as a &quot;real&quot; programming project. I was only a couple of years out of college, and I had a little under my belt with line-of-business type apps, so I want&apos; completely green to the environment.&lt;/p&gt;
&lt;p&gt;But by creating tool used by hobbyists and enthusiasts around the globe, I was able to tackle such a wide variety of issues through development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User Interface Design (I had never done WinForms apps up until this point)&lt;/li&gt;
&lt;li&gt;User Feedback (which was taken very seriously in the design of the program)&lt;/li&gt;
&lt;li&gt;Creating portable storage mechanisms.&lt;/li&gt;
&lt;li&gt;Creating remotely updating portable storage mechanisms.&lt;/li&gt;
&lt;li&gt;Repository synchronization.&lt;/li&gt;
&lt;li&gt;...and a heck of a lot more&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This doesn&apos;t even begin to get into all the new code libraries I wrote from scratch, and learning about some really cool coding techniques along the way from my mentor/fellow programmer. I also got to see how the .NET Framework was growing, such as how the List&amp;lt;T&amp;gt; class made things TONS easier for keeping sub decks together. It was genuinely a joy to sit down, sometimes on the weekend, sometimes late at night, and pound out that little update or set release that made somebody else on the other side of the globe happy. Call it a &quot;perfect storm&quot; type application.&lt;/p&gt;
&lt;p&gt;Ultimately the toolkit revolved around the data, sorting, viewing, saving, organizing. So now I got to work with three (and almost 4 or 5) different &quot;faces&quot; to the same bit of data. Netrep was the web front end. RONIN was the client based version for the rules. Deck Studio was the client based version for organizing things personally. At one point there was a web based version of Deck Studio (horribly bad, but fixable) and there was thoughts of a mobile optimized version of netrep for viewing things. What a great foundation to get your feet wet with things.&lt;/p&gt;
&lt;p&gt;Let&apos;s not forget all the awesome folks I met &quot;digitally&quot; through the process. My mentor was in Balitmore, another guy in Pittsburg, then I&apos;ve had consistent data submissions by some folks in England, Italy, and most recently South Africa. Feedback on the application came from most places, and I probably couldn&apos;t track them all, even on my internal tracking application. The feedback was always constructive and helpful. I cannot thank those folks out there (djp952, Maruno, FloWen, Deathjester, YugiDad, all come to mind, but there are plenty of others that I apologize for forgetting here) for what they did!&lt;/p&gt;
&lt;p&gt;But alas the time had come where more important priorities and the volume of work involved dictated that I need to cut my ties and start a new chapter. It is bittersweet. The &lt;a href=&quot;http://web.archive.org/web/20100820231755/http://dillieodigital.net/netreparchive/&quot;&gt;code and data&lt;/a&gt; is up so that others can take the torch and run. Somebody is already in the process of taking over netrep, which makes me happy. There are new apps to write down the road, but you never forget your first.&lt;/p&gt;
</content:encoded></item><item><title>Old Age Is Not For Sissies</title><link>https://dillieo.me/posts/growth/2009-08-27-old-age-is-not-for-sissies/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-08-27-old-age-is-not-for-sissies/</guid><description>Grandpas Sunset Photo</description><pubDate>Thu, 27 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;...is the hat my grandfather wore quite often for I think a good 10/15 years, if memory serves. I love it. My grandfather passed away about a week and a half ago and we had the memorial service about a week ago. He was 87 years old and was a few days shy of his 63 year anniversary with my grandma. One of the things my grandfather was best at was his photography, so I went walking around the house with Rylee looking for some of his photos to take home.&lt;/p&gt;
&lt;p&gt;As I was doing this, I started having lots of flashbacks to the times in this house. My grandparents moved out to Yucca when I was only 5 or so &lt;em&gt;[I can&apos;t even remember, it was just a given that they were there]&lt;/em&gt;. He inspired me in so many way.&lt;/p&gt;
&lt;p&gt;I think the very fact that him and grandma were so close gave me the desire to have my kids close to at least one set of grandparents. We made sure to do this once we had kids so they could experience the fun of having grandma and grandpa nearby.&lt;/p&gt;
&lt;p&gt;Grandpa inspired me to see the world. They went on trips nearly every year shortly after my dad and uncle had left the house. There is a HUGE map in their sun room with pinpoints for all the places they&apos;ve been. Their house is littered with items, small and large, from the various countries. Grandpa knew the people of each place I think more than the sites. He really focused on taking pictures of the people and their lives. Sometimes those also mingled with the major sites, such as a great picture of a couple of ladies chatting eagerly in front of the Taj Mahal in India.&lt;/p&gt;
&lt;p&gt;He created slide shows from all of his trips, but these weren&apos;t the boring ones you fall asleep to. He even figured out the timing on the slides and wrote up narration to go with them. After showing his slide show of his first trip to Africa in my brother&apos;s second grade class, the teacher was so impressed she asked him to come back and do it every year. It became a staple of her &quot;Africa week&quot; that she did with her curriculum. After his second trip there, he actually asked me to do the narration, since he was writing is from the perspective of a 9 year old boy living in Africa. There is still a little &quot;Jomo&quot; inside of me that perks up every time I hear the name Africa.&lt;/p&gt;
&lt;p&gt;To date, I&apos;ve only been to France (twice) but just that small experience was immeasurably valuable to me. Down the road Jen and I &lt;em&gt;[maybe the kids too or we&apos;ll wait until they leave for college 8^D]&lt;/em&gt; will do the same.&lt;/p&gt;
&lt;p&gt;Grandpa loved grandma with all his soul. He was known as a man with &quot;little veneer&quot; on his skin, so he wold come off as being &quot;grumpy.&quot; What was even more fun was the way grandpa and grandma would banter back and forth. She was probably the only woman that wasn&apos;t intimidated by it. 8^D You realized though through that banter that the only thing grandpa was worried about was grandma&apos;s well being, and she always smiled after their little &quot;discussions&quot; because she knew exactly that. I pray that when Jen and I are that old we&apos;ll have the same &quot;discussions.&quot;&lt;/p&gt;
&lt;p&gt;Grandpa always wanted to &quot;offer you some free advice&quot; even though &quot;nobody wants free advice anymore.&quot; &lt;em&gt;[his words precisely, I heard them so much]&lt;/em&gt; I would be anything from saving money, to how to drive, to where to go to by the best X. What I think grandpa failed to realize was that I took that free advice very seriously. I think the most profound thing he told me one day was that the things you ultimately need are food, shelter, and health, so why bother bying some elaborate car when you could use that money for more, and better quality food. I still keep this in mind to this day.&lt;/p&gt;
&lt;p&gt;The profound paradox with death is that through Christ, he lives on. I&apos;m sure he may be trying to offer free advice to Paul or John up in heaven and I&apos;m sure they&apos;re getting a big kick out of that. More importantly, he&apos;ll be seeing his son, my father, who he hasn&apos;t seen in a good 10 years or so. I&apos;m sure they have a lot of catching up to do. These facts give my soul a smile, but only while the tears stream over the face of it all the same. I miss grandpa already. It will be hard going to visit my mom and seeing the house next door, which is empty, and eventually will be lived in by somebody I don&apos;t know. All the same there is peace through it all. Rest now grandpa. You&apos;ve finished the race and kept the faith. The rest of the family will eventually be there too.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;@assets/images/posts/2009-08-100_97491.jpg&quot; alt=&quot;Grandpa&apos;s Egypt Photo&quot; title=&quot;Grandpa&apos;s Egypt Photo&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Coffee Theory</title><link>https://dillieo.me/posts/growth/2009-08-14-coffee-theory/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-08-14-coffee-theory/</guid><description>Coffee Theory</description><pubDate>Fri, 14 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Now I can&apos;t take credit for any of this, I owe it all to &lt;a href=&quot;http://www.altonbrown.com/&quot;&gt;Alton Brown&lt;/a&gt;. But for those of you out there that are still wondering how to get that ultimate cup of coffee, here&apos;s my approach to things...&lt;/p&gt;
&lt;p&gt;Every coffee bean has 3 parts to it. 1/3rd contains the ultimate-drool-coffee-coma flavor, 1/3rd has your standard flavor, and 1/3 of it is the Nasty McBitter stuff. The goal when brewing the perfect cup of coffee is to get the first two parts out of the bean, and not let the bitterness creep in. Part of this process is to gauge how hot the water is to be when extracting the flavor, as well as how long you want the water to be in contact with the beans to extract the flavor.&lt;/p&gt;
&lt;p&gt;Interestingly enough, most people fear bitter coffee and put in less grounds than they should. When the coffee maker fires up, all of the grounds are actually getting soaked for too long of a time period in the grounds, and so the coffee comes out bitter. This is also why you&apos;ll find that when grinding coffee for brewing via french press you want to have the grounds slightly &quot;chunkier.&quot; Since the grounds will be soaking in water, having them slightly larger will prevent too much of the flavor from getting extracted, leaving the bitter 1/3rd of flavor safely within the bean and not in your coffee cup.&lt;/p&gt;
&lt;p&gt;So what&apos;s the magic formula?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2 tablespoons of grounds for every 6 oz. of water&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yep, that&apos;s it. The first time you brew up a pot of coffee (especially if you do a full pot) you&apos;re probably going to freak out at the volume of grounds sitting in your basket. Don&apos;t fret, just try it. You&apos;ll be pleasantly surprised. What you&apos;ll get is a stronger &lt;em&gt;tasting&lt;/em&gt; coffee, but not a &lt;em&gt;bitter&lt;/em&gt; tasting coffee.&lt;/p&gt;
&lt;p&gt;Trust me, you&apos;ll easily want to drink more coffee once you learn how to eliminate the bitter taste. You&apos;ll discover what us fellow coffee junkies/snobs/geeks/weirdos are raving all about. 8^D&lt;/p&gt;
&lt;p&gt;This post was inspired partially by the new blog engine that has a lovely coffee theme and also by the fresh pot of New Guinea coffee I got from Costco. Really good stuff and a really reasonable price.&lt;/p&gt;
</content:encoded></item><item><title>Simple Projects Are Not So Simple</title><link>https://dillieo.me/posts/development/2009-08-12-simple-projects-are-not-so-simple/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-08-12-simple-projects-are-not-so-simple/</guid><description>Simple Projects Are Not So Simple</description><pubDate>Wed, 12 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A week or so ago, a request came in to help provide a notification system to the public based on news/announcements from various departments. We already had a module that generated an RSS feed based off of news items in our CMS, so extending this a bit for e-mail and SMS (text messages) notifications would be a snap. Departments could have notifications for a few different categories, and we&apos;d structure the summary, the link, and the title accordingly. &lt;em&gt;[Hot dang! I just found an RSS specific library to make generation of new items even simpler!]&lt;/em&gt; We&apos;d keep the titles short, so if we ever moved into Twitter or something, we wouldn&apos;t have length issues.&lt;/p&gt;
&lt;p&gt;Being good programmers, we started outlining the workflow and that&apos;s when all the fun begins. While it would be great to have a &quot;low latency&quot; subscription model to say &quot;just enter your e-mail address, select the department(s) you want and go,&quot; there are too many bots and folks out there that would want to subscribe somebody else to the list just to annoy somebody. Then the complaint would be written in the local paper (I work for the county government), and things would really get crazy. As a result, having a simple confirmation e-mail and code (like you see in a lot of subscription services) would need to be put in place, and that wasn&apos;t so bad. We just need to track the codes and write some kind of bot to check an e-mail inbox and have some additional pages to handle those that click the link to confirm/unsubscribe.&lt;/p&gt;
&lt;p&gt;But now we move into the text messaging system. How the heck do you send out messages to ALL of those services?! &lt;em&gt;[Whew, thank you &lt;em&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/SMS_gateway&quot;&gt;&lt;em&gt;wikipedia&lt;/em&gt;&lt;/a&gt;&lt;/em&gt;, you have a list of SMS e-mail gateways that we can use.]&lt;/em&gt; But how are we going to do subscription confirmations over the cell?! We can use the code, but you only get 160 characters in a standard SMS message, and the default code takes up a lot. We then send out messages to about 5 of us, all with different cell phones, and the text message coming in was grossly different for each device. Some had the code in the subject, some didn&apos;t. Even better, two of us had web enabled phones, where they could click a link to activate the subscription, but my little phone isn&apos;t web enabled, so a web link would be pointless for me! Even when the messages came in, I could only see the summary/title, I couldn&apos;t go to a full article.&lt;/p&gt;
&lt;p&gt;All of this indicated that our first releae needs to be e-mail based where we have a bit more control over subscriptions and have more flexibility with content link. It also reminded me of a profound truth...simple projects are not so simple a lot of the time when programming. This is also why I love programming so much. Coming up with simple solutions that are also elegant and mucking through all the challenges they throw at you. Consider it the joys of engineer/ninja/artist programming or something. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Enough</title><link>https://dillieo.me/posts/development/2009-08-10-enough/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-08-10-enough/</guid><description>Enough</description><pubDate>Mon, 10 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As the sun was setting around 7:30 Sunday night, we were pulling into town after a short, yet satisfying trip down to the Phoenix area to see some family. Recalling the day and a half we were down there [wow, it felt longer than that], I made note of several things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My children have met their great grandparents on both sides of the family on more than one occasion.&lt;/li&gt;
&lt;li&gt;My wife has seen the worst sides of me and still loves me nonetheless.&lt;/li&gt;
&lt;li&gt;I have neighbors that we wouldn&apos;t hesitate (and often do) to invite up for dinner at the last moment.&lt;/li&gt;
&lt;li&gt;I am living where I ultimately have dreamed of living.&lt;/li&gt;
&lt;li&gt;I have been out of the country for a month twice and been able to soak up their culture.&lt;/li&gt;
&lt;li&gt;I am in the profession I ultimately dreamed of being in.&lt;/li&gt;
&lt;li&gt;My wife and I share an inside joke that we have used on each other a thousand times and it still doesn&apos;t get old. When we eventually explain it to our inquiring children, they still won&apos;t get it and think we&apos;re weird.&lt;/li&gt;
&lt;li&gt;I am still overwhelmed at the wonderous creation that is out there and how even little &quot;farm towns&quot; and &quot;podunk villages&quot; provide just as much fascinating things as big cities.&lt;/li&gt;
&lt;li&gt;I have the capacity to travel and introduce these awe inspiring things to my children to hopefully infuse the joy of discovery into their lives as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I realize now that this is enough. I have a very fulfilled and blessed life. Day by day the Lord is granting me new insights and new challenges in a process to ultimately instill virtue into my soul.&lt;/p&gt;
&lt;p&gt;This by far does eliminate or wipe away the stuggles I face. Finances are strapped tighter than ever, medical issues still creep up at the wrong times. Garbage disposals break at the wrong times. I still need patience with my kids and myself. I am still a wretched sinner in need of grace, but I have and have experienced enough to grant me solace through trials that seem unexplainable and joys that are unfathomable...&lt;/p&gt;
&lt;p&gt;Dear self...&lt;/p&gt;
&lt;p&gt;Tomorrow morning will come and most likely you&apos;ll be tired and potentially grumpy. Monday will rear its ugly head. The pressures of work, of thought, of relationships, of money, of love will all come in and beat you into a pulp. They tend to do that. You&apos;ll wrestle with pride and greed and glory and want to take over the world just so it thinks you are some almighty programmer of awesomeness, and then you&apos;ll get frustrated when you realize you aren&apos;t and most likely will never be.&lt;/p&gt;
&lt;p&gt;Please make a mental bookmark of that drive home. Fuse it into your mind, body, and soul and bookmark this blog post for that technical side of you as well so you can quickly read it if necessary. It is important to realize that despite (and maybe because) of all your trials, you have enough. It was not earned, it was given. It is enough for you.&lt;/p&gt;
</content:encoded></item><item><title>Daddys Anthem</title><link>https://dillieo.me/posts/growth/2009-07-28-daddys-anthem/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-07-28-daddys-anthem/</guid><description>Daddys Anthem</description><pubDate>Tue, 28 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I think most fathers have &quot;Butterfly Kisses&quot; or some other song as an &quot;anthem&quot; of sorts when relating to their daughters. It&apos;s that one song that they&apos;ll have to dance to when they get married. It&apos;ll probably be that song that&apos;ll go through their head when reminiscing on wonderful things.&lt;/p&gt;
&lt;p&gt;For me, it&apos;s a little different. We had some Jen&apos;s friend and her husband over for dinner the other night and she had asked to hear the story of our girls. Their 3 months in the NICU, and how that went. Amidst the rush of memories that started coming back, I remember many nights during those months where I was driving out to the hospital around 9 or 10 at night to drop some stuff off and read them a story. I had recently purchased the latest Audio Adrenaline CD and this song just seemed to resonate more than the rest:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m a warrior, I’m a warrior&lt;/p&gt;
&lt;p&gt;I would die for You, for You&lt;/p&gt;
&lt;p&gt;My love is fierce, I’m a warrior&lt;/p&gt;
&lt;p&gt;I would die for You, for You&lt;/p&gt;
&lt;p&gt;I’m a warrior with a warrior’s heart&lt;/p&gt;
&lt;p&gt;And it burns for You, for You&lt;/p&gt;
&lt;p&gt;My love is fierce, I’m a warrior&lt;/p&gt;
&lt;p&gt;I would die for You, give it all for You&lt;/p&gt;
&lt;p&gt;I won’t give up, I won’t give up on You&lt;/p&gt;
&lt;p&gt;I won’t give up on You&lt;/p&gt;
&lt;p&gt;I will sing Your name until my heart caves in&lt;/p&gt;
&lt;p&gt;Until my heart caves in&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(&lt;a href=&quot;http://www.audioa.com/default2.aspx&quot;&gt;Until my Heart Caves In&lt;/a&gt; - From the album of the same title.)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unrelenting, full of zeal, fiercely loving. Haylee, Rylee, daddy will remain that way for you until the end, until my heart caves in.&lt;/p&gt;
</content:encoded></item><item><title>Gaming Done Right Angband</title><link>https://dillieo.me/posts/growth/2009-07-27-gaming-done-right-angband/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-07-27-gaming-done-right-angband/</guid><description>Angband Single Window Screen</description><pubDate>Mon, 27 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Jen had a great idea Friday night and we reinstalled &lt;a href=&quot;http://rephial.org/&quot;&gt;Angband&lt;/a&gt; on our laptops for a weekend tournament since we hadn&apos;t done so yet after reformatting to Windows 7.&lt;/p&gt;
&lt;p&gt;Angband is simply awesome. My buddy Calvin got me hooked on it during our summer as interns at Tandem/Compaq/HP in &apos;98 and we spent many long hours into the morning hacking and slashing away. The typical summary of the game is this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Angband is a dungeon-crawling roguelike computer game derived from Umoria. It is based on the writings of J. R. R. Tolkien, in which Angband is the fortress of Morgoth.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Okay, right there a lot is given away that there&apos;s going to be a lot of fun. Dungeon Crawling! Tolkien! Hack! Slash! All that goodness!&lt;/p&gt;
&lt;p&gt;So here&apos;s the catch. Requirements to play the game...&lt;/p&gt;
&lt;p&gt;Screaming 256MB graphics card with 15FPS: Nah Dolby Digital 7.1 surround card: Nope (though I encourage you to turn on the cheesy sound effects for a little while, quite fun) FragMaster mouse for precision clicking and fast responses: Skip it. High speed DSL or cable connection: Pointless&lt;/p&gt;
&lt;p&gt;Fire up the game, get your character going a bit, and here&apos;s what you&apos;ll see:&lt;/p&gt;
&lt;p&gt;That&apos;s with the &quot;Old Tiles&quot; mode on, the original form is just pure ASCII text.&lt;/p&gt;
&lt;p&gt;If you tweak the settings up, get yourself some nice macros (as all good text based programs do) and get &quot;hard core&quot; you can get your setup to look like this:&lt;img src=&quot;@assets/images/posts/2009-07-angbandfull.png&quot; alt=&quot;Angband Full Screen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s it! What makes this game so great (as well as all the other vintage game in my opinion) is playability. We spend HOURS on this game, working our way through the dungeons, getting our characters stronger, making small modifications here and there. There are unique items in the game as well as unique enemies, and you never know where and when you&apos;ll run into them (within reason). I haven&apos;t even gotten into the &quot;standard&quot; items in the game, for which there are tons, and you can do your own modifications at times to beef up some relatively standard items.&lt;/p&gt;
&lt;p&gt;The key to this is that for a &quot;fixed&quot; game of 100 levels, each level is generated from dynamically every time you go to it. It&apos;s sort of like those stairs you see in the first Harry Potter movie. You&apos;ll never get the same circumstances every time since every time you go back in it is different. One time the level may be boring, the next time you may run into Lagduf the Snaga (as seen above) and nearly die in battle. The time after that you may stumble across a vault that has a few monsters, but IMMENSE hoards of gold and items to check out.&lt;/p&gt;
&lt;p&gt;The other key to the game is that despite its addictiveness, you can quit at any time and come right back to the game. You won&apos;t lose points or have to start a new section over. One of the nice features is that the game is turn based, so even though you&apos;re in the thick of battle against a hoard of Hill Orcs, you do have a moment to figure out if you want to take another swing, zap your rod of frost bolds down the corridor, or just say a prayer of read a scroll of phase door and get the heck out of there.&lt;/p&gt;
&lt;p&gt;There is a slight learning curve to all the command keys, but once you get that down, and learn the macros, you&apos;ll be flying in no time!&lt;/p&gt;
&lt;p&gt;Give Angband a whirl. I think you&apos;ll like it! For the record, I prefer a Dunadin Paladin myself, but that&apos;s only because I fell in love with the prayer Orb of Draining a while back and love to imagine a bunch of mirkwood spiders get sucked into a black hole of sorts. 8^D&lt;/p&gt;
</content:encoded></item><item><title>Nacho Cheese Of The Month Club</title><link>https://dillieo.me/posts/growth/2009-07-16-nacho-cheese-of-the-month-club/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-07-16-nacho-cheese-of-the-month-club/</guid><description>Nacho Cheese Of The Month Club</description><pubDate>Thu, 16 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This was &quot;dictated&quot; to me by these guys on a birthday card from my wife. To get the full effect, you need to imagine their voice slightly high pitched and edgy, as if they had abotu 10 cups of coffee...&lt;/p&gt;
&lt;p&gt;I signed you up for...a nacho cheese of the month club!&lt;/p&gt;
&lt;p&gt;OHHH MYYY GOODNESS!!!&lt;/p&gt;
&lt;p&gt;Oh, talk about cool! Then I saw this really big waffle iron...&lt;/p&gt;
&lt;p&gt;OHHH MYYY GOODNESS!!!&lt;/p&gt;
&lt;p&gt;I know how much you love waffles!&lt;/p&gt;
&lt;p&gt;WAFFLES ARE GREAT!&lt;/p&gt;
&lt;p&gt;Oh, my goodness. But then we decided that the best thing for you would be... a talking card.&lt;/p&gt;
&lt;p&gt;OHHH MYYY GOODNESS!!!&lt;/p&gt;
&lt;p&gt;Yes, you close it and open it and it&apos;s like a another gift! And it starts over in the same spot every time! Oh, you&apos;re going to love it!&lt;/p&gt;
&lt;p&gt;LOVE IT!!!!&lt;/p&gt;
&lt;p&gt;And its true!!! I believe I&apos;ve opened it up about 3 dozen times now, and it doesn&apos;t get old. Thanks for a wonderful birthday honnie. You make this &quot;old man&quot; feel young and alive every day of my life.&lt;/p&gt;
</content:encoded></item><item><title>Make The Computer Do Your Bidding Keyboard Tools</title><link>https://dillieo.me/posts/development/2009-07-09-make-the-computer-do-your-bidding-keyboard-tools/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-07-09-make-the-computer-do-your-bidding-keyboard-tools/</guid><description>Make The Computer Do Your Bidding Keyboard Tools</description><pubDate>Thu, 09 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I&apos;m programming at work, or even at home on the side, one of the biggest wastes of time is launching applications. I&apos;ll be writing some code, realize I need to fire up another application to process a screen shot or look into the underlying data. So I take my hand off the keyboard to grab my trackball &lt;em&gt;[yep, I&apos;m one of THOSE people]&lt;/em&gt;, go to my start menu, dig through the lengthy tree of applications to find (or sometimes not find if it is an app I use only on occasion), start it up, and move my hand back to the keyboard to continue. You&apos;d be amazed at how much time this takes when you&apos;re frequently jumping in and out of applications or tasks.&lt;/p&gt;
&lt;p&gt;I tend to classify my apps into three categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Primary&lt;/strong&gt;: The heavy hitters I&apos;m running all day long, like Visual Studio, Chrome (current preferred browser), Internet Explorer (for testing internal apps), iTunes (podcasts and music to keep the brain flowin&apos;), etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secondary&lt;/strong&gt;: Apps that I use a lot, but maybe for a quick file transfer or verification like FreeCommander (file exploer app), Paint.net&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Rest&lt;/strong&gt;: Pretty much everything else I use, but not all that frequently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to get &quot;instant&quot; access to these apps and eliminate the &quot;mouse seek&quot; time, I leverage a the following tools. There&apos;s a good chance that these are all familar to you, but it never hurts to spread the love again. Plus they are all high quality and free:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://rocketdock.com/&quot;&gt;Rocket Dock&lt;/a&gt;: This great tool essentially recreates the OSX style of application launcher, and keeps an indicator marker next to running apps. It also has a snazzy &quot;zoom in&quot; style when you mouse over an icon, which helps when you have a large list. You may be calling me on the carpet for still using a program that requires me to use the mouse, but I keep all my Primary apps here since I only fire them off once a day and it functions better than the Quick Launch Toolbar bar built into Windows.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.qliner.com/hotkeys/default.htm&quot;&gt;Q-Liner Hotkeys&lt;/a&gt;: This tools allows you to map your Windows Key as an application launcher based on your keystrokes. This is where I put all of my secondary applications that I need to launch. A simple Windows+F to get to Free Commander, or Windows+P to get to Process Explorer goes a long way. You can even map other system controls, such as increasing the volume through Hotkeys. In addition, they have a great screen capture program built into the application as well. I haven&apos;t seen an update on this app in a year or so, but it still runs rock solid. One small caveat, their current build does not work on 64 bit processors, due to a keyflag issue, so sadly Hotkeys is not on my laptop at home. There are a couple of workarounds, but I&apos;m hoping the Qliner guys will update it soon.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.launchy.net/&quot;&gt;Launchy&lt;/a&gt;: Launchy essentially indexes all the items in your start menu, and then gives you a simple &quot;command bar&quot; that you can start them up from. It uses the autocomplete style, and remembers the apps you&apos;ve recently launched, so you can typically start up your app in about 5 characters or less. It will also allow you to index web history and other items through it. I use this for all &quot;the rest&quot; of my apps and I haven&apos;t even seen my start menu in a good 6 months or so. I used to keep my start menu finely tuned and organized, but I don&apos;t have to worry about that anymore.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I use all three of these apps in an overlapping fashion, there are times when I&apos;ll use launchy to start something up that already has a hotkey for. I even have a few hotkeys for apps that are in Rocket Dock. Depending on what mindset I&apos;m in at the time I can fire up what I need immediately. Sometimes I&apos;m already doing some editing with the mouse and it is easy to swing over to Rocket Dock and fire off the tool I need. I could be typing so furiously that it is easier to press ALT + Space to bring up launchy instead of pausing to use Windows + hotkey.&lt;/p&gt;
&lt;p&gt;What&apos;s really great is that Windows 7 already has a rocket dock and launchy type interface built into it. With Windows 7 you can &quot;pin&quot; items to your task bar, effectively making them indicators of which programs are running and a quick launch bar to start them up. I&apos;ve discovered I can also assign hot keys to them, so I&apos;m working with that option now too. In addition, when you hit the Window key in Windows 7, you&apos;ll see a new &quot;search&quot; box that show up in the start menu, which searches your system, including the start menu. Just like with launchy, I can get to all my apps within about 5 characters or less.&lt;/p&gt;
&lt;p&gt;By combining these tools with a great freeware virtual desktop program called &lt;a href=&quot;http://dexpot.de/&quot;&gt;Dexpot&lt;/a&gt; (which also has hotkeys to manipulate windows), I can keep my hands on they keyboard much longer and increase my productivity that much more! I don&apos;t quite feel like Tom Cruise in Minority Report, but I do feel like the computer screen is doing my bidding serving as a natural extension of my programming actions, as opposed to me having to clunk back and forth between two different monitors and two different input sources to work on my projects.&lt;/p&gt;
&lt;p&gt;If you have any other tools (free or otherwise), please share them. I&apos;m always looking to check out something new.&lt;/p&gt;
</content:encoded></item><item><title>Using Xsds For Quick Datatables In Net</title><link>https://dillieo.me/posts/development/2009-07-08-using-xsds-for-quick-datatables-in-net/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-07-08-using-xsds-for-quick-datatables-in-net/</guid><description>Using Xsds For Quick Datatables In Net</description><pubDate>Wed, 08 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little while back, I put together a website for my wife&apos;s bakery that she started. One of the things she wanted to do was to have an online gallery of some of her cupcakes, so that potential customers could see what they were ordering. She also wanted to be able to add/remove items when she wanted to, but I really didn&apos;t have the time to put in a full fledged database solution in place with all the CRUD items.&lt;/p&gt;
&lt;p&gt;I decided to create a &quot;portable&quot; database she could update when needed, but I could still leverage all the quick and easy data binding capabilities with the DataList object. To do this, I took advantage of the XSD DataSet tool in Visual Studio and a couple of built in methods that it provides.&lt;/p&gt;
&lt;p&gt;The first step was to create the DataTable that I wanted to bind the cupcake data to the gallery page with. My table had three simple items: a Name for the cupcake name, an Image, which was the path to the scanned image, and a Thumbnail, which was the path to the thumbnail image of hte cupcake. I was going to present a grid of thumbnails for the cupcakes and let the user choose one, which would bring up a larger image.&lt;/p&gt;
&lt;p&gt;I right-clicked on my project name then selected Add-&amp;gt;New Item. In the Add New Item dialog, I selected the &quot;DataSet&quot; item under the &quot;Data&quot; category, named it CrazyBakerSchema.xsd and clicked the &quot;Add&quot; button. Once the XSD editor is displayed in Visual Studio, I right-clicked on the canvas, selected Add-&amp;gt;DataTable. I clicked on the &quot;title&quot; section of the DataTable to give it a new name. In the DataSet properties window, I updated the Namespace property to be http://crazybakers.com/CrazyBakerSchema.xsd to match the website it was going to be placed on. This isn&apos;t required, but it is recommended that you rename the default &quot;temuri.org&quot; URL if you&apos;re doing anything on the &quot;outside world.&quot; I then added each column by right-clicking on the DataTable and selecting Add-&amp;gt;Column.&lt;/p&gt;
&lt;p&gt;Once this was complete. I saved and compiled. This created the DataTable object and its supporting methods. In addition, it put the context of the DataTable into XML format as well (remember that an XSD is an XML schema document).&lt;/p&gt;
&lt;p&gt;The next step was to create some simple data to display on the gallery page. The beautiful thing about the XSD information is that it gets put into Visual Studio&apos;s Intellisense for auto-completion to easily create the XML structure needed to read data into a DataTable object.&lt;/p&gt;
&lt;p&gt;I right-clicked on the project again and selected Add-&amp;gt;New Item. I selected &quot;XML File&quot; from the &quot;Data&quot; category and gave it the name CakeImages.xml and clicked the &quot;Add&quot; button. I then added a reference to my schema document, right under the initial XML declaration&lt;/p&gt;
&lt;p&gt;Once the schema is detected, all of the fields in the DataTable will begin to appear via Intellisense. Simply type your opening &quot;&amp;lt;&quot; and intellisense will help you enter the fields you need.&lt;/p&gt;
&lt;p&gt;This allows you to quickly put together the data you need. I already had some images uploaded to the proper locations, so my final file looked like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;_mcePaste&quot;&amp;gt;[code lang=&quot;xml&quot;]
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;&amp;gt;
&amp;lt;xs:CrazyBakerSchema xmlns:xs=&quot;http://crazybakers.com/CrazyBakerSchema.xsd&quot;&amp;gt;
&amp;lt;xs:GalleryImage&amp;gt;
   &amp;lt;xs:Name&amp;gt;Janie&apos;s Dinner&amp;lt;/xs:Name&amp;gt;
   &amp;lt;xs:Image&amp;gt;JaniesDinner.jpg&amp;lt;/xs:Image&amp;gt;
   &amp;lt;xs:Thumbnail&amp;gt;JaniesDinner_Thumb.jpg&amp;lt;/xs:Thumbnail&amp;gt;
&amp;lt;/xs:GalleryImage&amp;gt;

&amp;lt;xs:GalleryImage&amp;gt;
   &amp;lt;xs:Name&amp;gt;Vanilla&amp;lt;/xs:Name&amp;gt;
   &amp;lt;xs:Image&amp;gt;Vanilla.jpg&amp;lt;/xs:Image&amp;gt;
   &amp;lt;xs:Thumbnail&amp;gt;Vanilla_Thumb.jpg&amp;lt;/xs:Thumbnail&amp;gt;
&amp;lt;/xs:GalleryImage&amp;gt;

&amp;lt;xs:GalleryImage&amp;gt;
   &amp;lt;xs:Name&amp;gt;Snicker Doodles&amp;lt;/xs:Name&amp;gt;
   &amp;lt;xs:Image&amp;gt;SnickerDoodle.jpg&amp;lt;/xs:Image&amp;gt;
   &amp;lt;xs:Thumbnail&amp;gt;SnickerDoodle_Thumb.jpg&amp;lt;/xs:Thumbnail&amp;gt;
&amp;lt;/xs:GalleryImage&amp;gt;

&amp;lt;xs:GalleryImage&amp;gt;
   &amp;lt;xs:Name&amp;gt;White Mint Minis&amp;lt;/xs:Name&amp;gt;
   &amp;lt;xs:Image&amp;gt;WhiteMint.jpg&amp;lt;/xs:Image&amp;gt;
   &amp;lt;xs:Thumbnail&amp;gt;Whitemint_Thumb.jpg&amp;lt;/xs:Thumbnail&amp;gt;
&amp;lt;/xs:GalleryImage&amp;gt;

&amp;lt;xs:GalleryImage&amp;gt;
   &amp;lt;xs:Name&amp;gt;Turtle&amp;lt;/xs:Name&amp;gt;
   &amp;lt;xs:Image&amp;gt;Turtle.jpg&amp;lt;/xs:Image&amp;gt;
   &amp;lt;xs:Thumbnail&amp;gt;Turtle_Thumb.jpg&amp;lt;/xs:Thumbnail&amp;gt;
&amp;lt;/xs:GalleryImage&amp;gt;
&amp;lt;/xs:CrazyBakerSchema&amp;gt;
[/code]

&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note: This isn&apos;t the complete code block, just the items I mentioned above.&lt;/p&gt;
&lt;p&gt;In my code behind file, the DataSet object makes it really easy to suck up an XSD and an XML file to create a strongly typed DataTable:&lt;/p&gt;
&lt;p&gt;In five lines of code I have an simple XML &quot;database&quot; loaded and bound to a DataList! I love it! I added a little bit of my formatting code to my DataList as follows:&lt;/p&gt;
&lt;p&gt;protected void FormatListItem(object sender, DataListItemEventArgs e) { ImageButton imbTarget;&lt;/p&gt;
&lt;p&gt;if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { imbTarget = (ImageButton)e.Item.FindControl(&quot;imbCakeThumbnail&quot;); imbTarget.CommandArgument = ((DataRowView)e.Item.DataItem).Row.ItemArray[1].ToString(); imbTarget.ImageUrl = &quot;~/Photos/&quot; + ((DataRowView)e.Item.DataItem).Row.ItemArray[2].ToString(); imbTarget.AlternateText = ((DataRowView)e.Item.DataItem).Row.ItemArray[0].ToString(); } }&lt;/p&gt;
&lt;p&gt;Finally, when the user clicked an image, I process the CommandArgument by displaying the large image selected:&lt;/p&gt;
&lt;p&gt;I wrapped the DataList and display items within an UpdatePanel, so the refreshes will occur without and flicker on the screen.&lt;/p&gt;
&lt;p&gt;And there you have it! I used this approach again when creating a simple calendar to list events or special sales that were coming up. The great thing about the strongly typed tables is that you can also store integer or dattime related data and not have to worry about converting it back in later. The schema will handle that for you.&lt;/p&gt;
&lt;p&gt;I hope this proves helpful for you when you need a quick data store for a drop down list, or a small image gallery, or anything else for that matter. Just remember that XML gets bulky really fast, so if you have a lot of data, or need super fast processing, this approach won&apos;t work for you. But for a lot of simple needs, it does the job quite nicely, especially if your web host doesn&apos;t provide a database or you&apos;ve already used yours up.&lt;/p&gt;
</content:encoded></item><item><title>Random Facebook Chatter</title><link>https://dillieo.me/posts/growth/2009-07-07-random-facebook-chatter/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-07-07-random-facebook-chatter/</guid><description>Random Facebook Chatter</description><pubDate>Tue, 07 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night I was up a litle late waiting for the update of the Tournament Card Registry to compile and an old friend from college was on Facebook and made kind of a random status posting. I had to bite at the opportunity and here&apos;s how it transpired:&lt;/p&gt;
&lt;p&gt;(Friend) Nick is chillin&apos; out, maxin&apos;, relaxin&apos; all cool and I&apos;m shootin&apos; some b-ball outside of the school.&lt;/p&gt;
&lt;p&gt;(Me) Sean&lt;br /&gt;
Be careful! There might be a couple of guys up to no good trying to make trouble in your neighborhood...&lt;/p&gt;
&lt;p&gt;Nick&lt;br /&gt;
I know, right. I got in one little fight and my mom got scared, she said I&apos;m moving with my auntie and uncle to Bel Air.&lt;/p&gt;
&lt;p&gt;Sean&lt;br /&gt;
So here&apos;s some advice. Whistle for a cab, and when it comes near, make sure the license plate says &quot;FRESH&quot; and that there are dice in the rear view mirror.&lt;/p&gt;
&lt;p&gt;Nick&lt;br /&gt;
I DID! And if anything, I can say that this cab was rare, but I thought &quot;nah, forget it..Yo Holmes, To BEL AIR!&lt;/p&gt;
&lt;p&gt;Sean&lt;br /&gt;
So what time did you make it there?&lt;/p&gt;
&lt;p&gt;Nick&lt;br /&gt;
I. Pulled. Up to the house about 7 or 8.&lt;/p&gt;
&lt;p&gt;Sean&lt;br /&gt;
Oh wait, I remember that cabbie, he stank something nasty!&lt;/p&gt;
&lt;p&gt;Nick&lt;br /&gt;
Hellz yeah. I yelled to the cabbie &quot;Yo Holmes, smell you later!&quot; Then I looked at my kingdom, and I was finally there!&lt;/p&gt;
&lt;p&gt;Sean&lt;br /&gt;
Oh shaft, so YOU&apos;RE the Prince of Bel Air!!! I never knew I was in such royalty...man the things you learn this late at night. 8^D&lt;/p&gt;
&lt;p&gt;There were a couple interjections along the way with some confused folks. I guess we owe a great deal of thanks to Will Smith, for such randomness that comes to our minds a decade or so later. Thanks also goes to Facebook: allowing friends across states to engage in live poetry exchanges using old television show lyrics since 2004.&lt;/p&gt;
</content:encoded></item><item><title>Finding The Balance Modules Or Apps</title><link>https://dillieo.me/posts/development/2009-07-01-finding-the-balance-modules-or-apps/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-07-01-finding-the-balance-modules-or-apps/</guid><description>Finding The Balance Modules Or Apps</description><pubDate>Wed, 01 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I&apos;m continuing down the road of getting all of the Toolkit apps to 2.0 status, I&apos;ve come to an interesting fork in the road that I&apos;m not quite sure how to resolve at this point. The ultimate question is this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do I bundle all of the features to date into a single application and provide modules to users, or do I keep each application its own streamlined entity?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The case in point with revolves around RONIN. For those that are just coming over here &lt;em&gt;[welcome, welcome]&lt;/em&gt; RONIN is a program I inherited that is used by Yu-Gi-Oh judges (and players) to get the rulings about a given card. Yu-Gi-Oh is pretty unique in that there are insane number of rulings. Originally, there was a website that was officially maintained that listed them all, but the interface wasn&apos;t the best. In addition, most of the rulings involved interaction with other specific cards, and these rulings weren&apos;t cross referenced. RONIN filled this gap by providing an online and offline mode of viewing the rulings, made them easy to find, and most importantly, genereated cross references to other cards so you could find any related rulings. There are some other features in the program which I don&apos;t think are as heavily used, such as getting a full spoiler list for a given set or printing out a &quot;mini rulings book&quot; based on the cards in your favorites list.&lt;/p&gt;
&lt;p&gt;With the upcoming relinquishment of the roninpro and deckstudio domains (to fall under ccgtoolkit.com) I was alerted to the fact that the web services called by these programs were pointing to these domains and not to my &quot;root&quot; domain of dillieodigital.net. A quick update was in order. The Deck Studio update went quick and smooth, since I was using simple web references in Visual Studio and I let it &quot;automagically&quot; update things for me.&lt;/p&gt;
&lt;p&gt;RONIN isn&apos;t as simple as a story. I&apos;ve never had the chance to fully go through the code to piece together its inner workings, but it was originally written in the 1.1 Framework days. The creator of it really knew is stuff, and I wager he decided to manually create the web service libraries that would consume the services instead of letting the Visual Studio wizard do it. To his credit, I don&apos;t remember VS 2K3 being all that great with its web service interface anyway. However, when the code was migrated up to 2.0, the web service access code was not updated to take advantage of the new support.&lt;/p&gt;
&lt;p&gt;After struggling for an hour or so to figure out exactly where I would be changing the code and still not having much luck, I decided to take a mental break and work on something I already had in mind, the new offline rulings database that would also be going into RONIN. I&apos;m taking advantage of &lt;a href=&quot;http://sqlite.org/&quot;&gt;SQLite&lt;/a&gt; in this regard, and thanks to a wonderful &lt;a href=&quot;http://sqlite.phxsoftware.com/&quot;&gt;ADO.Net&lt;/a&gt; adapter for it, I coded the entire library, and had the data dumped into the portable DB in no time. I wanted to test this out and a thought came into my mind to just add another tab to the main display of Deck Studio and drop it in there. I can easily tie into the event that fires when a card is selected, so I have the Id right at my fingertips in which to pull out the rulings text and bind it to a simple textbox or label for viewing. I already have a nice update structure in place, so as new rulings became available, I&apos;d package that up into the database and the user would get the latest version with no hassles on their end.&lt;/p&gt;
&lt;p&gt;So why don&apos;t I just merge everything together and save myself a lot of maintenance headaches? That&apos;s a little tricky. For a long time Deck Studio users have been asking for modules to be added to track their current collection against a built deck, or have their own custom &quot;whoozit&quot; run when they wanted, or even have rulings right there in the application. The original push back to this has been that Deck Studio was streamlined to building decks, and RONIN was streamlined for those wanting rulings. I know plenty of people in both camps that don&apos;t care about the other. There are definitely the power users that use both apps, but I don&apos;t think they have too many issues about using both apps. In addition, I know I went a little Firefox plugin crazy the first time I drifted over to the addons and it bogged it down faster than anything. I would fear the same consequences to users if I went that route. In addition, both Deck Studio and RONIN are using a common database already, so there is no duplication on that front, even if I did add a new application to the suite.&lt;/p&gt;
&lt;p&gt;That said, there is something elegant and appealing about being able to add which items you want and not have to fire up multiple applications to get the work done. This sort of exists already with the Image library. If you don&apos;t have the library downloaded, no sweat, you just see a place holder image. If you want the library at a future date, it is a simple download through the update module. I see the same thing working here, especially with the seperation of the tag library, rulings library, and restriction lists into their own manageable parts. This also has less code for me to maintain and any fundamental changes to the Tournament Card Registry wouldn&apos;t have to be done in multiple applications (which is truly the heart of the applications themselves).&lt;/p&gt;
&lt;p&gt;So that&apos;s the big divide. I have some inklings on which way I want to go, but no definite decisions yet. So I&apos;d love any help from gurus out there that happened to stumble upon this blog. I&apos;ll do a followup down the road when I reach a conclusion.&lt;/p&gt;
</content:encoded></item><item><title>The Toolkit Backstory Part 3</title><link>https://dillieo.me/posts/development/2009-06-17-the-toolkit-backstory-part-3/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-06-17-the-toolkit-backstory-part-3/</guid><description>The Toolkit Backstory Part 3</description><pubDate>Wed, 17 Jun 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I had mentioned at the end of my last post, things were not faring too well on the Empyre Group front. Empyre Group was closing its doors. I never found out the full reasons behind things, but I do know there was intent to make money wtih the various ventures Empyre Group was putting forward, but they were not panning out. In the wake of this, all of the entities within Empyre Group (City of Gamers Forums, netrep, Deck Studio, RONIN) were given to the various members that worked on them to continue with them as they saw fit. This wasn&apos;t too big of a change, since we were a pretty close knit group already, sharing the tournament card registry and providing support through the forums.&lt;/p&gt;
&lt;p&gt;Effectively we had all be doing this in a &quot;hobby&quot; format, donating our free time and resources to the cause, and there comes a point when you need to get off the bus, for whatever reason. djp952, my &quot;Yoda&quot; through this process, was the first. RONIN really had been the flagship program for things, so I was sad to see him go, but didn&apos;t blame him one bit. In the wake of his leaving, he offered up all the code to me to keep RONIN going. I was honored that he&apos;d consider me for the job and I took it. The netrep/CoG guy was generating the tournament card registry files, so he&apos;d send me updates and I would generate the appropriate libraries and push them out to the respective programs.&lt;/p&gt;
&lt;p&gt;Then about 6 months later, daamazing1, another Jedi for the cause, was getting ready to leave the fold too. CoG had already been given off to somebody to maintain (the amazing Digitial Jedi, still going strong with the venture) and I was given the opportunity to take over the netrep site if I wanted. This was a difficult decision for me. On one hand, I was struggling to keep RONIN and Deck Studio up to par with some code changes and some set change. Since both applications were using the exact same data, it made sense to update them to look into a common directory for this information. Not to mention the features updates I wanted to start adding to both programs. I would also need to do web site maintenance on top of this. On the flip side, all three applications had really become a &quot;suite&quot; of sorts and the website was very popular. In addition, netrep was the main source for the data, so I&apos;d have to come up with my own scheme for the data and come up with it fast. So I decided to keep netrep. I could easily keep it running and update things when the need presented.&lt;/p&gt;
&lt;p&gt;So here I was, all of the sudden in charge of three major, production grade applications, all using the same data, but in different forms, and I needed to keep them up and running with the latest sets, that seemed to come out about every month. And then the pressure hit. During one of the new set releases, a new monster &quot;subtype&quot; came out called Gemini Monsters. The way the current database was modeled, all this implied was that a new column called &quot;IsGemini&quot; be added to the database structure and you apply the appropriate values. The problem with this was that this also required changes to the structure of the &quot;portable&quot; TCR used by Deck Studio and RONIN. To make matters worse, the object class that stored card data for Deck Studio decks was designed to be &quot;independent&quot; and contain all of that information as well, but as an object attribute. Due to the rigid format of the binary serialization process with custom objects, even adding a simple parameter would break all decks up to this point.&lt;/p&gt;
&lt;p&gt;This raised the big red flag that a new database structure needed to be implemented. This also raised the flag that a new deck format was needed to store the decks in. I had brainstormed some really cool ideas with djp952 back in the day about what could be done, and now was the added motiviation to make this happen. I had been fortunate that Gemini monsters weren&apos;t too popular in the game format, but later on, Synchro monsters hit the scene and that made things even worse due to their popularity. As a matter of fact, I&apos;m still in a hole on this one and need to update some images of synchro monsters accordingly.&lt;/p&gt;
&lt;p&gt;So that leads us to now, or at least the to October of last year, when the &quot;retooling&quot; started. New database, new deck, new tool names, and while I was at it, I should start expanding into multiple CCGs, since there are duelists out there that play multiple CCGs and having a single app to handle this stuff would be pretty slick.&lt;/p&gt;
</content:encoded></item><item><title>Coding To 80 Columns</title><link>https://dillieo.me/posts/development/2009-06-11-coding-to-80-columns/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-06-11-coding-to-80-columns/</guid><description>Coding To 80 Columns</description><pubDate>Thu, 11 Jun 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A while back I was reading a &lt;a href=&quot;http://stackoverflow.com/questions/110928/is-there-a-valid-reason-for-enforcing-a-maximum-width-of-80-characters-in-a-code&quot;&gt;StackOverflow&lt;/a&gt; post about how the best character width for your code.&lt;/p&gt;
&lt;p&gt;As a quick flashback, coding style was never covered in college, aside from a few mentions about variable names. When I started in the workforce, code reviews involved printing out the code and discussing it in the group. I was obsessed enough that I setup my own standard of formatting my code to 120 characters, since this made for a perfect landscape printout using a Courier 10 font. I had my properties sidebar setup perfectly to 120 characters so I could type away and know when to go to the next line. _[Yes, pretty obsessive, but hey, code wrap was a bear when done in the wrong place.] _Once I moved on to using the Consolas font, and moved on to another job with no reviews, this practice died off. The Consolas font was also &quot;smaller&quot; in appearance as well, so expanding the properties window looked weird to me.&lt;/p&gt;
&lt;p&gt;In the post, the dominant answer was to stick wtih 80 characters. This seemed rather interesting to me. On one hand I thought that really was really a waste of space on my dual 19&quot; monitor setup. It also seemed a little &quot;old fogie&quot; to try and go back to the old punch cards, which is where the length things originated from. But there was a lot of upvotes and good feedback about why to keep things at 80 characters, so I decided to give it a whirl. I was in a good position to do so in that I was midway through coding a project, so I could refactor some of the existing code and also write new code to this guidline.&lt;/p&gt;
&lt;p&gt;I found a &lt;a href=&quot;http://blogs.msdn.com/b/saraford/archive/2004/11/15/257953.aspx&quot;&gt;simple registry hack&lt;/a&gt; to get a line drawn in Visual Studio at the 80 character mark and started hacking away to some very profound results:&lt;/p&gt;
&lt;p&gt;I write some &lt;strong&gt;really, really, ugly&lt;/strong&gt; variable and method names. I mean it is one thing to avoid declaring names like &quot;c&quot; or something like that, but something like dtmPositionPositionUnderFillDate is a little overkill. &lt;em&gt;[But wait! That particular variable is referencing a given date field in a form with multiple panels that have similar names. Doing it this way helps you establish what panel and what variable you&apos;re working with and can easily be grouped with other variables in the panel.]&lt;/em&gt; Yes, that is true inner self, but there are much cleaner and shorter ways of doing that, especially if you have to compare that date to another date in your code, you wind up wrapping to a second line on a simple If x = y type statement, which really shouldn&apos;t be happening.&lt;/p&gt;
&lt;p&gt;It is is a &lt;strong&gt;lot easier&lt;/strong&gt; to debug my code &lt;em&gt;[Horray, woot, yippee]&lt;/em&gt;!!! A few people mentioned this, but it really didn&apos;t hit home until I had to start stepping through the code to debug a few things and in the line per line processing, my mind had fewer things to process, which actually made it easier for me to debug line per line to figure out what was going wrong.&lt;/p&gt;
&lt;p&gt;Code presentation is much nicer for others. I&apos;ve used a few of my updated code snippets when helping out some colleagues, and being able to paste the code into an e-mail without having to reformat it due to length is a big plus. This applies to online code postings too. Interestingly enough, this has also helped me identify some unhealthy methods in my code. They looked nice and concise in the wide format because the code was only 10 lines or so long. But when I had to condense them to the 80 character limit, the methods exploded in size. It also exposed some of the nasty variable names and methods I had listed above.&lt;/p&gt;
&lt;p&gt;I recommend you try out 80 columns for yourself. You may be surprised at some sloppy coding style that may have been hiding in the luxury of the wide screen and super high resolutions. There&apos;s no hard and fast rule to stick to 80 characters. Some people even mentioned they stayed around 100. In the grand scheme of things though, I think having a smaller width of characters to work with help you write a little more elegant code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: With the release of Visual Studio 2010, the registry hack used above will no longer work. However, the Visual Studio Pro Tools extension has a &quot;Column Guides&quot; tool built into it. You can get that &lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef&quot;&gt;here&lt;/a&gt;. Unfortunately this doesn&apos;t work with the Express Editions that are available. I&apos;m currently in the hunt for a solution. If you have one, post it here. I tried creating the necessary registry keys to no avail.&lt;/p&gt;
</content:encoded></item><item><title>Using Label Placeholders In Aspnet Applications</title><link>https://dillieo.me/posts/development/2009-05-22-using-label-placeholders-in-aspnet-applications/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-22-using-label-placeholders-in-aspnet-applications/</guid><description>Using Label Placeholders In Aspnet Applications</description><pubDate>Fri, 22 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s a little nugget that is pretty simple, but has had some really nice results for me. I write a lot of CRUD (create, retrieve, update, delete) type applications that are used in house, and one glitch I run into from time to time is having data that is out of synch appear on the page. The user has pulled up a new record, but a given field shouldn&apos;t be there because there is no data in the database. In some cases, the space allocated for the data field isn&apos;t wide enough, because the output was longer than expected.&lt;/p&gt;
&lt;p&gt;In most web applications, Label controls are used to display data fields (if not using a GridView) and the labels are set to have their Text property set to blank by default. The Label itself may even have its Visibility property set to False, thus hiding it. This allows for a quick and simple pass through with data binding. However, this starts to lead to a little bit of lazy coding, and that&apos;s where the troubles can rise up.&lt;/p&gt;
&lt;p&gt;To prevent this, I&apos;ve started putting placeholder data in my labels, and making sure the Visibility is set to true by default. So a typical label that might look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;asp:label id=&quot;lblName&quot;&quot; runat=&quot;&quot;server&quot; text=&quot;&quot; visible=&quot;false&quot;&amp;gt;&amp;lt;/asp:label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;is instead set to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;asp:label id=&quot;lblName&quot; runat=&quot;server&quot; text=&quot;[Joe D Schmoe]&quot; &amp;gt;&amp;lt;/asp:label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If I forget to see if the database filed is null or empty when iterating through my databinding results, I will see a nice glaring piece of data that shouldn&apos;t be on the page. In a page where there is easily a dozen data fileds being bound, this will enforce me to make sure I handle each piece, even if it means setting the text field to an empty string to properly handle the results.&lt;/p&gt;
&lt;p&gt;In addition, this gives me a rough visual element in the designer of what my web page is shaping up to look like without having to build/bind/preview it in the browser. If I hadn&apos;t specified a text field, the Visual Studio designer would have a &quot;lblName&quot; value sitting where the text would be, which may not show enough space for the data bound content to stay.&lt;/p&gt;
&lt;p&gt;Give label placeholders it a try. It will require a little more work to make sure you&apos;re checking all your databound fields, but you&apos;ll have better coverage of your code and your UI will be a little better laid out for the work.&lt;/p&gt;
&lt;p&gt;Peace out homeskillets!!!&lt;/p&gt;
</content:encoded></item><item><title>The Leviathan That Is Searching</title><link>https://dillieo.me/posts/development/2009-05-21-the-leviathan-that-is-searching/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-21-the-leviathan-that-is-searching/</guid><description>The Leviathan That Is Searching</description><pubDate>Thu, 21 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I realize I&apos;m jumping ahead a little bit in the chronological sequence of the Toolkit history, but I wanted to segue a bit to reflect upon an aspect of the toolkit that has probably been the most significant issue in the whole toolkit: searching for cards.&lt;/p&gt;
&lt;p&gt;While writing Deck Studio, I knew searching for cards was a very important feature. I knew that RONIN already had a search feature built into it, but I personally found it a little difficult to work with. So I decided to start from scratch and take my own search approach.&lt;/p&gt;
&lt;p&gt;The first thing I did was say &quot;Self, when you&apos;re building your latest and greatest fiend deck, how are you getting your cards?&quot;&lt;/p&gt;
&lt;p&gt;Then one of my 13 personalites began to chime in. &quot;Well, you already know the general idea of the deck...&quot; ...&quot;so lets put in the cards you know you&apos;re using.&quot;&lt;/p&gt;
&lt;p&gt;Good. That makes sense. That&apos;s what the card index is for. So I immediately use the handy auto-complete to put in Bad Reaction to Simochi, Giant Germ, and Dark Ruler Ha Des for posterity.&lt;/p&gt;
&lt;p&gt;Then the next thing I did was say &quot;Okay self, that didn&apos;t get us much, now what?&quot;&lt;/p&gt;
&lt;p&gt;Another personality chimes in: &quot;Well, now we need to find any cards that increase you opponents life points, since Simochi will reverse that.&quot;&lt;/p&gt;
&lt;p&gt;...and that&apos;s how the search panel was born. What I wanted to do is try to present the user with a &quot;natural&quot; type interface that steps the user though a couple of steps to perform the search. After displaying/hiding options based on the search, the results are displayed right below the parameters, and the user can see the details of each card.&lt;/p&gt;
&lt;p&gt;Without conciously doing so, this search is the complete opposite of the search used in RONIN. Some people love it, some people hate it, and it had made for some good discussion along the lifecycle of the toolkit, especially when netrep 2.0 was coming online.&lt;/p&gt;
&lt;p&gt;RONIN uses what I call a &quot;loose&quot; search. It will search for cards that match ANY of the criteria specified. That&apos;s why you see everything checked when you pull up the advanced search in RONIN. You&apos;ll whiddle out what you don&apos;t want to see.&lt;/p&gt;
&lt;p&gt;Deck Studio uses what I call a &quot;strict&quot; search. It will search for cards that match ALL of the criteria specified. That&apos;s why nothing is checked when you pull up the search in Deck Studio. You start out very selective and see just a few options.&lt;/p&gt;
&lt;p&gt;There are pros and cons to both. The nuances are intense. From a usability standpoint, it is definitely easier to check only a few options, as opposed to many. Depending on the deck you&apos;re trying to build, you may need a broad or small range of cards to add to the deck, and each search mechanism can get you the desired results easier. I started frying out my brain trying to figure out the various permutations of the different searches in trying to come up with a good algorithm for it all. Soon I came to the conclusion that there really was not a single best way to approach this.&lt;/p&gt;
&lt;p&gt;Starting with netrep 2.0, and being finalized in Deck Studio 1.8, you now have the option of both. Ultimately what you get is a &quot;grid&quot; of options for the various attributes the cards can have, and you can select which ones you want. More importantly, you select the loose or strict style of searching, click search, and get the results you need. A key factor in this is easily allowing the user to select or deselect groups of search options, to tie in with the loose or strict model you&apos;re searching with. Down the road, I&apos;m even debating about allowing users to use a &quot;SQL&quot; style approach to all of this, for those extreme users that have a grasp on how these concepts work.&lt;/p&gt;
&lt;p&gt;Implementing this search in a clean and consistent manner is a whole different story, and a topic for another day.&lt;/p&gt;
</content:encoded></item><item><title>A Geekish Tribute To My Computers Part 1</title><link>https://dillieo.me/posts/development/2009-05-19-a-geekish-tribute-to-my-computers-part-1/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-19-a-geekish-tribute-to-my-computers-part-1/</guid><description>A Geekish Tribute To My Computers Part 1</description><pubDate>Tue, 19 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just finished listening to &lt;a href=&quot;http://www.hanselman.com/blog/HanselminutesPodcast161BBSsAndWildcatFromMustangSoftware.aspx&quot;&gt;Scott Hanselman&apos;s interview with the Wildcat! BBS guys&lt;/a&gt; and it stirred up too many memories that I wanted to just get out in the open.&lt;/p&gt;
&lt;p&gt;The year was 1987. I was 9 years old and in third grade. On one fateful trip down to my aunt&apos;s house in San Dimas, I think I spent the entire visit in front their 286 IBM PC clone doing this think called &quot;Print Shop.&quot; It didn&apos;t matter to me that I was working on this black screen with green text, I was making cool &quot;Keep Out&quot; signs to keep my little brother out of my room. I was hooked. We made a few more trips down that summer and I got to play away.&lt;/p&gt;
&lt;p&gt;That Christmas my fate was sealed. My aunt and uncle gave me their older computer that my cousin wasn&apos;t using: a &lt;a href=&quot;http://www.old-computers.com/MUSEUM/computer.asp?c=236&quot;&gt;TI 99-4/A&lt;/a&gt;. This system had a color display, but I was stuck using the TV adapter on an old Black and White television for my monitor. It didn&apos;t matter. I HAD MY OWN COMPUTER!!! I spent many an hour playing what 3 games I had for it (mainly educational stuff). Even more important, I started dabbling in the back of one of the user manuals that had this &quot;TI Basic&quot; thing in the back. I started typing in what it told me to do and &lt;em&gt;hazzah&lt;/em&gt;, the computer was doing cool tricks like having a ball bounce around the screen and make a beep noise when it hit the edge. I also learned the valuable lesson of saving your work since one flick of the power switch made all that hard work disappear.&lt;/p&gt;
&lt;p&gt;My TI had lasted me a few years, but I had seen the computers that some of my friends were getting and I was chomping at the bit to upgrade. I&apos;ll admit that a decent chunk was due to games, but by the same token, my computer skills had availed to me that my TI had no way of saving anything. I was just stuck doing &quot;one time&quot; jobs unless I wanted to leave the system running all night and day. Finally in the spring of &apos;92, as I was finishing off my 8th grade year, my parents purchased a IBM Clone from a friend for $1200: Specs: 386 SX-16 with a 20 MB hard drive, 2MB of RAM, SVGA graphics card, and a 2400 baud modem. I also learned the valuable lesson of UI development, since the folks we purchased the computer from forgot to give us the mouse and it took me a full day to discover the tab key moved me around the various windows in DOS Shell.&lt;/p&gt;
&lt;p&gt;While slated (probably for purchase justification) as a &quot;family computer&quot; my brother and parents didn&apos;t really know how to use the computer, it essentially was my own playground. I quickly got rid of the DOS Shell and enjoyed many an hour in the world of DOS: Batch files, program executables, I even started dabbling a bit in C, though it was a lot more daunting to me than Basic.&lt;/p&gt;
&lt;p&gt;This &quot;family computer&quot; also became a test ground to learn the internals of a machine too. I&apos;ll never forget when I saved up my money to purchase a Sound Blaster Pro and had one of my &quot;expert&quot; friends come over and show me how to drop the card in, just to make sure I didn&apos;t break anything. I later upgraded to a 33.6K baud modem thanks to most savings and a good deal at Costco.&lt;/p&gt;
&lt;p&gt;Most importantly though, this computer survived all through high school thanks to some upgrading along the way. At the end of its life, the machine was sporting a nice 486-DX33 processor with a whopping 5 MB of RAM. Yes, 5MB of RAM. Impossible, you say. Typically yes, but here was the interesting fluke &lt;em&gt;[and bragging rights]&lt;/em&gt; about the upgrade. The old machine was using a SIMM chip format for its RAM. The new motherboard required me to purchase DIMM chip format RAM. I may be off with the format names, but you get the drift. The minimum I could get was 4MB. It was rather costly, but worth it. However, as the computer shop owners were installing the motherboard &lt;em&gt;[I didn&apos;t trust my Jedi skills THIS much yet]&lt;/em&gt;, they discovered that there was actually one memory bank available on the motherboard for SIMM RAM. Unsure if the system was exclusive to which bank was used, they went ahead and loaded up the SIMM bank with some of my old RAM and the system worked! It booted up to a nice and funky 5120 bytes on the memory check and I was all set!&lt;/p&gt;
&lt;p&gt;The most influential aspect of my computing during this phase was the modem itself. A friend of mine was pretty hard core into the computers, so he invited me over one day and gave me the ropes of modem/BBS etiquette and a couple of local BBSes that were up and running locally. From here I met some older friends that mentored me in the wide world of computing &lt;em&gt;[heck I think I was at least 20 years younger than all of them 8^D]&lt;/em&gt; and generally got my geek knack into high gear. I was quite proud of the fact that I wrote my own script from Qmodem that called out to a custom batch file that initiated a ZModem transfer of files, and eventually I moved to Windows 3.1, only to wrestle with Trumpet Winsock to get things going with the Internet. That said, seeing that first download of some Hieronymous Bosch artwork from the Louvre Museum online was insanely cool.&lt;/p&gt;
&lt;p&gt;In the next chapter, the rest of my computer &quot;family.&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dillieo.me/blogengine/image.axd?picture=2009%2f8%2fClassicAtariDeskSmall.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Power Of Mentoring For Others And You</title><link>https://dillieo.me/posts/development/2009-05-15-the-power-of-mentoring-for-others-and-you/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-15-the-power-of-mentoring-for-others-and-you/</guid><description>The Power Of Mentoring For Others And You</description><pubDate>Fri, 15 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week I was asked to show one of my colleagues how the web service works that I had setup for accessing our AS/400 database. The person in question was our AS/400 developer, who didn&apos;t have a robust knowledge of the .NET framework. They had done a couple of applications in the past, but most of that knowledge had escaped them.&lt;/p&gt;
&lt;p&gt;So after going over the concept of strongly-typed vs. weakly-typed DataTables and why I like to use them with my applications, I sent over the code I used in to call one of the web services and store the results in a strongly typed table. One little nuance to it was that the results sent back from the AS/400 brought back all of the check locations, and I needed to filter out the inactive locations that had a &quot;-Z&quot; in their name. As I walked them through the code sample, we came across one little piece of code that took a bit more explaining than I expected:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;If TempRow(&quot;CHECKLOCATIONDESCRIPTION&quot;).ToString.IndexOf(&quot;-Z&quot;) = -1 Then

   drCheckLocation = Results.NewCheckLocationRow()
   drCheckLocation.Id = Integer.Parse(TempRow(&quot;CHECKLOCATIONCODE&quot;).ToString)
   drCheckLocation.Description = TempRow(&quot;CHECKLOCATIONDESCRIPTION&quot;).ToString
   Results.Rows.Add(drCheckLocation)

End If
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first issue arose as to what the first line of code was doing. The long explanation is that the TempRow has a column named CHECKLOCATIONDESCRIPTION and we need to check that value to see if the &quot;-Z&quot; is there to filter out. The IndexOf method allows for a string to be passed in. If it doesn&apos;t find the value, it returns a -1, since the string uses a 0 base index array.&lt;/p&gt;
&lt;p&gt;As I was trying to explain this, it dawned on me, that there was a much cleaner way to do this, thanks to some &quot;new&quot; methods &lt;em&gt;[I really gotta remmeber to target my brain for stuff past 1.1]&lt;/em&gt; that are available in the string class:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;If Not TempRow(&quot;CHECKLOCATIONDESCRIPTION&quot;).ToString.Contains(&quot;-Z&quot;) Then
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now this is MUCH simpler to read, and it is very self-documenting since it describes exactly what we&apos;re trying to do, to see if this particular column does not contains the &quot;-Z&quot; value within the string.&lt;/p&gt;
&lt;p&gt;Then we moved on to the block of code that evaluates when we need to add a row to the DataTable. I began to explain how the DataTable object will accept a variety of ways to add a new row, but I&apos;ve always had issues with using an Array due to typing issues within the strongly typed table. In addition, one of the nuances I&apos;ve discovered along the way is that if you do want to use a DataRow object to add to a DataTable, the row has to be &quot;attached&quot; to the table already, by having the table itself create an empty row for you to shovel data into.&lt;/p&gt;
&lt;p&gt;And then I remembered something I stumbled upon while working on my &lt;a href=&quot;http://ccgtoolkit.com/&quot;&gt;CCG Toolkit&lt;/a&gt; project the other night. In addition to all the lovely named columns and such you can access through the object, there is also the following method: Add*YourTableName_Row, which will take all the individual columns as parameters, create the new row, and add it to the table in 1 shot! *[Sometimes it pays to just scroll through the Intellisense results every now and then...]_&lt;/p&gt;
&lt;p&gt;We updated the code within the block and here&apos;s what it looks like now:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;If Not TempRow(&quot;CHECKLOCATIONDESCRIPTION&quot;).ToString.Contains(&quot;-Z&quot;) Then

   Results.AddCheckLocationRow _
           (Integer.Parse(TempRow(&quot;CHECKLOCATIONCODE&quot;).ToString), _
            TempRow(&quot;CHECKLOCATIONDESCRIPTION&quot;).ToString)

End If
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result is that we have a more &quot;natural&quot; condition that we&apos;re evaluating here and our 4 lines of code to add a new row has been consolidated into 1. This new code was MUCH easier for my colleague to understand, and I had a quick refactoring session on my own code. Everybody wins!&lt;/p&gt;
&lt;p&gt;I offer this little story just to say if you&apos;re not trying to help others with coding, give it a shot, even going over a small block of code will help them AND yourself.&lt;/p&gt;
</content:encoded></item><item><title>The Toolkit Backstory Part 2</title><link>https://dillieo.me/posts/development/2009-05-15-the-toolkit-backstory-part-2/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-15-the-toolkit-backstory-part-2/</guid><description>The Toolkit Backstory Part 2</description><pubDate>Fri, 15 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So I was in! I was part of a group making some good software and overall improving the Yu-Gi-Oh! community. To my suprise, there was already a decent infrastructure in place. There was the &lt;a href=&quot;http://netrep.net/&quot;&gt;netrep site&lt;/a&gt;, quickly moving up the ranks since it had card data and rulings. There was &lt;a href=&quot;http://roninpro.com/&quot;&gt;RONIN&lt;/a&gt;, being quickly consumed by judges everywhere, and the &lt;a href=&quot;http://cogonline.net/&quot;&gt;City of Gamers&lt;/a&gt; website, which was kind of the hub for the applications, but more importantly was standing out as a forum site that didn&apos;t tolerate the flaming and trolling that a lot of other sites were known for.&lt;/p&gt;
&lt;p&gt;So my task was to become a giant like the rest of the ones already in place. I was intimidated, to say the least &lt;em&gt;[shoot, I&apos;m still getting my feet wet in any kind of intensive app outside of CRUD stuff]&lt;/em&gt;. However, the lead RONIN guy took me under his wing and gave me lots of advice when I needed it and showed me how to link into the existing RONIN database to solve one piece of the puzzle &lt;em&gt;[Forever my Yoda, you ROCK djp952]&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;From the beginning, I always wanted Deck Studio to be a &quot;by duelists for duelists&quot; type program. Since I had recently converted to the fiendish arts in my own playstyle, and barely any cards to support it, this was the perfect time to &lt;a href=&quot;http://en.wikipedia.org/wiki/Eating_one&apos;s_own_dog_food&quot;&gt;eat my own dogfood&lt;/a&gt;. The first thing on my mind was the cards themselves. I&apos;m somewhat of a data junkie anyway, so being able to see a complete list of cards was simply golden. In addition, there was so much good artwork going on to these cards that it was a must to have it available for the duelists. Even now I like to take a peek at Crush Card Virus and dream of the day I&apos;ll have an actual card in my hands.&lt;/p&gt;
&lt;p&gt;The wish list then began to flow of all the things that needed to go into the application. The entire deck contents needed to be viewed, but being able to drill down into your monster lineup to verify you didn&apos;t have too many tribute monsters was also needed. Spells and Traps would also need to have this kind of drill down ability. In my own deck building, I started to track what kind of strengths and weaknesses the deck had. I&apos;m also a technical and combo-style duelist, so I needed a place to be able to track all the combos the deck posessed. I&apos;m well aware that a lot of folks probably wouldn&apos;t want to track this data, but it was easier to have it there and not use it, than put it in later.&lt;/p&gt;
&lt;p&gt;It was a given that the application should validate against the current ban lists. One of the goals of Deck Studio was to allow duelists to scrutinize their deck the day before a big tourney, trying out various incarnations, without having to constantly be pulling cards in and out of their tins/binders/whatever until the final deck was polished and ready to roll. This is also what led into the deck printing feature. I never did find out how much that feature was actually used, outside of a judge who was using it for printing deck lists at tournaments.&lt;/p&gt;
&lt;p&gt;Organizing all of this information into a layout that comprehensive, but not obtrusive, proved to be the biggest challenge. Part of the reason &quot;Studio&quot; exists in the name of the program is that I was inspired by the layout Visual Studio uses. By having the tools and properties available on the &quot;edges&quot; of the workspace, it allowed you to focus on the deck itself (in the center) and easily drag in the components as you needed them. If you were really focusing on deck layout, or didn&apos;t have enough space, you could simply hide the panels you don&apos;t need, or slide them out temporarily to drag items over. Similarly, items like the deck validation and simulation were important pieces to the application, but the average user wasn&apos;t using them all the time, since the primary activity was building the deck. Having a slide up &quot;status&quot; window worked perfectly since it was akin to the &quot;build&quot; process that occurs when compiling the source code in Visual Studio.&lt;/p&gt;
&lt;p&gt;So all of this thought, coding, messing up &lt;em&gt;[extensively]&lt;/em&gt;, and testing led us through several beta cycles &lt;em&gt;[named aptly after fiends of course]&lt;/em&gt; until Deck Studio went to 1.0 status. As satisfying and exciting as the 1.0 release date was, it was only a quick stop off. There were still so many features that didn&apos;t make it into 1.0 and there were now plenty of small bugs and support features that needed to go into things. Maintenance life had begun, which was a mixed blessing. It was great to see that there was enough use of Deck Studio that people were finding bugs, but a little tedious in that it prevented me from being able to work on feature enhancements.&lt;/p&gt;
&lt;p&gt;Sadly, around the time Deck Studio was at 1.5 status, Empyre Group was not faring too well, and I&apos;d be spending the next year or so making some big decisions on my own and having to divert feature enhancements even more. That we&apos;ll save for the final installment of the back story.&lt;/p&gt;
&lt;p&gt;:: Peace out homeskillets! ::&lt;/p&gt;
</content:encoded></item><item><title>Log4Net A Quick Start Tutorial And Guide</title><link>https://dillieo.me/posts/development/2009-05-07-log4net-a-quick-start-tutorial-and-guide/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-07-log4net-a-quick-start-tutorial-and-guide/</guid><description>Log4Net A Quick Start Tutorial And Guide</description><pubDate>Thu, 07 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Synopsis&lt;/h2&gt;
&lt;p&gt;Log4Net, a port of the well known Log4J being used in Java environments, provides a feature rich, highly configurable, and simple to configure logging mechanism that you can have up and running in no time. This article will give you a basic overview of the library and how you can integrate it into your projects quickly and easily.&lt;/p&gt;
&lt;p&gt;Application logging is a great way to debug and maintain your application for its entire lifecycle. Unfortunately, setting up an efficient logging mechanism can be time consuming and often not feasible with short deadline projects. Those days are no more. Log4Net, a port of the well known Log4J being used in Java environments, provides a feature rich, highly configurable, and simple to configure logging mechanism that you can have up and running in no time. This article will give you a basic overview of the library and how you can integrate it into your projects quickly and easily.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Updated 4/30/2009 - Found additional key to add if embedding log4net configuration within web.config file. This allows it to work in medium trust environments. Thanks &lt;a href=&quot;http://haacked.com/archive/2006/07/09/ConfiguringLog4NetWithASP.NET2.0InMediumTrust.aspx&quot;&gt;Phil Haack!&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The Fundamentals&lt;/h2&gt;
&lt;p&gt;You can download Log4Net from the &lt;a href=&quot;http://logging.apache.org/log4net&quot;&gt;Apache Software Foundation website&lt;/a&gt;. The download has source code, documentation, tutorials, examples, and a precompiled binary so that you can immediately add it to your application.&lt;/p&gt;
&lt;p&gt;Log4Net contains 5 levels of debugging and two &quot;Catch All / Revoke All&quot; levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ALL&lt;/li&gt;
&lt;li&gt;DEBUG&lt;/li&gt;
&lt;li&gt;INFO&lt;/li&gt;
&lt;li&gt;WARN&lt;/li&gt;
&lt;li&gt;ERROR&lt;/li&gt;
&lt;li&gt;FATAL&lt;/li&gt;
&lt;li&gt;OFF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These levels function heirarchically, so that a debug level set to &quot;WARN&quot; will log any WARN, ERROR, or FATAL log events. The debug level is configured through a XML configuration file. That way you can change the debug level on the fly as needed without having to recompile the application.&lt;/p&gt;
&lt;p&gt;Log4Net has three types of objects that make the application work:&lt;/p&gt;
&lt;p&gt;**Loggers: **These serve as the &quot;receivers&quot; of events from the class itself and do any processing necessary, such as determining the log level, retrieving the necessary code/exception data, and passing it on to the appender. **Appenders: **These serve to save the logging information to the medium specified. There are a wide variety of appenders available including File, SMTP, Database, Windows Event Log, and more. **Layouts: **Layouts are the format in which the appenders write their data. Some layouts, such as XML Layouts, have a fixed format. Others, such as Pattern Layouts, allow you to customize which log information to write to the appender. Once you have defined a logger, appender, and layout in your configuration file, you&apos;re all set to log within your application!&lt;/p&gt;
&lt;h2&gt;Configuring Your Logging Environment&lt;/h2&gt;
&lt;p&gt;The beauty of Log4Net is that you can mix and match loggers, appenders, and layouts however you like. For example, you could have one logger tracking all FATAL events using a SMTP appender to send an e-mail while also having a second logger tracking all WARN and higher events to a file appender for general purposes. You could also have a single logger with multiple file appenders, each using a different pattern layout. One layout would be optimized for human consumption and the other for another computer to read and process.&lt;/p&gt;
&lt;p&gt;Also remember that loggers are attached to a given class. With that in mind you can have one logger attached to the root class of your application doing general logging and a second logger attached to your critical business operations class logging at the intensive debug level. Since all of these loggers can be turned on or off through the configuration file, you can turn on the high level debugging only when necessary and have it zero in only on the mission critical information.&lt;/p&gt;
&lt;p&gt;For this article, we&apos;re going to keep things simple. We are going to use the XML logging pattern that is compatible with the log4j event DTD. The advantage of this is that the log files are immediately compatible with the Chainsaw log viewer. I&apos;ll explain that later. We&apos;ll go ahead and use a file appender and log everything from the WARN level and above.&lt;/p&gt;
&lt;p&gt;To make this happen, we need to create a configuration file for Log4Net. I prefer to use a seperate file so that multiple appenders/layouts don&apos;t cause the main configuration file to get too complex to read. Create your AssemblyName.dll.log4net like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;log4net debug=&quot;false&quot;&amp;gt; &amp;lt;appender name=&quot;XmlSchemaFileAppender&quot; type=&quot;log4net.Appender.FileAppender&quot;&amp;gt; &amp;lt;file value=&quot;AppLog.xml&quot; /&amp;gt; &amp;lt;appendToFile value=&quot;true&quot; /&amp;gt; &amp;lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&amp;gt; &amp;lt;layout type=&quot;log4net.Layout.XmlLayout&quot; /&amp;gt; &amp;lt;/appender&amp;gt;

&amp;lt;root&amp;gt; &amp;lt;level value=&quot;WARN&quot; /&amp;gt; &amp;lt;appender-ref ref=&quot;XmlSchemaFileAppender&quot; /&amp;gt; &amp;lt;/root&amp;gt; &amp;lt;/log4net&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note: Your file name needs to match the assembly name that the application is compiled into for this particular configuration.&lt;/p&gt;
&lt;p&gt;If you want to have your log4net configuration in your web.config / app.config file, you need to do two things. The first is to add the following section inside &amp;lt;configSections&amp;amp;gt; tag in your file:&lt;/p&gt;
&lt;p&gt;Then add everything listed above just before the closing &amp;lt;/configuration&amp;gt; tag in your file except for the first line that reads &quot;&amp;lt;?xml version...&quot;&lt;/p&gt;
&lt;p&gt;I have added two important flags to this configuration. The &quot;appendToFile&quot; flag will make the log continue to append to the file instead of overwriting it. The &quot;lockingModel&quot; flag will put a minimal lock on the file, that way I can have multiple processes log to the same file if necessary. I can also view this file in other application, such as Hacksaw, Chainsaw, or even Notepad without disrupting the logging process.&lt;/p&gt;
&lt;p&gt;In addition, we need to specify that we want to have Log4Net look for a .log4net file for initialization/configuration purposes. This code only needs to be added once into your application and I typically do it at the beginning of my Global.asax.vb / Main.vb file:&lt;/p&gt;
&lt;p&gt;Note: If you are are running a Web Site or Web Application that does not compile your codebehind files into a .dll file, or you have your log4net configuration set in your web.config/app.config file, you will need to put your configuration in your web.config file and a Global.asax.vb file will not be available to you. Instead, add the following code to your Application_Start method in your Global.asax file:&lt;/p&gt;
&lt;p&gt;That&apos;s all there is to it. Now you are ready to start logging your application.&lt;/p&gt;
&lt;h2&gt;Logging Your Application&lt;/h2&gt;
&lt;p&gt;The first step to log an event is to make sure a logger has been defined for the class. To instantiate a new logger, simply declare as a variable for the entire class: Public Class LogSample&lt;/p&gt;
&lt;p&gt;At this point, you can log events according to your own desires. I typically like to use the ERROR log level to log any exceptions that are caught by the application. I will use the INFO log level as a &quot;first level&quot; debugging scheme to show whenever I enter or exit a method. From there I use the DEBUG log level to trace detailed information. The FATAL log level is used for any exceptions that I have failed to catch in my web based applications. All of this logging then makes a class look something like this...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Public Class LogSample

Private Shared ReadOnly Log As log4net.ILog = log4net.LogManager.GetLogger(GetType(LogSample))

Public Function AddNumbers(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer

Dim intResults As Integer

Log.Info(Starting AddNumbers Method...) Log.Debug(Number1 Specified: &amp;amp;amp;amp;amp; Number1) Log.Debug(Number2 Specified: &amp;amp;amp;amp;amp; Number2)

intResults = Number1 + Number2

Try

intResults = Number1 + Number2

Catch ex As Exception

Log.Error(Error Adding Numbers., ex)

End Try

Log.Info(AddNumbers Method Complete.)

Return intResults

End Function

End Class
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice that the Log.Error method has a second parameter specified, which appens to be the exception thrown. All of the logging methods have an overloaded signature that will accept an exception as an argument. The details of the exception is parsed and added to the log accordingly.&lt;/p&gt;
&lt;p&gt;One thing I want to point out in this example is that the logging may seem excessive for such a trivial method. The thing to realize is that since logging level is dynamically configurable, we can slide the logging level depending on our needs. By default, the logging mode is set to WARN, which means that only the exception message will be logged. This works perfect for the day to day operations of the application, and if an exception occurs, most likely we will have all the information we need to solve the issue. But if we needed to go deeper into the application to debug an issue, all you have to do is update the logging level to INFO or DEBUG to get the appropriate data you need. When debugging is complete, change the logging level back to WARN and all the details are no longer logged. This scenario works out great for web environments where you don&apos;t have direct access to debug the source code. In addition, having the log4net configuration in a seperate file allows you to change the logging level without triggering a refresh of IIS, which would occur if the configuration was stored in the Web.config file.&lt;/p&gt;
&lt;h2&gt;Added Bonus for ASP.NET Applications&lt;/h2&gt;
&lt;p&gt;Sometimes the file appender isn&apos;t behaving properly in an Intranet environment, or I want to do some detailed debugging of my web application by using the ASP.NET tracer. The beautiful thing about log4net is that there is a built in appender for the ASP.NET tracer and you only need to add a few lines of code to get it running. Building off of our configuration above, simply add a second appender below the XML File Schema Appender with the following information:&lt;/p&gt;
&lt;p&gt;Then add a reference to this appender into your root section just below the XML File Schema Appender reference:&lt;/p&gt;
&lt;p&gt;Now when you turn on tracing through your web.config file, you&apos;ll see all of your logging details merged in with the trace details.&lt;/p&gt;
&lt;h2&gt;ASP.NET: One Tricky Detail&lt;/h2&gt;
&lt;p&gt;One thing to take note of when logging in your ASP.NET applications is that the log4net will attempt to log using whatever user account is assigned to the ASP.NET worker process itself. Depending on your server and network configuration, this can cause problems with the log being able to write entires. Since log4net does not throw exceptions when it cannot perform its duties (you need to turn on debug mode for that), you will have an empty log and no means of tracking things.&lt;/p&gt;
&lt;p&gt;There are a couple of workarounds to this. The first is to give your log file or folder containing your log file write priviliges by everybody. The second is to elevate the privileges of the user account running the ASP.NET process. Both of these solutions can open up extra security holes that may not be desirable.&lt;/p&gt;
&lt;p&gt;The solution that has worked best in my Intranet environment is to turn on identity impersonation in the web.config file. Granted we have this solution in place anyway to facilitate Active Directory logins, but doing this allows the log4net to write entries as the user currently logged in to the application. In addition, the log file itself has granted write priviliges to Authenticated Users, so this prevents unknown users from potentially tampering with things.&lt;/p&gt;
&lt;h2&gt;Viewing the Log&lt;/h2&gt;
&lt;p&gt;Once you have your log entries generated, you need a means of viewing the log. This will depend on what type of appender and layout pattern you are using. Notepad can be used to view most of the FileAppender logs. You could even setup the Pattern layout to meet a standard you could easily parse into another applcation, such as a CSV format for Excel. The example above used the XmlLayoutSchema layout because it works great with the &lt;a href=&quot;http://hacksaw.codeplex.com/&quot;&gt;Hacksaw&lt;/a&gt; log viewing tool (a personal creation).&lt;/p&gt;
&lt;p&gt;In addition, you could use the XmlLayoutSchemaLog4j layout pattern. This pattern is also viewable within the Hacksaw tool, but Apache has also provided a great tool for viewing log entries that are in this format. The tool is called Chainsaw and it can be downloaded or run as a Java Web Start application. The application is easy to use and can also be used as an UDP Receiver to recieve log events that the UDP appender sends out in real time.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;I hope this article has you excited about Log4Net. It provides a free and robust method of logging anything you desire within you applications. It is easy to configure the log in any way you desire and extend it to meet your custom logging needs. Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>The Intellectual And The Spiritual Evelyn Underhill</title><link>https://dillieo.me/posts/growth/2009-05-06-the-intellectual-and-the-spiritual-evelyn-underhill/</link><guid isPermaLink="true">https://dillieo.me/posts/growth/2009-05-06-the-intellectual-and-the-spiritual-evelyn-underhill/</guid><description>The Intellectual And The Spiritual Evelyn Underhill</description><pubDate>Wed, 06 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My devotions this morning brought me to Evelyn Underhill, a woman during the early twentieth century who brought a lot to the table in developing the spiritual life.&lt;/p&gt;
&lt;p&gt;Most notably this morning was this passage, which I think most accurately reflects the state of integration I&apos;m trying to find wtih the various aspects of my life:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In saying this--in insisting that reason has a well-marked and necessary place in the soul&apos;s approach to God--I am not advocating a religious intellectualism. I am well aware that it is &quot;by love,&quot; as the old mystic said, &quot;God may be gotten and beheld; by thought never.&quot; It is humility and love that are essential for successful prayer. But surely it is a mistake to suppose that these qualities cannot exist side by side with an active adn disciplined intelligence.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>The Toolkit Backstory Part 1</title><link>https://dillieo.me/posts/development/2009-05-04-the-toolkit-backstory-part-1/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-04-the-toolkit-backstory-part-1/</guid><description>The Toolkit Backstory Part 1</description><pubDate>Mon, 04 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Back in 2004 or so, I was just getting my feet wet in the Yu-Gi-Oh community. I loved the game, but was a little bit of a &quot;closet duelist&quot; since I had no clue how many 20 somethings were actually playing the game. My excuse was to get into judging. I figured that way I could get an idea for the field, plus getting a handle on the game and helping others do so was a big passion of mine.&lt;/p&gt;
&lt;p&gt;Through this process I stumbled upon a program called &lt;a href=&quot;http://roninpro.com/&quot;&gt;RONIN&lt;/a&gt;, the Rulings Online Network Information Node. This tool was simply beautiful. It had all of the current official rulings and an easy method to retrieve them. The complete index of cards was listed on the side and there was an auto-complete textbox attached to it to quickly get you to the card you needed. On top of that, there was an advanced search that allowed you to narrow down specific types of cards to search.&lt;/p&gt;
&lt;p&gt;What was really going on here was that I now had a rulings tool AND a basic card searching tool when I wanted to build my decks. I had not the time (nor the finances) to track down every card in the game (which was still pretty limited mind you, this was the second or third set released). This excited me to no end.&lt;/p&gt;
&lt;p&gt;In addition to the functionality, my programmer site was giddy over the architecture of the program. There was the online component to viewing data (over a web service), an offiline mode which consisted in generating a data module to store all the rulings, a separate module that stored all the card names that was dynamically. A whole slew of stuff I was itching to try out since my primary job is in the web application side of things. On top of that, it was written in .NET, something I was getting immersed in and run really well, despite a lot of hate it seems to garner.&lt;/p&gt;
&lt;p&gt;So I jumped over to the &lt;a href=&quot;http://cogonline.net/&quot;&gt;City of Gamers&lt;/a&gt; (CoG) forums, which was the host of the application. I was hoping to start pinging the brains of the folks over there for info, and maybe even help join the team to further the cause. I had some really warm feedback from the lead (and only for that matter) developer on things and I make sure to hang around, offer some feature requests, attempt to debug issues, and the like, just waiting for the chance to jump.&lt;/p&gt;
&lt;p&gt;...and then it happened.&lt;/p&gt;
&lt;p&gt;Empyre Group, the folks running CoG and RONIN, were offering up a programming contest to help them add to the functionality of RONIN. More specifically, they wanted a tool that could be run daily that would ping the primarily rulings site to see if there were any additions, modifications, or removals to rulings, and generate a report as such.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[This is it! My big break! Don&apos;t blow this one!]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So I spent the next week coding like a madman. This was all new territory to me: .NET 1.1 Framework (I was still working my way in from a Perl/PHP background), WinForms, HTML Scraping using Regular Expressions, some form of file storage for this stuff. Everything!!! I had no clue how many others were entering this contest, but the traffic was increasing on the CoG site, and I&apos;m sure that there were other folks of my ilk playing the game, and I was still a noob, so I had to impress.&lt;/p&gt;
&lt;p&gt;In the end, I was rather impressed with the results, especially for my first shot at things. Don&apos;t get me wrong, the overall package was still pretty ugly. I discovered that DataBinding to DataGrids in WinForms was a bit more complicated that in WebForms, I had part of the application configuration through a menu option in the application, and another part of it stored in the app.config file, and a few really ugly strings that had to be used to the regular expression split on the card and ruling dividers since I hadn&apos;t optimized that process yet. But I had a nice little acronym for it RUN (RONIN Updating Node). Yes, I am an acronym junkie, you&apos;ll have to get used to it. Even more cleverly &lt;em&gt;[and probably to my demise]&lt;/em&gt;, I could say &quot;Run RONIN Run!!!&quot; and let the application update itself.&lt;/p&gt;
&lt;p&gt;I submitted the application and waited, agonizing for a few days. The source code was to be provided too, which would either help or hinder, since my coding style was still quite green and not too nice. To my credit, I did have commenting drilled into my system pretty early in the game, so that should score a few points on make sure things were properly outlined.&lt;/p&gt;
&lt;p&gt;A few days later, I received an e-mail from the lead developer at Empyre Group. &lt;em&gt;[GULP]&lt;/em&gt; Pausing a moment before opening the message &lt;em&gt;[Did they hate it?! Did the app actually run when they fired it off?! Was the code abysmal?!]&lt;/em&gt;, I opened up the message and discovered I HAD WON! One particular phrase stuck out in the message... &lt;em&gt;the application was a bit of overkill from what we were expecting&lt;/em&gt;... and I never found out if that was a good or a bad thing. I did discover later on that I had been the ONLY applicant to the process. 8^D However, what was more important was that A) I was getting some Yugi swag as the primary prize, and B) they wanted to know if I was interested in joining the team on a new project.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Are you kidding?! That&apos;s why I entered in the first place!!!]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;With only a little hesitation, I said most definitely I wanted to join. I had to clear things with my wife first, because from what I was gathering, Empyre Group was getting ready to move into high gear and that would mean some late nights slingin some code. She approved, as long as EVERY night wasn&apos;t a coding night. From there the proposition came to me. Empyre Group wanted to have a deck building program that would better fill the needs of the deck builders out there, since RONIN wasn&apos;t designed for that. The best part was that they wanted ME _[Really me?! The rookie in the crew?!] _to come up with some ideas. They weren&apos;t pushing anything on me, at least initially, they wanted to know my thoughts on the issue.&lt;/p&gt;
&lt;p&gt;So I began to start learning a TONS about coding from my own coding Yoda, djp952 (mad props to ya, if you&apos;re still out there peeking in every now and then!). A lot of it came in the form of viewing the RONIN code and discussing ideas on how this new deck building program would work. So thus began my life as an EGI coder on the side.&lt;/p&gt;
&lt;p&gt;In the next issue...the evolution of Deck Studio.&lt;/p&gt;
</content:encoded></item><item><title>Supadillieo</title><link>https://dillieo.me/posts/development/2009-05-01-supadillieo/</link><guid isPermaLink="true">https://dillieo.me/posts/development/2009-05-01-supadillieo/</guid><description>Supadillieo</description><pubDate>Fri, 01 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;...which loosely translated is &quot;Warmest greetings to you friend!&quot;&lt;/p&gt;
&lt;p&gt;So I&apos;m finally &quot;caving in.&quot; I&apos;ve been around the net for a while and just about everybody has a blog. Shoot, I&apos;ve always considered myself the more &quot;geekier&quot; chap in my circles of friends and most of them already have blogs! 8^D So I&apos;m tossing my cards into the hat.&lt;/p&gt;
&lt;p&gt;Primarily though, I wanted to get this up and running in reponse to my ongoing hobby project, the Yu-Gi-Oh! Toolkit. I&apos;ve been working on it in various forms for about 4 years now &lt;em&gt;[it&apos;s scary how time flies]&lt;/em&gt; and I want to document how I&apos;ve been merging three seperate, yes similar projects into a single suite and all the cool stuff I&apos;ve found along the way.&lt;/p&gt;
&lt;p&gt;I&apos;ll tell ya that I&apos;ve learned more working on the toolkit than at my primary job, primarily due to the fact that I&apos;m dealing with areas outside of my normal work, so I&apos;m digging into documentation more, covering a broader range of topics, and getting good feedback from the community.&lt;/p&gt;
&lt;p&gt;I also realized I do have venue here to parse out some thoughts on life in general, since I&apos;ve really reached a point where I&apos;m working to integrate the many facets of my life together, hence the subtitle of the blog.&lt;/p&gt;
&lt;p&gt;You won&apos;t find anything profound here, but every now and then the good Lord puts a nugget or two of wisdom in there that manifests itslef, and I hope to share.&lt;/p&gt;
&lt;p&gt;So until next time... peace out homeskillets!!! &lt;em&gt;[which loosely translated is &quot;Take care until next we meet my dear and wonderful friends.&quot;]&lt;/em&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>