Saturday, 9 August 2008

Cleanup and web proxy support test build

Hi CardMeeting users,

Web proxy support? (FINALLY!) Corporate CardMeeting users, rejoice!

I recently celebrated CardMeeting's 2nd birthday. Yep, 2006 seems like so long ago. And almost since day one, I have received emails from new users that started out enthusiastic about the product concept and ended up disappointed - the user's cohorts in other countries could connect to CardMeeting, but they could not.

I'd say 90% of the cases were due to their corporate IT departments running all of their web traffic through a web proxy. The web proxies are middlemen, watching the web traffic that flows in and out of the corporate web connection. Well, these middlemen interrupt traffic to do their jobs, and that has always flummoxed the CardMeeting client that runs in your browser.

So for two years, I have concentrated on this problem. I looked at how similar applications handled it, and I looked at how the big boys like GOOG dealt with the issue. The big boys seemed to always have advantages that I would never get - huge bandwidth or the leverage to get corporate IT people to give them special network settings to bypass the web proxy. These were both things that I realistically couldn't expect.

So, over the years, I made futile stabs at the problem. Sometimes, I even proclaimed victory; I was SURE I had finally slain the dragon. Nope. Web proxies are buttoned up too tightly to be gamed, and there was very little literature on the subject that I could find to help me land an acceptable solution to the problem.

Well, I found a solution and it turned out to be simple. I'd like to say something dramatic like the idea came to me in a dream or after a knock on the head or something, but the real story is pretty boring. I was just answering a support email, explaining the nature of the problem, and it struck me that maybe a variation of the Periodic Refresh pattern from the Ajax Patterns could be the fix.

My solution works well for me because it tries to only act within the current bandwidth constraints CardMeeting operates under. I've known from the beginning that I could have done Periodic Refresh to solve this web proxy problem, but Periodic Refresh by itself doesn't scale well, and my network infrastructure would have cratered after a few tens of users got connected.

What I need now is feedback and to do some tuning. If you are a user who was previously not able to connect to CardMeeting from work or your VPN, please try again now and let me know if you have better luck with it (dave@woldrich.com). No promises on this being the fix, but I have high hopes.

Another fix that is in the current build deals with some meeting name issues interfering with the XML/Excel Exporters. If your meeting name had some reserved special characters in it (like / or &), the exporters would fail. I have fixed that bug, and now everyone should be able to export their meetings successfully.

The last set of fixes in the current build deal with removing all of the legacy workarounds that were in the code to try to resolve the web proxy problems. Those only serve to slow down the code and they caused their own buffering issues. Since I made some fairly extensive connection code changes, I would appreciate knowing if I've broken anyone who was working before. I did some thorough testing for this release, but it's a pretty complex system, so I may have missed something.

Alright, now that that's out of the way, I'm going back to CardMeeting scalability code! ;)

Thanks for using CardMeeting,
Dave Woldrich

Posted by davew at 7:00 PM in /

Saturday, 28 June 2008

Individuals and interactions over processes and tools, you dig?

Hiya CardMeeting users,

I am weighing in on the whole Agile tools versus Agile books discussion. Engage flame throwers.

I was away on vacation getting sunburned and caught Paul J. Heidema's article on the Agile Advice blog titled Agile Tools vs. Agile Books. Being personally mentioned in the article, I felt niggly about having to respond, so I finally have my chance.

The question of whether an Agile tool should be recommended or panned, shunned or embraced, strays unavoidably into religious territory (or at least political territory.) After all, the very first value listed in the Agile Manifesto reads:

"Individuals and interactions over processes and tools" -- from http://agilemanifesto.org, 06/08

I don't think that was listed first on accident. Any barriers we place between us as individuals can only hinder the effectiveness of our communications. And god knows that so many software packages and rig-a-ma-roll people-processes are just such a torture prison for man. How any work gets done anywhere on anything, amazes me. So, at my core, I deeply agree with the "Individuals and Interactions" line because I am thumbs-down on torture.

When the question is asked, "Is it okay to tool-up our project, or should we just make do with our whiteboard charts and our cards and our stand-up meetings?", I think the standard consultant's answer of "ask yourself why you want a tool, and then ... you'll find you really don't need a tool" is generally the right answer.

In the same vein, I have counseled teams that they should forego using CardMeeting unless team members are scattered across the globe. After all, working on and talking over a table of physical index cards just works so much better.

All that said, this wouldn't be a very interesting blog entry unless I added a provocative "but" to end of my affirming statements about individuals and interactions. There's a little niggly voice in my head that complains tools, specifically software tools, are deprecated in the Agile Manifesto largely because they are so poorly implemented! They don't DO exactly what they need to DO, and that's a deal-breaker. I was reminded of a nice George Carlin (r.i.p.) quote recently that says it all for me:

Inside every cynical person, there is a disappointed idealist

Ain't that the truth?! We all start out rosy cheeked with glowy optimism about software and tech. And we wind up so beaten down and disappointed with the realities. The promises, oh, the promises I've been given about how game-changing some software release will be or how important some new framework will be! The claims are mostly all crap, there are some gems here and there, but typically we get shoveled some repackaged concepts, now with 150% more bloat.

Perhaps cynic is too strong a word, but it strikes me that the authors of the Agile Manifesto were definitely disappointed idealists when it came to the state of software development as they perceived it. So, of course they would downplay the role of tools that get in the way of progress, especially software tools! Software tools grab tremendous mindshare and distract because they are shiny, they promise great things, and they tend to fall way short of the mark - so they get in the way AND they stink, grrr.

I began work on CardMeeting with that contrary thought in my mind: tools are downplayed because they get in the way. The question I asked myself was, would it be possible to make a pure content tool that approximates the value of real life card tables? So, not really add much new features-wise, just try to simulate what goes on around those tables. I think I can come close to real life as long as I keep CardMeeting simple and as long as facilitating communications remains my focus.

My gut tells me the thing that kills potential greatness in other software products is the feature matrix explosion: the urge to have lotsa feature checkmarks up and down a data sheet to show you're keeping up with the competition. I fight this urge myself, and I've been cautious. (Competition, yer running rings around me, GADS!)

The more significant features you add to your product though, the harder it is to exactly satisfy your customer's requirements. It is impossible to not add features to a maturing product, but I do think you can at least ensure very tight integrations between new features and the existing ones. I have intentionally held back on adding features willy-nilly to CardMeeting so that I could improve quality, prepare for commercial release, and keep things tight for the users.

I doubt CardMeeting is the answer to the Agile cynics' cries yet. Still a long, long ways to go. I do accept their cynicism as my challenge, however, and I hope to maybe get tepid acceptance for CardMeeting as a viable Agile tool from the hardcore purists someday. :)

Thank you for using CardMeeting,
David Woldrich

P.S. If you are looking for a book on Agile and not a tool, you should prolly check out Jim and Shane's new book: The Art of Agile Development. I'm reading my copy again (not in skim mode this time), meaty and readable! And, I'm getting all kinds of ideas for new features for CardMeeting! Like what if you could ... Oh wait, WAIT ... must resist ... adding features whathaveyou!!! :D

Posted by davew at 9:34 PM in /

Friday, 6 June 2008

My philosophy and The uncanny correlation holds!

Dear CardMeeting ppl,

After I fix some bugs, daily logon counts soon double! Should I be shocked?

... and conversely, when I introduce bugs, user roles gradually halve. I still find the whole effect fascinating, all these completely disparate, unconnected individuals reacting so similarly. I've made this observation before, I know.

My mind strains trying to figure out all the aspects to this. Chiefly, why do users "go away" rather than "bitch" when things suddenly aren't right? I suspect that the answer is, "I'm not paying anything for CardMeeting, so I don't have bitching rights." (Wrong!) Or, perhaps the unhappy flipside of that coin is, "CardMeeting is free, must not be a serious offering ... look it's buggy! Goodbye!" (Noooo, don't go!)

I think I need to articulate some philosophy here. You ARE compensating me when you use CardMeeting! There is no professional organization built up around the product yet. CardMeeting is a "pro-hobby" style application at this juncture. I, personally, put in a good deal of my free time maintaining the software, but it is not where my bread gets buttered. At this stage of development, it's all me.

I say you are compensating me for time on the system because you are serving as my QA department. I rely on you people to tell me what's wrong when my own testing fails to catch problems. I also rely on you to tell me what features are important to you, or tell me when I screw up on a deployment, or tell me when your data is lost (thankfully a rare occurrence so far.)

Email is the best way to reach me (dave@woldrich.com). Please put "CardMeeting" somewhere in the message subject so that my spam filter lets your message get through. I keep all of your emails and regularly reflect on them. If you're not happy or if you see something is wrong please tell me, I can take bad news! I'll fix your bug if the technology allows it, and in pretty short order. My turnaround time on bug fixes is great! Your enhancement requests will necessarily have a lot longer cycle time, but I need to hear about those too.

On this last bug that drove users away, which had to do with system slowdowns caused by a bad applet shutdown sequence, I only heard about it in an aside on a comment on a blog posting regarding CardMeeting. Thank goodness for GOOG, making it easy to poll the interweb for CardMeeting's temperature. Indirect blog communication is less optimal.

So, CardMeeting SHOULD have value for you even though you've paid no money into it. CardMeeting IS valuable, you pour value into it. And of course CardMeeting has value for me for all the reasons it should.

I've thought a lot about how to maintain this value. A lot of it is locked up in reputation and expectations.

For example, when and where are advertisements ok on the website? Or, under what circumstances is it ok for me to send emails? I've collected a zillion email addresses so far, and not sent a single message from that list. This was on purpose, I do not feel it is right or productive to spam people, for any reason. (Well, okay, I have occasionally made proactive support calls, but those were not spam-like in the least.) In this era of http, blogs, and RSS, users can pull any information they need that I have for them, on their terms. And in terms of placing ads on the website, I feel like that's an unnecessary distraction. It just feels very "low rent", especially when I'm talking about selling subscriptions to some paid CardMeeting service.

It's a lot to consider. I've wondered if coming up with some informal social contract or pact might be beneficial. I envision laying out some squishy non-binding set of expectations that users have of CardMeeting and also expectations I have of the users.

Well, that's it. Thanks for using CardMeeting and looking forward to hearing from you!

Cheers,
Dave Woldrich - dave@woldrich.com

Posted by davew at 11:40 PM in /

Wednesday, 28 May 2008

Deklunkified back/forward browser buttons and hotkeys

Dear citizens of CardMeeting Town,

I fixed a bunch of niggly bugs and behaviors in this latest build of CardMeeting.

In case you didn't know, CardMeeting is designed to allow you to navigate in and out of the applet with the back/forward buttons on your browser. Well, design doesn't always match implementation, and it turns out I had some serious resource problems whenever users would navigate away from the CardMeeting applet. Chiefly, you could get a browser that would never close, or you might get 100% CPU utilization on one of your CPU cores, or everything might be fine. Anyhow, I did some pretty rigorous testing of applet shutdown on the JRE versions that matter. So, if you've been seeing system performance problems lately related to CardMeeting, hopefully everything there is now resolved. Sorry 'bout the bugs, my bad.

Anyhow, I didn't see any of these stability/performance problems myself because I've been doing my testing for the past few months with a bleeding edge version of Java. Sun is purporting that Java Applets have been totally revamped with this new version.

I have to attest, they're right. Speed, stability, deklunkification - it's all nifty there. And they give me, the developer, so much more control! I can turn on 3D hardware acceleration for CardMeeting, for example! You want Minority Report? I got your Minority Report right here! I'm holding off on enabling that until I get completion on some of my other features.

Other changes in this build are that I rewrote the hotkey support in the application. So, for example, the zoom hotkeys (Ctrl+Up Arrow and Ctrl+Down Arrow) now scream! It's nice to be able to zoom smoothly while holding down the key. With my old hotkey method, it would stutter and get all hung up. Same with Change Card Color (F12 or F8 on mac), it cruises now too. Check it out!

The remaining changes are minor behavioral glitches that probably didn't make anyone's radar, but they bugged me and I finally did something about 'em.

That's all for now. Happy hunting!

Cheers,
Dave Woldrich

Posted by davew at 9:02 PM in /

Wednesday, 7 May 2008

Card editing bug fixed

Hi there CardMeeting users,

Fixed an annoying bug that crept into index card editing in the last build.

Successfully refactoring UI code is sometimes difficult when you don't have a good testing framework for UI behaviors. I have yet to find a testing framework appropriate for CardMeeting. So, when I did all my refactorings to make billboards possible. Even though I did some monkey testing on the UI, it clearly wasn't enough to catch a bug which crept into the index card editing routines.

The bug only appeared when cards were added to the canvas and left blank. Subsequently trying to edit those cards would succeed, but the text would not appear! That's frustrating...

Hooray for users Bill and Alain for reporting the bug to me!! ;)

Cheers,
Dave Woldrich

Posted by davew at 8:09 PM in /

Wednesday, 23 April 2008

The new Billboard feature in CardMeeting is live!

Attencion CardMeeting users,

Billboards are deployed, hope you like them!

Well, the billboard code is deployed to the public servers, and everything looks good. I did a full write up of them in my last blog entry, and everything I said there is basically correct.

Please report any suggestions, problems you have, or new bugs you encounter to dave@woldrich.com.

Thanks,
Dave Woldrich

Posted by davew at 4:15 PM in /

Monday, 21 April 2008

Introducing the new Billboard Item Type!

Hiya CardMeeting users,

Billboards are a whole new item type that you can use for titling, look-here and legends!

I'm excited to announce that very soon (4/23 or 4/24) I will be enabling a whole new item type that you can add to your CardMeetings: Billboards! Whew, it has been a looong time since I added a substantive feature to CardMeeting, and it is high time I made something like this available.

In CardMeeting, Billboards are single lines of text that try to stay legible regardless of what level of zoom you are viewing the CardMeeting at. You can use them as titles for sections of your meeting. They can be colored with the same 6 colors that cards get as well, so the billboards can also be used to create a legend that explains what your card colors indicate. I envision billboards will also be useful for transient "look here" purposes and leaving high level notes/reminders that your peers won't miss.

If you go into your meetings now, you will not see any new Billboard feature just yet. I am not springing Billboards on you because the CardMeeting XML and Web Services have changed to support Billboards. I needed to give some advance notice to users who actively use those services for integration and backups that a switch-a-roo was imminent. Regardless of how you use CardMeeting, please take backups of your meeting data now, and then again after Billboards are enabled. I don't expect problems with data migrations, but with an upgrade of this magnitude, we can never be too careful. If you need infos on how to do backups of your meetings, please consult the CardMeeting data exchange document and refer to section 2 and especially section 2.3, "XML Exporter".


For users: How to use Billboards in your CardMeeting

Billboards are a single line of text that are supposed to be legible irregardless of zoom level. Strategically placed, these billboards can serve as a high-level roadmap for navigating and understanding your CardMeeting.

Here is a screenshot showing Billboards in action:

CardMeeting with Billboards, zoomed out
Billboards visible on a meeting right after loading it up

After zooming in a little, you can see the area containing the billboard is maintained and the billboard text is available in both large and small forms:

Billboards, zooming in
How Billboards appear when zooming in


Sidebar: I've really wrestled with how to best present this aspect of Billboards. In my limited user acceptance testing, the feedback I've gotten was that the text drawn twice is confusing. One of my primary concerns was that low vision users might be hosed if I didn't display the large form of the text. I figured they needed a way to zoom the billboard so that it was legible for them. Anyhow, please play with it when I make Billboards available, and if you have any feedback on this matter or suggestions on how I might improve it, please contact me at dave@woldrich.com. Thanks!

Anyhow, editing Billboards is very much like editing index cards. But, there are some wrinkles you need to know about. Here's a typical editing scenario:

  1. Left mouse click-and-drag your mouse on and away from the billboard icon
  2. A new billboard with some default text will appear under your mouse pointer, keep holding the left mouse button down and the drag the billboard to where you want it on the canvas
  3. Let go of the left mouse button to drop the billboard, the editor will appear
  4. Type the billboard text you want, press Enter or Esc to finish editing
  5. You can delete a Billboard by dragging it to the recycle bin or by hitting the Delete key when the Billboard is selected

Notes:

  • The green diamond at the bottom center of the billboard indicates its "anchor point" on the canvas.
  • When zoomed in, the dash-lined box containing the enlarged billboard text is only displayed as a visual aid. You cannot edit or move the billboard by clicking on the enlarged text.
  • The smaller, solid-lined billboard text box that hugs the bottom of the billboard area is what one uses to edit the Billboard. You may left mouse click once on this smaller text box at any time to call up the Billboard's editor.
  • The Billboard items always display beneath the cards. Try not to occlude the billboard's surface area too much with cards, that can make it difficult to find the smaller edit control when zoomed in.

Billboards, creating
Click-and-drag a New Billboard icon to create a new Billboard

Billboards, editing
Click the smaller box to call up the Billboard editor. Drag the smaller box to move the Billboard.


For developers and power users: Changes to Web Services and CardMeeting XML Schema

As I mentioned before, the CardMeeting XML Schema had to change to support the new Billboard type. These changes had ripple effects through the SOAP and REST Web Services as well, so be aware that your service clients will also need to change.

Previous versions of CardMeeting XML were hardwired for a list of cards only, but the new CardMeeting XML sports an extensible item type system that will allow me to add more item types in the future (hopefully) without breaking older versions of the XML. Anyhow, here's what changes you need to make to upgrade any version 2 CardMeeting XML you have to the new version 3:

Version 2 CardMeeting XML:

<ns2:cardMeeting title="CardMeeting Planning" version="2" xsi:schemaLocation="http://cardmeeting.com/schema/CardMeeting.xsd http://cardmeeting.com/schema/CardMeeting.xsd" xmlns:ns2="http://cardmeeting.com/schema/CardMeeting.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <card> <text>iteration one</text> <position y="5434.0" x="7660.0"/> <color name="White"/> </card> <card> <text>iteration two</text> <position y="4635.0" x="-5198.0"/> <color name="Canary"/> </card> . . . <ns2:cardMeeting>

Version 3 CardMeeting XML (changes underlined):

<ns2:cardMeeting title="CardMeeting Planning" version="3" xsi:schemaLocation="http://cardmeeting.com/schema/CardMeeting.xsd http://cardmeeting.com/schema/CardMeeting.xsd" xmlns:ns2="http://cardmeeting.com/schema/CardMeeting.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <item xsi:type="ns2:cardType"> <text>iteration one</text> <position y="5434.0" x="7660.0"/> <color name="White"/> </item> <item xsi:type="ns2:cardType"> <text>iteration two</text> <position y="4635.0" x="-5198.0"/> <color name="Canary"/> </item> . . . <ns2:cardMeeting>

The REST and SOAP service changes should follow the changes made to the CardMeeting XML Schema. Probably next week, I will release a revised version of the CardMeeting Data Exchange document to reflect the impacts these changes will have on the Web services.

I will post again when the new Billboard feature is available (sometime on 4/23 or 4/24.)

Cheers, and thanks for using CardMeeting!
Dave Woldrich

Posted by davew at 7:44 PM in /

Wednesday, 26 March 2008

Connectivity fixes and performance optimizations

Helloooooo CardMeeting ppl,

The network is starting to resemble the harmonious flow of data I have always believed was possible.

Over the Easter weekend, I found myself drawn into a tuning effort that centered around network traffic going into and out of meetings. In the process I found many bugs that related to huge packets killing connections, rendering problems, and even a potential data loss bug due to a framing issue I found!

I got the build wrapped up and tested tonite and the build I just placed on the server is looking good. I don't see any more random "radio tower" warning icons, there's no more bizarro CPU spikes on the servers, no more crazy packet storms. Best of all, the traffic when nothing is going on (which is like 99% of the time), is almost nothing... In the past, the server and clients were constantly chatting, and it strained my limited bandwidth even when every meeting was idle! It all just "feels" more solid now. I know better than to claim the thing is bugfree, but it sure is better behaved than it was last week.

All this means CardMeeting can now host more users, I'm hoping you all can get the word out and make the login roles swell a bit more. I'd like to stress the server out more and see what the new limits are.

Please give what I've got up there a whirl, and then please let me know, good or bad, what your experiences are with this build.

Thanks for using CardMeeting,
Dave Woldrich
dave@woldrich.com

Posted by davew at 11:59 AM in /

Monday, 17 March 2008

CardMeeting bug fixes, more documentation

Hi there CardMeeting users,

I've deployed a CardMeeting build for the first time in over a month, and the new documents I have included can help you unlock the hidden powers of CardMeeting for your team!

So, I have to apologize for disappearing there in February and for the regular server outages that occurred for the first half of the month. It turns out that my web server had a DIMM that had gone south on us, and it was regularly causing chaos for the OS and Java. The ram has been replaced, and ever since the box has been very well-behaved, needing no attendance and giving spotless service.

Please bear in mind that the work I'm doing now on CardMeeting mostly relates to improving scalability and availability. The infrastructure I have now may be brittle, but what I am working towards surely will not be. So, just hang with me here, and we'll get this thing straightened out...

Anyhow, around the latter part of February, user Ben tipped me off to some errors in my web service code and my 3rd party integrations documentation. When I undertook the effort to fix those bugs and upgrade the docs, I realized that I had much more to say on the matter of how users and third-party developers can integrate with CardMeeting and move their data into and out of it.

So, I started adding onto the document and realized its scope had widened beyond just software developers, that this document could be useful for users as well. I retitled the document, and it is now available on the CardMeeting website at:

http://cardmeeting.com/docs/CardMeetingDataExchange.pdf

This CardMeeting Data Exchange document now discusses the three ways you can work to integrate with and exchange data with CardMeeting:

  • Users can get their data into and out of CardMeeting in various useful file formats
  • Thirdparty software developers can integrate their solutions directly with CardMeeting using Web Services
  • The CardMeeting Applet itself can be embedded into other web applications such that it will appear on thirdparty webpages

CardMeeting is open and versatile. What kinds of new creations you can make that incorporates a CardMeeting!?

The document was finally polished enough that I felt I could feature it on the main CardMeeting.com webpage. Below the big green and blue function panels, there's a new yellow panel for showcasing CardMeeting downloadable documents.

As I mentioned above, CardMeeting can be embedded in your webpages to appear as part of your web applications. I did a lot of testing of this, made many under-the-hood changes to enhance the stability of it, and I produced two different example pages to showcase this ability as referenced in the document, check it out!

Man, that iframed CardMeeting is sexy. Try doing THAT with Ruby on Rails, right? :P (JUST KIDDING, RoR is fine...)

And the last major effort I undertook for this build was to try to fix some regressions in my browser compatibility. Chiefest was to get IE6 working good again, secondarily was to get legacy JVM support working again (JRE 1.3.1 is now functional with CardMeeting).

During that process, I discovered Firefox 3 beta 3 and 4. And, of course, CardMeeting didn't work right on it. *SIGH* Seriously, if you only knew the machinations the applet goes through to work on all these platforms ... Anyways, I got Firefox 3 working good, and in the process also discovered I could get CardMeeting working on KDE's Konqueror browser (albeit in klunktacular mode due to their deviant Java plugin/Applet support.)

So, I'm very happy with this build. I think it represents some real advances for the CardMeeting engine. Enjoy the new CardMeeting!

Thanks,
Dave Woldrich

Posted by davew at 7:51 PM in /

Monday, 28 January 2008

Server locked! What did we do to deserve this?!

Dear CardMeeting users,

Sorry for today's outage, it seems Java locked up on us.

I've done as much investigating as I could to try and determine what happened, but it seems like Java just had one of those 1-in-10000 chance things where it locks up completely. I read some bug reports and couldn't find any exact matches to the problem to say whether the lockup was a Java, a Linux, or a hardware problem. Hmmm, very disturbing. I was able to do a thread dump and look at the trace, and every thread was BLOCKED except for one thread which reported as being IN_VM:

Thread 22936: (state = IN_VM)
 - java.lang.AbstractStringBuilder.(int) @bci=6, line=45 (Compiled frame)
 - java.lang.StringBuffer.(int) @bci=2, line=91 (Compiled frame)
 - com.woldrich.dcards.protocol.ProtocolEngine.readNonBlankLine(java.io.BufferedReader) @bci=8 (Compiled frame)
 - com.woldrich.dcards.protocol.ProtocolEngine.access$100(com.woldrich.dcards.protocol.ProtocolEngine, java.io.BufferedReader) @bci=2 (Compiled frame)
 - com.woldrich.dcards.protocol.ProtocolEngine$1.run() @bci=40 (Compiled frame)
 - edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call() @bci=4 (Interpreted frame)
 - edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run() @bci=41 (Interpreted frame)
 - edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(java.lang.Runnable) @bci=59 (Interpreted frame)
 - edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=28 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=619 (Interpreted frame)

Strange place to be stuck, huh? Perhaps something related to strings is buggy in Java?? I hope not, that's pretty fundamental stuff. Probably more likely to be something freaky-deaky with garbage collection or memory. The code that is stuck IN_VM is in the middle of construction; memory management is a likely culprit. Then again, this could just as easily be a sign of a failing part on a DIMM.

JDK 1.6.0_04 was recently released, and I'm going to start testing with that. Since I've never seen this kind of VM lockup before in all the time I've hosted CardMeeting, I doubt we'll see this problem again unless hardware is the culprit. But, I want to take any updates I can get for Java, and perhaps 1.6.0_04 will lend something to server stability.

Sorry again for the outage. I'll try to setup some management or heartbeat monitors on the servers in the future so that I get some more timely notice about when servers go down or lock.

Thanks,
Dave Woldrich

Posted by davew at 10:48 AM in /

Friday, 25 January 2008

Dude, where's my right to copy?

Hi there CardMeeting ppl,

Let me help you direct your ire: rich dudes hoarding all the intellectual property.

Sorry in advance for going all chimpanzee today, but I've been absolutely SLAMMED the past two weeks with coding and the brains are shutting down. Many all-nighters, its been brutal. So, in honor of my feeling cranky, I thought I'd go off on a bit of a tear on something. Hmm, let's go ape on, um ... copyrights! :)

Microsoft has a funny way about slipping a little hidden gems into fix packs and whatnot. Heck, they are getting so sloppy/brazen that they're installing stuff without permission and against user preferences now! You know, this is the biggest problem I see with big companies: they get these funky alliances and partnerships going and before you know it, their whole purpose gets all twisted around. It's really shameful to me that Ballmer went from "Developers, Developers, Developers, Developers" (omg) to "Advertisers, Advertisers, Advertisers" (wtf) in just a few short years.

Mister Softie, you really have lost your way.

But like I was saying, you lose track of what makes you you when your alliances control and define you. The intellectual property thang and control of media is the heart of that whole identity surrender that has happened with big mega companies, particularly Microsoft, today. These companies don't want to make the best delivery vehicle for media and information, they want to control the information and own it and lease it to you in bite sizes. You wind up with impossibly unfair laws and twisted, annoying new technologies like DRM and Trusted Platform Modules.

(Ok, don't get too sidetracked, Dave.) What drove me to write today other than insanity is a little observation I made of something Microsoft slipped into an XP fixpack. This observation has been burning in my brain ever since I first noticed it; I was OUTRAGED by Microsoft's impudence frankly. This little gem was slipped in there and they went and kept it in future Windows versions. I haven't heard this talked about anywhere, and so, I thought the time was right to bring it up as the subject of this public Microsoft lynching.

What I am grumbly about is, of all things, the Windows XP splash screen! The Windows XP SP2 diverged from every Windows splash screen that came before. Here are some screenshots lovingly constructed by some complete raving madman laughing factory worker on the interweb:

Notice the differences? Interesting they dropped the edition moniker, (bespeaks laziness by the patching crew, ahem.) But, pay no attention to that, that is not the outragifying factor!! What is so brazen is that Microsoft dropped the YEAR designation on their Copyright notice!

Ohh, that makes me so mad. How DARE you try an lock it up like that, Microsoft?! Why you little... What a crummy, shameful thing to do, to try and obfuscate away MY FUTURE RIGHT TO PLUNDER!!

No, Microsoft, your works are not immortal. Your intellectual property is NOT forever! You don't just get to copyright something and then it's game over, Dave loses! Your copyright WILL expire, and the blood of Christ COMPELS you to put a year on there to remind me when I get to start copying the heck out of your works free and clear to grandma and my neighbors!

Sigh, ok, whew, I feel better now... Time to go grab a beer.

[Beer is popped] Ok, I'm back. The problem I see is with the intellectual property hoarders. These guys are the new king of the hill. We gots to DO something about that. And, as your new revolutionary rewind copyrights movement leader, I command you to bring me their heads. (Said in a proverbial sense, please don't go actually beheading any fatcats on my behalf!)

Commerce, innovation, the advance of culture - it all gets stimulated because of fair use and the expiration of copyright. Now copyrights last for like, what, 99 years after the death of the copyright owner? All we get from that is information stagflation. It is virtual copyright immortality. We get the rehashing of the rehash by the IP hoarders only. Well, just keep tightening your grip Microsoft and others, see where that gets you.

Time to reverse laws and go back to the 7 or 14 year copyright model, whatever it originally was in the states. After that time, the copyrighted work enters the public domain. THAT is why the year is printed next to the copyright symbol.

♥ Lovingly yours, ♥
Dave Woldrich (dave@woldrich.com)

P.S.  And yes, I realize this whole rant was uttered by the biggest hypocrite in the world, (that would be me), who fails to distribute the majority of his copyrighted works because they live behind a server and firewall. :P Oh sweet, delicious irony, getting to your creamy center is so sublime!!

Posted by davew at 12:31 PM in /

Monday, 21 January 2008

Dipped oar in water, paddling CardMeeting to money town

Huzzah cardtacular CardMeeting users,

I just finished my purchase order for the new CardMeeting hardware!

Ooh, exciting times! I've finished the hardware research I started at the beginning of the year and just put in an order for the first node of the new CardMeeting ultra-dense computing cluster! The focus of this cluster is storage, storage, and more storage using cheapo hard drives.

Green computing is also the name of the game here. The hardware I am selecting barely needs cooling fans, it draws so little power and generates so little heat. I'm not much of a tree hugger myself and my love of Gaia isn't behind my choices. The reason I'm sipping instead of gulping power is because I'm still operating CardMeeting in homebrew mode. As such, I still need to be able to develop and test my cluster hardware using residential power systems. I'd prefer not to blow any transformers on my street or have a 4-digit power bill every month, hehehe!

The other reason I choose vastly underpowered servers is sortof a deeper philosophical cheapskate one. I recognized around 2003 or 2004 that the budget/commodity hardware available at that time was far more powerful than the servers running (big!) internet sites in 1999. Moore's law and economies of scale were laying fine internet server hardware in my hands! Additionally, since 1999 new programming techniques coming into vogue like Comet and non-blocking IO were allowing me to more efficiently leverage the CPU and network than the 1999 programmers typically could. The bottom line, it's feasible for a cheapskate goofball like me to host more and more concurrent users with less and less costly hardware resources as time wears on.

So, would I like to build a hydroelectricity-powered WoldiePlex mega-cluster with P4's and SAN's and a bunch of those big reel-to-reel tape drives that spin back and forth all the time? Of course, that's a sexy rig that I can show off to all my geek friends! But, do I NEED that kind of power for CardMeeting? I think at some point I may need bigger iron if CardMeeting gets into more computationally expensive operations like media processing or document rendering. For now though, CardMeeting is just about shuffling cards and other fairly cheapy operations.

Of course, where I continuously flop on my face is in the internet connectivity department. Over the last couple of weeks, there have been a couple of TERRIBLE multi-hour internet outages in town here. I'm so sorry if you had trouble getting into your meetings. Sigh... There's just no getting around it, if you want a fast, clean, reliable line in the states, you've gotta fork over the cashola.

Once I get the cluster working and the code ported over, I'll move it out to a proper hosting facility and finally get a decent connection. The current freebie hosting for CardMeeting will continue to stay free, so if you can't/don't want to pay, you just get to keep plugging along on the crummy connection.

The real work on CardMeeting begins now, but I am jazzed about the trajectory. It's happening. Progress is still glacially slow, but it is happening. We WILL do business!

Thanks for using CardMeeting, it is a pleasure to serve you,
Dave Woldrich

Posted by davew at 8:28 PM in /

Sunday, 6 January 2008

CardMeeting server is ready for purchase

Hello CardMeeting users,

The CardMeeting license file support is complete! Buy CardMeeting today, woohoo! ;)

From a professional standpoint, CardMeeting has been a very rewarding project to work on. I've gotten to leverage libraries that I only vaguely knew existed two years ago. For the CardMeeting server licensing, I knew I needed to digitally sign the license key files that are given out to licensees so as to prevent their tampering with them. (Don't want to encourage people to make up their own license keys and give themselves free entitlements, after all.)

So, on this last misadventure I employed the fantastic open source library from the Legion of the Bouncy Castle. Those goofballs know how to make one heck of a library, wow. Their digital signature routines work great! I can cook up a license file with any text or XML editor, run it through my custom "signed license" xml generator, and voila, I have a tamper proof license key.

On the server side, there is a "license" folder created that is now scanned every couple seconds for new files added. Once a license key file is issued to you by Woldrich, Inc., you can just drop the file in there and the server will automagically register the new entitlements! (No server reboot required!)

It's one thing to see that kind of license key thing done by software companies and figure you know all the in's and out's of digital signatures. It's quite another to actually DO it, write the tools, and build support throughout your application to actually enforce and respect the entitlements named in the license key.

You can see the new license key code in action when you login to a CardMeeting. It matches your request up with a license key and then checks to see if your server is entitled to have that many users logged in at once. If you have too many users logged in, it only complains, it won't kick you off.

The only exception to that rule is if no license key is found. If that is the case, then the server puts itself into "QA mode" and only allows up to 3 users total to connect to the server. I figured people would want to run QA servers for new builds I give them, so that was the motivation there.

The other big news is that I went through a refactoring and cleanup effort in order that the server software would be ready for distribution. A couple of subtle bugs were squashed in the process so hopefully I've enhanced your stability and made for a better CardMeeting experience.

Thanks for using CardMeeting,
Dave Woldrich
dave@woldrich.com

Posted by davew at 5:25 PM in /

Thursday, 22 November 2007

Refining my sales message for CardMeeting

Hi CardMeeting users,

Happy Thanksgiving ... especially for me: the response to the news that CardMeeting is for sale was tremendous!

Even with the day-to-day statistics I get from the website and the CardMeeting application, it's very difficult for me to actually gauge the interest level of users. So, when I posted a blog entry on a whim awhile back saying that I was interested in licensing the software, it was a bit of a shock to see so many qualified leads show up out of thin air.

In talks with potential customers, I now see that the SalesForce model of hosted app is the most attractive to people. That fascinates me because I've always thought that organizations would not want their data hosted externally on my servers and that the preference would be for users to license the server and host it themselves. I totally misunderestimated that price and not control would be the primary issue.

I think I am going to have to seriously consider offering dedicated hosting even though it's going to mean lots more work for me. With respect to actually conducting real meetings, in a world of firewalls and NAT'ing routers, having an internet-accessible server like mine is very attractive. Companies like WebEx do very well to personalize their hosted service for their clients, and I could do the same kinds of things with CardMeeting.

CardMeeting has been a stretch for me in so many ways. I'm not a sales person, and I am not a business person. I'm a techie geek, first and foremost. My mind works in terms of features and functionality. But I can see my future customers care little for features and are driven mostly by the benefits and impacts CardMeeting has for them. Whew, very challenging! I definitely need to operate outside my comfort zone to understand and react properly to the needs of my clients.

Anyhow, the offer to license the CardMeeting server and self host still stands, and if you're willing to go out on that limb, you will get CardMeeting for yourself sooner rather than later.

Thank you everyone for the enthusiastic response to my offer to license CardMeeting! It is gratifying that so many people find the service worthwhile even at this stage of the game.

♥Love♥,
Dave Woldrich

P.S. If anyone else is interested in learning about licensing CardMeeting in the near-term, please feel free to contact me at dave@woldrich.com.

Posted by davew at 4:23 AM in /

Monday, 29 October 2007

You can own your very own CardMeeting server (for a limited time only?)

Hello CardMeeting users,

It's been a blockbuster year! Why not buy yourselves a shiny CardMeeting server as a holiday gift to celebrate?

I'm not blind, I can see what's going on with the stock market, and I know earnings are up up up for a lot of you tycoons. I figure you don't want to blow out your numbers too badly this quarter, right? There's only one thing to do: spend! Spend like there's no tomorrow! Spend like it's 1999! :) What I'm really saying is, you need to buy yourself your very own CardMeeting server! Heck, why not buy one for each department in your company? Act fast, the quarter will be over before you know it!

Here are just some of the benefits of running your own CardMeeting server:

  • 100% Security, Privacy, and Reliability!
    • Your private CardMeeting data is stored on your corporate servers and not on Woldrich, Inc. servers! (Think corporate off-site data storage standards here.)
    • Your CardMeeting data can be covered by your enterprise backup systems, safe from disaster!
  • Speed and Scale are finally yours!
    • No more klunky US-based internet connection or limited server resources holding you and your card-related dreams back
    • Your mighty corporate IT resources can scale CardMeetings to new heights! Host 100+ concurrent users in a CardMeeting!
  • 1st class citizenship, throw off your beta tester shackles and own your deployments!
    • Users on the web site work for you, testing CardMeeting to perfection in real world scenarios
    • You can QA/UA test CardMeeting yourself before rolling it into your production environment

I recognize CardMeeting is not feature complete. However, CardMeeting is finally showing the stability and performance that I have aspired to reach since its creation. By end of year, I will ship a server that would be worthy of your enterprise. Finally, some very useful features are on the horizon for CardMeeting in 2008 that might help you with your decision:

  • Multi-card selections so that users can move groups of cards
  • Standardized user logins
    • No more confusing community-based logon system
    • Each of your users will have an LDAP username and password
    • Better meeting access controls, access to meetings allowed by invite only
  • More meeting doodads like billboard titles and tape lines so people can layout proper scrum/agile walls

If you're interested in hosting your very own CardMeeting server in 2008, please drop me a line at your earliest convenience: dave@woldrich.com.

Thank you for using CardMeeting,
Dave Woldrich

Posted by davew at 5:45 PM in /