Weekly Twitter Dump in C# Using TweetSharp and NVelocity

Dec
23
2009

Last week, I posted a selection of postings that I made on Twitter. Because I tend to find more "Twitter-sized" chunks of time than "blog post-sized" bits, it provides a way of sort of taking notes in public.

That fits in well with how I've long handled even longer-form blogging. I gather flotsam and jetsam from my own thoughts as well as my input streams, sort and ruminate on it and share the result.

However, when your notes are scattered across notebooks, Kindle clippings, Twitter postings, Delicious bookmarks, saved RSS items from Google Reader, etc, gathering that all together in one place to digest and transform becomes a challenge.

To that end, I've been slowly building up prototype code to gather each of those sources. A few months ago, I took care of gathering up my eBook notes via the Kindle. Today, I used TweetSharp to grab both my own Twitter postings as well as those that I marked as "favorites". So, I'm sharing that prototype with you.

Read the rest of this entry »

It’s Complicated. You’ll Understand.

Sep
13
2009

One of the most critical skills for a software developer is the ability to communicate a complex idea to other people. Whether another developer, a business analyst, client or manager, if you can’t get an idea across, lots of things get much, much harder.

That failed communication can prevent your project from getting funding, result in the wrong technology being chosen and, well, can make you look like an idiot.

For a variety of reasons, many developers struggle with this particular skill. For most, their college communication classes consisted of a semester or 2 their freshman year writing a few 2 page “response” papers and that’s about it. This can leave them completely comfortable digging through SQL dumps, but uncomfortable with non-technical people who have questions.

On the job, I’ve got a reputation as an analogy guy. In a meeting, when I can tell that one side of the conversation doesn’t seem to be understanding what the other is saying, I jump in and try to bridge the gap. Often, a really well stated analogy does so just right (though my colleagues will attest to my not exactly batting 1000).

After I’ve been at a gig for a while, this approach tends to catch on with other developers when they see that being able to get a complex idea across can make their day go so much smoother. Analogies are one critical piece of that strategy. However, 2 other pieces make up the complete picture of how I structure my explanations of complex ideas.

Depending on the audience, the ratios between the 3 change, but it nearly always requires all 3 to get the idea across.

Explanation

The approach that most developers seem to default to is to just plain describe the complex idea or concept. This often places the new bits in direct relation to other pieces. Often, this looks like a dictionary definition or a Wikipedia entry’s first paragraph and consists of a straightforward description of the technology or idea.

For instance, here’s the first paragraph of the HTML article at Wikipedia:

HTML, which stands for Hyper Text Markup Language, is the predominant markup language for web pages. It provides a means to create structured documents by denoting structural semantics for text such as headings, paragraphs, lists etc as well as for links, quotes, and other items. It allows images and objects to be embedded and can be used to create interactive forms. It is written in the form of HTML elements consisting of "tags" surrounded by angle brackets within the web page content. It can include or can load scripts in languages such as JavaScript, which affect the behavior of HTML processors like Web browsers, and Cascading Style Sheets (CSS) to define the appearance and layout of text and other material. The W3C, maintainer of both HTML and CSS standards, encourages the use of CSS over explicit presentational markup.

Example

A well-chosen example is almost always necessary when explaining something complicated. While the above explanation of HTML is accurate, and may be enough for someone who was just looking to fill in their gaps in understanding, a few samples often go a long way to clarify things. For our HTML topic, we could go on to say:

For instance, to make text bold, you surround it with <b> tags like <b>this</b>.

Analogy or Dramatization

Comparing the new complex ideas to something else is immensely powerful. There’s a reason that this is the part of my communication strategy that people latch onto and remember. That’s because the analogy is a bridge from something your audience DOES understand to the thing you’re trying to tell them about.

I won’t lie. This also makes it the hardest portion to come up with. Doing this well requires thinking like your audience and understanding where they come from. Good listening skills help out a lot here.

For most audiences, comparing to every day things like: household appliances, cars, retail stores, the IRS, etc. work out well. The better you know your audience, the more appropriate you can make your analogy.

For things like HTML/HTTP, I tend to put the components like web servers and web browsers into roles as people and have them “act out” the interchange.

The web client asks the web server, "Do you have a document called index.html?"

The web server goes into the back room and looks through the files and comes up with a matching document and hands it over.

It’s in a binder (the HTTP header) that describes the contents as being a text/html document and it’s got a Post-It note on it that says there were no problems finding it.

The web client opens the binder and reads the document before going to the whiteboard to draw out what the document describes. When it includes a <b> tag, he draws the text inside of it a bit darker, etc.

Sum Up

I keep finding that when I combine all 3, deliberately, I get WAY more nods of understanding. And, the feedback I’ve gotten is that non-technical audiences thank me for “finally” explaining complex topics in a way that they understand.

It’s worth thinking about and using the next time you’re faced with puzzled faces after you mention a term or technology.

Store Kindle Clippings in SQL Server with C# and Subsonic 3's SimpleRepository

Jul
31
2009

Back in April, Shelly mentioned having seen a 2nd generation Kindle and that she really wanted one. She happened to say so on a day when I was already admiring them. So, I ordered one.

I liked hers so much that I ordered one for myself shortly thereafter and it's gone with me nearly every day, everywhere. You can read any of several hundred online reviews of the device itself. Of course, most of those will either recommend or pan the device on its own, with no real consideration of how you read.

Lots of the stuff that I saw in reviews before I bought mine goes on a list of features I couldn't care less about. For instance, in the 4 months I've had mine, I've wanted to look up precisely 5 words in the dictionary and NONE of them was in there.

At any rate, I like it and my use probably isn't exactly what people think of when the Kindle gets mentioned. See, for me, the killer feature is the ability to highlight a sentence or paragraph or entire page and save it for later. Most of what I read on it is non-fiction: technical books and stuff like Curious? and Ratio.

In print books, I've always dog-eared pages and taken notes, but retrieving that information is always less than convenient. So, when I found out that the Kindle makes clipping text from books easy, I was excited. After clipping a couple of things, I went looking at the file format. All of the clippings get dumped into a single .txt file.

While that's fine for opening and looking through or even searching through directly on the Kindle, I wanted something that made it a little more organized. So, I wrote a quick proof of concept app to parse the file and put its contents into SQL Server and thought I'd share it with you.

I'd been wanting to do a little more with Subsonic 3.x's new feature SimpleRepository, which functions somewhat similar to db4o, but still SQL underneath. It strikes me as particularly suited to quick prototyping applications just like this one.

Rather than setting up the database schema, you just create your plain old C# objects (POCO) and SimpleRepository takes care of creating the tables as well as retrieving and storing your objects.

My POC app puts each clipping/quote into the database once and avoids duplication on subsequent runs. The result is much easier to, for instance, pull together everything from one book. The Kindle stores the clippings in the order they were clipped, making a mess if you don't read books linearly. Once written, I can easily keep my database up to date with anything I want to save from anything I'm reading on the device. Now that it's in that form, it could easily sit behind a web front end or be re-mixed in other interesting ways.

Anyway, on to the sample console app. I named it IpseDixit, which is Latin for "he himself said it".
Read the rest of this entry »

Comments In Code Aren't Evil. Bad Comments Are.

Jun
06
2009

I've been watching an exchange of articles over the last couple of days stemming from 10 Commandments for Creating Good Code. It's a pretty good list, but several people (including me) think he may have missed the mark with his take on code comments.

I posted a comment on the followup, but thought I'd take a few minutes to tinker with doing some video as a response as well. Steve Borsch suggested that I should start video blogging and I figured I'd give it a shot. So, here's the video version.

My Roadtrip: 3200 Miles and 15 States in 7 Days

Apr
29
2009

A week ago Tuesday at noon, an over-worked, stressed out software developer (OK it was me) climbed into his car, and embarked on a solo journey wandering across a wide swath of America, to a new media conference and back the following Monday at 9:00am.

CreateSouthRoadTrip2009 052

That journey covered 3200 miles through 15 of these United States over the course of those 7 days. I saw a wide variety of terrain, a fairly complete survey of changing regional cuisine, a sampling of how the economy is doing in 1/3 of the country, had interesting conversations, met people I’d previously only met online (great to see all of those people in person), drove along winding country roads, left outrageous tips at restaurants across the country, bought hot dogs for a shared meal with a homeless guy in St. Louis and ate fried creamed corn just outside the World’s Largest Truckstop.

CreateSouthRoadTrip2009 060.

I listened to a lot of podcasts, a few audiobooks, lots of music and some contemplative silence. I spent time reading, reflecting, talking through ideas, and generally getting away from the stress that the last 6 months has piled on to me.

I returned refreshed (which will hopefully last more than a few days), with a renewed desire to take on the challenges in front of me.

One of the things I’ve learned about myself over the past few years is my natural tendency toward imbalance and how that can end up doing a lot of harm to the attributes of my skills portfolio and personality that people enjoy and sometimes pay for.

I’m good at what I do because I combine various disciplines and perspectives and apply them to situations in unique ways. That comes from being deeply interested in the world around me and curious about nearly every topic I can think of. However, when I let myself, I skew toward a single endeavor, like the big project I’m working on now.

In doing so, I actually injure my ability to do that project to the best of my ability. That became clear again as I was traveling. As I thought about working on other projects, podcasts, and just let my mind wander on whatever topic was in front of me, I found myself coming up with good ideas for the billable project along the way.

That goes right along with everything I’ve read in book after book about how the mind works for lateral thinking and strategic intuition. The conference itself challenged me to do something about it and carve out the necessary variety I need to be at my best.

So, I’m setting out on a deliberate process to make sure that I engage in several areas on a regular basis to keep that equilibrium. I’ll keep charging ahead on my billable project and probably keep above 40 hours a week. But, I’ll also be making sure I put in time working on my writing, working on my non-billable software projects, some art, music, reading books, doing something with the 3 hours of video I captured on the trip and getting back into podcasting.

On that last item, I’ve got 2 main ideas that I’m moving forward on, one more solid than the other. That “more solid” idea is a podcast that embraces the multi-disciplinary lifestyle, called the Polymath Podcast. I’m looking for a couple of co-hosts to get this thing off the ground, so if you’re interested, let me know.

I know that for many of those endeavors I won’t be getting very far in a given week.  However, a slow and steady investment is what I’m aiming for: one that’s sustainable. I want to leverage the benefits I’ve seen come from that cross-cutting approach and feel challenged to kick it up a notch.

We’ll see where things go from here. Regardless of the destination, the journey is its own reward.

« Older Entries  

J Wynia

For better or worse, I'm the guy who runs things here. I'm a web consultant, software developer, writer and geek from Minneapolis, MN. This site is a fairly wide cross-section of the things I'm interested in and enjoy writing about. If you'd like a more "real-time" slice of my thoughts, you should follow me on Twitter here.

Oh, and if you happen to be looking for hosting for your Subversion repositories or just web hosting in general, take a look at Dreamhost. It's what I use for Subversion and your signup helps me out.

Feeds and Links


www.flickr.com
This is a Flickr badge showing public photos from J Wynia. Make your own badge here.

Search


Pages

Archives

Computers Blog Directory
© 2003-2010 J Wynia. All original content is licensed under the terms of the Creative Commons Attribution license unless otherwise noted. Content from other sources is licensed under its original terms.