Random Thoughts of a Scatterbrain.
 Monday, October 16, 2006

.Net On The Up And Up

10/16/2006 12:26:12 AM (Eastern Daylight Time, UTC-04:00)

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 ;-)

 Tuesday, October 10, 2006

Self Reminder

10/10/2006 7:54:04 PM (Eastern Daylight Time, UTC-04:00)

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.

Could It Be?

10/10/2006 7:09:37 PM (Eastern Daylight Time, UTC-04:00)

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.

Yes!

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.

 Thursday, October 05, 2006

Worst Day Ever.

10/5/2006 4:44:01 PM (Eastern Daylight Time, UTC-04:00)

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...

 Tuesday, October 03, 2006

Finding One's Path

10/3/2006 11:35:26 AM (Eastern Daylight Time, UTC-04:00)

Quote from an AP article on the Nets:

"We had a lot of conversations about the game itself and about his expectations about who he can become as a player," Carter said. "At first it kind of seemed weird to him, but then after a while when he opened up it made things easier. Once you get it out there in the open and figure out who it is you want to be, you kind of put it together and you become a basketball player."

I'm looking forward to a very productive season from Antoine :-)

 Monday, October 02, 2006

PacMan....for Excel

10/2/2006 3:54:13 PM (Eastern Daylight Time, UTC-04:00)

There's something kinda cool about creating games on platforms that weren't meant for game creation; it presents a whole set of programmatic challenges that leads one to come up with creative solutions to otherwise simple scenarios in typical gaming SDKs.  It's kind of a brain-teaser as it goes beyond typical business application programming (generally boring, tedious, repetitive, and not fun) and forces one to think about more...challenging and creative programming tasks.

For a while, I was obsessed with writing games in HTML and JavaScript (Exhibit A, Exhibit B).  Trying to write Tetris was particularly interesting as I got stuck trying to come up with a good algorithm for collision detection based on my implementation of using unordered lists to form a grid.

So I found it quite awesome that someone actually took this idea to another level and wrote PacMan...for Excel!.

My Tetris implementation is actually kind of similar in concept as it also utilizes the same basic technique of switching "cell"--in my case, list items--background colors to simulate pixels.  I actually have a more complete version somewhere on my machine, but I have no idea where it's buried :-S.

 Monday, September 25, 2006

Go Scarlet Knights!

9/25/2006 11:43:20 AM (Eastern Daylight Time, UTC-04:00)

I never thought I'd see the day.  Rutgers football having a winning season?  It was but a common joke on campus (the football team that is).  But what do you know?  It turns out that Rutgers is now #23 on the AP top 25!

No joke. Rutgers is ranked.

The Scarlet Knights, long a college football laughingstock, moved Sunday into The Associated Press Top 25 for the first time in 30 years.

Applause for Greg Schiano, the coaching staff, and his players.

 Wednesday, September 20, 2006

On Leadership and Teamwork

9/20/2006 8:44:25 AM (Eastern Daylight Time, UTC-04:00)

A great quote by Joe Torre I came across in an article on A-Rod's recent struggle:

"What Jason said made me realize that I had to go at it a different way," Torre says. "When the rest of the team starts noticing things, you have to get it fixed. That's my job. I like to give individuals what I believe is the room they need, but when I sense that other people are affected, teamwise, I have to find a solution to it."

It's also a great article in and of itself and speaks a lot about how our own expectations, not to mention the expecations of those around us (in this case, millions of Yankees fans) can weigh down on our ability to perform.

I think it also reveals a lot about how one should approach difficult tasks. To seek assistance, guidance, and counsel are things that many avoid in tough times due to pride or some such inner roadblock, but in fact, honesty and openness are the likely best approach. Honesty with oneself about the expecations and one's failure to meet said expectations.

It's well worth a read.
 Tuesday, September 19, 2006

Try OpenDNS

9/19/2006 9:19:42 AM (Eastern Daylight Time, UTC-04:00)

So I came across OpenDNS somehow last night and read about the service that they provide.  From my days as a CS major, I was familiar with the high level workings of the DNS infrastructure and OpenDNS's explanation, at least in theory, made sense.  The gist of it is that somewhere out there, there exists a network of DNS (Domain Name Servers) translating the alphanumeric URL that you type into your browser address bar into numeric IP addresses.  This can be a slow process if the initial DNS does not contain a mapping for the URL that you entered as it means that the DNS will have to consult another DNS (and so on) until it is retrieved.

Of course, I was a bit skeptical of just how much performance there was to gain, but I have to say that it is noticeably zippier browsing today.

So I would give it a shot and see if it makes any difference.

 Monday, September 18, 2006

More Exmplary Craftsmanship

9/18/2006 8:20:01 PM (Eastern Daylight Time, UTC-04:00)

Awesome...simply awesome: paper cutout art.

Jawdropping even.

More here.

From the creator:

I find the A4 sheet of paper interesting to work with, because it probably still is the most common and consumed media and format for carrying information today, and in that sense it is something very loaded. This means that we rarely notice the actual materiality of the A4 paper. By removing all the information and starting from scratch using the blank white 80gms A4 paper as basic for my creations, I feel that I have found a material which, on one hand, we all are able to relate to, and which on the other hand is non-loaded and neutral and therefore easier to fill with different meanings. The thin white paper gives at the same time the paper sculptures a fragility which underlines the tragic and romantic theme of the works.

RSS 2.0 Atom 1.0 CDF