<CharlieDigital/> Programming, Politics, and uhh…pineapples


Fitting Halloween Posting

Posted by Charles Chen

Bones?  Halloween?  Yah?  No?  Wait, I got another one: Charlie "digital", get it? Okay, lame, I know :-).

In any case, that's my finger.

That little piece of bone hanging off of my middle phalange is a chip fracture that I suffered about 4 weeks ago at the gym playing basketball.  Turns out it was more than just a fracture.  As my finger was hyperextended, the tendon at the joint actually tore partially (which explains the excruciating pain and swelling) and as it tore, it actually took a small piece of the bone with it.

The ER doctor had my finger in a straight splint for the last four weeks, which totally messed up my finger because it needed to be in a curved splint to account for the hyperextension and to release stress on the tendon.  Doh!

I've been mostly getting by with 4 finger typing on my left hand, but spelling mistakes are plentiful and I feel as if my WPM is down at least 33%.

Well, looks like it'll be another 2 weeks in a splint for now.  This has me wondering: can/should us keyboard jockeys insure our hands?

In any case: Happy Halloween!

Filed under: Life, Miscellany Comments Off

Just to Share…

Posted by Charles Chen

Great quote from Jason Kidd on David D'Alessandro's Nets postings:

“I feel physically that I can average a triple-double,” Kidd added. “That’s the way I approach the season, for me to physically and mentally be involved -- rebounding, finding the open guy and scoring points and playing the game in that form of being involved (in everything). If it’s for 30 minutes, then in those 30 minutes I will give ‘em hell.”

Particularly that last sentence.

Filed under: Miscellany No Comments


Posted by Charles Chen

From an article in the Miami Herald:

Debra A. Reed voted with her boss on Wednesday at African-American Research Library and Cultural Center near Fort Lauderdale. Her vote went smoothly, but boss Gary Rudolf called her over to look at what was happening on his machine. He touched the screen for gubernatorial candidate Jim Davis, a Democrat, but the review screen repeatedly registered the Republican, Charlie Crist.


And keep in mind, this is with comparatively light usage in early voting...

What's more interesting is another article I came across:

About 15,000 internal Diebold e-mail messages also found their way to the Internet. Some referred to software patches installed on Diebold machines days before elections. Others indicated that the Microsoft Access database used in Diebold's tabulation servers was not protected by passwords.

Access? AccessThat Access?


Incredulous!  Does Diebold hire some kiddy junior programmers or something?  As much of a Microsoft fanboy as I am, I would not trust Access as a database to store votes.  No, no, no, and NO.

Filed under: Rants No Comments

The Most Absurd Piece of Pork Ever??

Posted by Charles Chen

Something about a 700 mile fence to keep out Mexican immigrants seems like wasteful pork to me.

President Bush signed a bill Thursday authorizing 700 miles of new fencing along the U.S.-Mexico border, hoping to give Republican candidates a pre-election platform for asserting they're tough on illegal immigration.

The measure Bush put into law Thursday before heading for campaign stops in Iowa and Michigan offers no money for the fence project covering one-third of the 2,100-mile border.

Wow.  You know, anouther country--another culture--tried this previously with a much more substantial wall and that didn't end so well.  True, we're not trying to keep out marauding conquerers or anything of the sort, but nonetheless, I think it's been proven time and again, that building these things is pretty much only a symbolic gesture at best; those that are determined will breach it somehow if they want to.  In this case, it's just a pretty useless waste of money.

It all seems like a huge waste of money and resources...I'm not really sure what this wall is supposed to do.  Can't people just dig under it?  Go around it?  Use a ladder or rope and climb over it?  If anything, it gives a false sense of security that may actually weaken border security exactly where the fence is.  I mean, at least without the fence, you can see what's happening on the other side.  Now this thing provides perfect cover for someone digging a hole...

Perhaps the thing that's bothered me the most is how this has turned into a black and white issue pivoting around what is essentially a uselss symbol:

Cornyn said he voted for the fence because he wanted to help demonstrate that Congress was serious about border security.

"The choice we were presented was: Are we going to vote to enhance border security, or against it?" Cornyn said. "I think that's how the vote was viewed."

Wow.  It never ceases to amaze me how bad it's getting.  Lawrence Lessig puts it best in a recent issue of Wired (albeit on a different topic, but his words still ring true):

A citizen was considered dependent when he was not free to act in the public good because his own well-being depended on a particular result.  "Nondependency" meant being able to choose what was right, without worrying about personal consequences--no agenda other than a democratic one.

All but few members of Congress devote the majority of their time to raising money for reelection.  Doing the job we've hired them to do--governing--takes a distant second place.  A good politician comes to understand precisely how much his campaign will gain or lose with each decision he makes.  Like rats in a science experiment learning which lever delivers food, politicians learn the complex dance that keeps them in office.

Rats indeed!

How about growing a pair of cojones and actually explain the issues to your constituency and talking about why the fence is a stupid idea and come up with some better solutions?  I guess it's too much to ask of many of our political leaders to come up with real solutions these days.

Filed under: Rants No Comments

Some Very Nifty JavaScripting

Posted by Charles Chen

So I came across a video on YouTube for a web calendar application called Scrybe.

I was at first unimpressed.  "Meh, another web calendar application."  But you know as with all things that get reinterpreted time and again, Scrybe brings its own flavor to the game.

I think the first thing I noticed is how polished the application was.  Obviously, a lot of detail was put not only into thinking through the functionlity, but also into how the UI is presented to the user.  It's a very simple and yet compelling UI that keeps it nice and clean.  Outlook seems...cluttered by contrast.

While most of it is standard fare for web calendars with slightly better eye candy, there are a few standout features.

One of the neat things that is first introduced in the video is offline synching capabilities.  I can only guess that this is using local cookies with timestamped data which is sent back to the server the next time the client connects.  A very cool idea that I never would have thought of using.

The second neat idea is the "thought stream" generation (or should I use the term "tracking"?).  It's a nifty idea to allow simple content generation from scattered resources into a single, continuous document that allows you to aggregate your thoughts together (as opposed to say RSS feeds, which you would use to aggregate the thoughts of others).  It looks like it's using some sort of browser plugin for this or it could be a frame/iframe toolbar.  In any case, it's a cool concept if they can add some more functionality to it (would be cool to kind of have linked thought streams on similar topics so you could follow random thought streams to kind of discover things that you otherwise would never have seen/thought of in the context of a particular subject).

The third really neat (and simple!) idea is the printout, foldable calendar!  So simple yet so useful and effective for keeping users "connected" to your app.  I'm not sure if anyone else has done this yet, but if not, kudos to these guys for coming up with something so simple and useful.

Personal note: so what's the lesson here?  Start with a basic need and reinterpret it while adding your own little twists and tweaks here and there.  They don't have to be ground breaking or particularly difficult from an engineering perspective, but natural, easy to use, and useful.  Add a little pizzaz and polish and you may have a winner on your hands.

Now if they could come up with an integrated mail client as well...

Filed under: Awesome No Comments

IE 7 Scare…

Posted by Charles Chen

Man, IE7 gave me a good scare this morning.  You see, I just put together a new development machine, and, without thinking, replaced IE6 as soon as my Windows updates were done.

So imagine my surprise when I pulled up a client page that I'm working on at the moment!  Broken!

Now, bear in mind, this page was written to be 100% compatible with FireFox while the client uses IE5.5 (my corporate client doesn't require but I prefer the developer tools in FireFox so I make it compatible for my own sake) yet IE7, which is supposedly more standards compliant now, still rendered it incorrectly.

So after the panic settled off :-D, I started to look around for solutions to perhaps some directive or header or something that I could place in my HTML to force IE7 to render as IE6.  Unfortunately, I didn't find anything of the like.  It seems like IE6 rendering has been completely discarded.  This seems like a stupid move on Microsoft's behalf (if it's indeed fact that you cannot force IE6 rendering) as many corporate clients will likely never upgrade to IE7 as it would involve lots of man hours undoing the CSS and JavaScript hacks to work around IE5.5/6 rendering.

The inclusion of such a switch would have made everyone's life a lot easier.

So of course, my next course of action was to see if I could find a standalone version of IE6 that I didn't have to install.  This lead me to a blog post by Jon Galloway on how to install and launch IE7 as standalone and  a discussion on quirksmode.org.  On the former: unfortunately for me, as I'd already installed IE7, it was too late for that and plus, I'm not really into all of that registry hacking.  On the latter: after reading the quirksmode thread comments in this thread presented various options, one of which led me to a download for a standalone IE6.

To cut to the point, this download works!  Yup, as a standalone IE6 so you can install IE7 and then have this around as your development browser to test for compatibility.  The only unfortunate thing is that I can't use it as a seamless browser in EditPlus; I have to use it as an external browser unless I set it as the system default browser :-S

What Microsoft should have done, really, is allow for some sort of in-content or HTTP header switch to ask IE7 to render in IE6 mode (include the logic for IE6 (and IE5.5 for that matter) rendering in the codebase for IE7) so that existing pages can be made compatible with IE7 with little rework.

Filed under: Dev No Comments

.Net On The Up And Up

Posted by Charles Chen

I guess it's kind of like rooting for the home team.  I don't really know how it came about, though.  I started programming back in high school starting from BASIC to C and eventually, at the college level, I worked with Java for 4 years.  It's a wonder that I'd end up--and I'll admit it--in the Microsoft camp.

It seems like many Fortune 1000 companies are catching the same bug:

A recent survey of the Fortune 1000 websites by Port80 Software shows that Microsoft's Internet Information Services (IIS) usage has doubled over the last year as it is being used by 54.9 percent of companies. In contrast, Apache usage has dropped to 23.3 percent placing it 4 percentage points lower than IIS6 alone. While the results could very well be accurate, it should be noted that Port80 Software has a bias toward Microsoft as it is one of their partners, not to mention the company specializes in developing tools and solutions for IIS.

I think C#, in particular, is making converts at the grass roots level; it's an efficient and well designed general purpose programming language that, in my opinion, trumps Java.  I think C# 3.0 (not to be confused with the oddly named .Net Framework 3.0) will once again up the ante and bring a whole host of new language features to C# (and to other MSIL languages, I suppose) that show once again why Java is becoming...archaic.

I will admit, though, one of the biggest knocks against the MS development direction is valid: they've really dumbed down development for the masses.  They've made the platform so accessible that it's kind of lowered the standards of what passes as a .Net developer.

A rant for another day, I suppose 😉

Filed under: .Net No Comments

Self Reminder

Posted by Charles Chen

I've been meaning to put together a series of articles on how to build a system to support software automation (where automation is not supported natively) after completing what I would say is my most significant project of my career a few months ago (it was indeed, quite awesome to see in action.

What's the motivation for this? There are somethings that you simply cannot do via APIs that require automation of the UI. For example, what if you want to write an engine that will browse a site list and grab screenshots of the pages? What if you need to generate content on the server in Excel, Word, or PowerPoint (pre-2007)? What if you need to adjust and auto-publish a large number of project plans in Microsoft Project Professional?

These types of actions require an automation engine and a supporting framework to allow for manipulation of the UI and some clever tricks to take care of the exceptional cases since they were written to be used in interactive sessions. While I obviously cannot release any of the code I wrote previously line for line, I would like to discuss the strategies and some code snippets and use new code to cover this topic which I found to be lacking when I myself was searching for a way to do this.

As a summary, I think I'm going to break it down into a few chapters:

  • An Introduction: Automating Internet Explorer. As an example, we'll start by looking at the foundation of automating any of the Windows applications using .Net.  The ideas here apply not only to IE, but to almost any Windows application that exposes an API.
  • Simulating User Input. We'll continue the example by examining how to deal with cases where the application is expecting user input.  If so inclined, we could disregard the API completely and simply use this methodology throughout.
  • UI Mapped Input Sequences. We'll discuss how to take the example a bit further by examining how to trap UI elements and send the proper key sequences to handle them.

I think this will be a great series (once I actually get around to putting it together) as it will cover a whole host of technologies from Spring.Net to log4net to Enterprise Library.

Filed under: Self Note No Comments

Could It Be?

Posted by Charles Chen

After some drama in my life last week, I'm glad to report that things are kinda settled down, although I'm still not right in my heart.

But in any case, back to your regularly scheduled programming (or not).

Could it be? Someone in charge is finally starting to get it:

"So we understand piracy now as a business model," said Sweeney in a recent analyst call. "It exists to serve a need in the marketplace specifically for consumers who want TV content on demand and it competes for consumers the same way we do, through high-quality, price and availability and we don't like the model. But we realize it's effective enough to make piracy a key competitor going forward. And we've created a strategy to address this threat with attractive, easy to use ways to for viewers to get the content they want from us legally; in other words, keeping honest people honest."

When you start thinking this way, the goal becomes offering a more compelling product than file-swapping networks can provide, rather that attempting (for instance) to sue the users who like your content. For ABC, this has meant launching their own streaming media player and providing shows like Lost and Desperate Housewives online only minutes after they air.


It's taken the media execs this long to realize that the majority of people do not want to engage in "illegal" behavior? The majority of the people do it because it's convenient and the media is delivered in a format that the masses demand. iTunes proved that people are willing to pay a fair price for content.

Television has been dead to me and most of my friends forever now with only live programming like sports worth bothering plopping down on the sofa for. Everything else? I'd rather just watch the good parts or watch it when I want to watch it. The concept of the timeslot is irrelevant in the 24/7 world of the Internet. Instead, the content itself becomes that much more important as

One thing that I've been contemplating lately is this issue of fan-subs. There is a huge sub-culture of anime/manga fans that work dilligently to translate the latest Japanese anime and manga because there is a huge demand for the product. It's amazing to think that most of these translators and video editors are working without payment to translate and distribute the content just hours after it airs in Japan. 

It's not just Japanese content, however, as Wired touched on this issue a few months back with regards to the American comic book powerhouses Marvel and DC:

within 24 hours of going on sale at the local Android's Dungeon, every new comic is available on BitTorrent, scanned beautifully for your downloading pleasure. Sound familiar? Just like with music, movies, and games, when content companies don't give fans what they want in the format they want it, fans make it available themselves.

Similarly, there is a huge opportunity lost here by networks not picking up the rights to these Japanese anime/manga series and simply paying a relatively small fee to the fan-subbers for their service and adding short commercials or hosting the videos on the company's servers. The point is, with the near unlimited "bandwidth" (used here, not really in terms of bits and bytes) of the Internet, there's no reason not to try to serialize and distribute as much content as possible (compare this to television where your "bandwidth" is limited by the fact that there are only 24 hours in a day, 7 days a week, and only so many channels of programming).

The current model for distribution of tele-media is still very inefficient as shown by the success of YouTube. People want to see the good stuff when they want to where they want to. No one wants to schedule their lives around arbitrary schedules. I'm happy to see that the success of iTunes finally has others in the industry turned around on this issue of online video distribution.

Filed under: Technology No Comments

Worst Day Ever.

Posted by Charles Chen

We all have dreams about our own lives.  Where we see ourselves in a few years.  The kind of life we want to live.  You plan your life around these dreams so that they are dreams today, but reality tomorrow.

I have these dreams.  I think about them when I lay down. 

About the house I want to build.  About the life I want to live.  About the family I want to have.

This is the worst day of my life up until now.

Right now, it feels like all of that has been stolen from me...my dreams have been stolen by the person I trusted the most.  It's a sinking feeling...like there's no way back to the surface.

I haven't cried for myself in a long time...not since I was in high school.

Today, I cried for myself...

Filed under: Life No Comments