Random Thoughts of a Scatterbrain.
 Tuesday, October 24, 2006

Some Very Nifty JavaScripting

10/24/2006 10:37:14 AM (Eastern Daylight Time, UTC-04:00)

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

 Saturday, October 21, 2006

IE 7 Scare...

10/21/2006 3:35:24 PM (Eastern Daylight Time, UTC-04:00)

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.

 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.
RSS 2.0 Atom 1.0 CDF