I didn’t realize what xpilot really is until I play it. It is a 2-D space shooter action game. The controls are simple, turn left or right, thrust forward, and shoot bullets. It reminded me another game called SubSpace, which is equally fun. I know this is so 1990s. Hay! These classics can still deliver a lot of fun! By the way, this type of games have the most fun factor when you are playing with a bunch of friends.
TabView’s documentation appears missing something. If I follow the instructions in the documentation, I couldn’t get my tabs to work. I only able to create a working TabView when I studied the examples. So, don’t pull your hair out on the documentation and go directly to the examples. Looking at the source won’t cut it. You should save the HTML using your browser, which will pull in all the
.css for you.
DataTable appears good, but not 100% too. If you have a large data set, the pagination feature will show very long list of pages, which makes the widget less pleasing to the eyes. I wish the pagination feature has an option to abbreviate the listing by introducing “…” to keep page listing within a single line. Beyond that, I do like the ability to fix the height to a certain size and use scrollbar to scroll through content. One of the example showed rows in alternating colors. I would like to replicate that and haven’t have the time looking into it. Let me know if you can spot the exact code to do that.
ColumNav is essentially a replication of iPod’s navigation interface. This is cool if you can organize your information in trees without cycles and if you only need to display information at the leaf node. I even tried to add an event listener in an attempt to capture click events on non-leaf nodes. For some reason, I only get a click event when an user click on the leaf node. If you can capture non-leaf click events, let me know.
All in all, these ready-to-use AJAX based web GUI components can help speed up your AJAX development. At the same time, you may have to work within the framework that each component was designed for. Sometimes you might even have to live with bugs in some of these components. For example, ColumNav might not play very nicely with other DIV layer objects. Specifically, the scroll bar might show through a DIV layer that supposed to be covered by that DIV layer, which is an undesirable side effect. Beyond that, you might want to watch out the amount of traffic generated by these widgets to your server. A page filled with a few of these components can quickly add up both download size (with all that
.css files) and number of connections to the server.
I was impressed to know that Yahoo Pipes allow average joe and geeks alike to remix information across the web through RSS/JSON. It has a powerful and rich web GUI editor that allows users to create new feeds without doing coding. It was really designed for the Web 2.0 age, with other data sources that speaks RSS or JSON. For well formed HTML, which is a form of XML, Yahoo Pipes seems not as easy to work with. Given that I know how to write my own regular expression parsing code in Java, perhaps someone can show me how something similar can be done in Yahoo Pipes. Beyond my special use case, Yahoo Pipes is still very powerful tool for many other Web 2.0 mash-ups and I would definitely come back if a new idea comes to my mind.
Dapper.net is a screen scrap site that allows users to extract information from a web page. It also have a powerful GUI that allows users to scrap data off a web page without writing code or even geeky stuff like regular expression or xpath. Dapper.net is really good at extracting a particular piece of information. You can just select a link, a paragraph or any particular block that may interest you on a page. This is a very powerful way to select several fields off a complex HTML page. However, it isn’t very intelligent at recognizing a long list. For a list, the user may have to select each individual item, which can be very tedious and error pron. Even though for my specific use case, it practically is useless, I still respect the creator(s) behind Dapper.net for creating such a wonderful tool for some people.
All in all, both Yahoo Pipes and Dapper.net attempt to bring some power of information processing to the masses and enable creative data remixing. At the same time, building powerful GUIs also limits users’ expressiveness. This is a trade-off that the designers of these tools made in order to bring usability up to a level that average Joe/Jane can actually understand and learn quickly. For those who needs more, he/she can write her own code to do what she/he wants.
I just took a brief look at my.opera.com‘s features yesterday and it is a very good contender when compare to WordPress.com‘s blog hosting service. I actually looked at other free blogging hosting providers too and none seems to match my basic criteria, which are free, search, and tags. Both blogging service providers met my basic criteria. There are probably many more. Let me know if you know more good ones. After taking a closer look, I identified a few strengths and weakness on both and shared them with you below.
Let’s start with my.opera.com. It’s actually not just a blog hosting site. Rather, its focus is to be a social networking site that happen to have blogging and photo hosting. Since my focus is on blog features, I won’t spend much words on social networking or photo hosting features. Given its broader focus, my.opera.com still have impressive features. It also allows you to define access rights and passwords to let user to control who to expose the content to. This is a nice touch that I don’t remember seeing on WordPress. To me, this is a nice to have feature. Users can also add widgets such as polls and countdowns, which are interesting nice to have features too. The available designs that my.opera.com has also looks pretty nice. WordPress has equivalent feature here and even took a step further by allow custom CSS for paid users. Since I only look at free features, custom CSS doesn’t count. ;) Responsiveness of my.opera.com web site is also very good for the short duration that I evaluated. This is where WordPress.com might be a bit behind on. The jury is still out on this responsiveness comparison.
I was impressed that my.opera.com takes a RDF and exposes a FOAF (Friend of a Friend) link on the bottom of user’s public about page. my.opera.com also allows an user to display a widget that lists which my.opera.com users visited his/her blog. This is also a nice touch. These are certainly social networking features that doesn’t have to be in a blog.
On the other hand, WordPress still provides many features that I appreciate. I really like the stats showing past 3mo traffic trend not just on the blog, also on each individual blog entry. Also, information on top posts and best day ever also informative. The export/import feature allows me to re-host my blog on a different instance of WordPress software if I choose to. This is one of the best feature of WordPress.com. I have the freedom to move my content, even if it is moving from other sources to WordPress.com. This is a very cool feature that my.opera.com can learn from.
I find browsing other people’s blogs easier with WordPress than my.opera.com. my.opera.com’s language preference seems to be broken. I saw so many Vietnamese blogs on my.opera.com, or at least I think they are Vietnamese ;), I started to think there aren’t that many English blogs. It’s great that my.opera.com is a global service provider and good to see people of different countries participate on this global community. I just find it harder to find peop “local” community with my.opera.com. WordPress.com allows tags surfing, while I don’t see that in my.opera.com. Considering my.opera.com’s focus is more on social networking, I have higher expectations on these features.
Hope my commentary helps both WordPress and my.opera.com developer communities to improve future releases of blogging applications. Keep up the good work.
If wasn’t for the online documentation and forums, I would not have complete my installation/configuration as successfully as I did. As a token of appreciation, I am sharing some pointers and notes on my experience. Hope this will be helpful to you too.
Over the weekend, I did a fresh install of Ubuntu 7.04 (Feisty Fawn) Server on AMD64. Why server? I thought that I wanted to take advantage of the “support for hardware facilities that speed up the use of virtual machines“. So I inserted the CD and started the installation. The installation was fairly smooth and fast. I had to spend a bit of time to get used to the new disk partitioning menu interface and re-partition a few times before I get the software RAID configuration I liked. The installer offered the option for the user to select if she/he wants to install LAMP and other server components, which is what was expected out of a server edition of the OS.
What I didn’t realize was that folks at Ubuntu.org was really serious about building a server distribution that only installs what it needs to run as a server, which was the right thing to do. When I rebooted my machine to load the OS, I only saw a text console, no desktop environment was installed. So, I said to my self, “Great, now I’ll have to install that myself!?” This was actually no big deal for me because I am comfortable enough to do that manually with the help from other online HOWTO documentations. This actually reminded me of days when I was installing Gentoo from source. That was a long but rewarding process. I figured out what package I needed or wanted from various guides (for example, this one) and build a list of packages to tell the package management system (
apt-get for Ubuntu) to batch install them while I take a break doing something else.
Configure the system after installed the packages became a bit more challenging. For example, GNOME Display Manager (GDM) would complain that Human theme not found. So, I tweaked
/etc/X11/xorg.conf to load another theme that I installed already. Next, X would not load because Nvidia driver installation binary added references to font files that didn’t exist and attempted to load a tablet input device driver (
wacom). I commented out these references and that did the trick for me.
The next challenge I had was trying to enable Smart Common Input Method (SCIM) to load in GNOME. The first HOWTO didn’t work for me. Fortunately, the second HOWTO got SCIM to load correctly. I also was able to configure 32-bit Flash Player 9 with 64-bit Firefox/Mozilla. I wished the same library wrapping technique would work for Java plug-in. I even tried to run 32-bit Mozilla. Before I get to try the 32-bit plugin, Firefox complained that it can’t find 32-bit SCIM. Until the JVM team/Java community create a 64-bit version of the plug-in, I guess am out of luck and will have to do run 32-bit Mozilla in a VM image to work around the issue. Even VMWare Server 1.02 can’t install without issues. Fortunately, this HOWTO save me for the day.
All-in-all I am happy with my setup for now. Drivers works beautifully. I wish the missing 64-bit software support (Flash Plug-in, Java Plug-in, etc.) and WMA codec support would be less painful or unfriendly on AMD64. If I had known better, I would install the desktop edition rather than server edition for my use. It should be much easier to install sever kernel or VM optimized kernel than setup a desktop environment. I’ve learned my lesson. ;)
Linda Kaplan Thaler and Robin Koval wrote a nice little book “The Power of Nice: How to Conquer the Business World with Kindness“. Although I question some of the root-cause justifications or arguments presented in the book, I certainly like the overall theme and most of the ideas presented in the book. I am including some of the quotes from the book below. However, it won’t paint you a complete picture presented by the book. Get you self a copy. It’s a fast read.
(Page 3-4) “Nice is not naive. Nice does not mean smiling blandly while other walk all over you. Nice does not mean being a doormat. In fact, we would argue that nice is the toughest four-letter word you’ll ever hear. It means moving forward with the clear-eyed confidence that comes from knowing that being very nice and placing other people’s need on the same level as your own will get you everything you want.”
(Page 28) “When you start acting from a place of abundance, you’ll start to feel that sense of abundance. Once you start to experience that richness, you won’t worry so much about what the Joneses have.”
(Page 36) “It’s a lot easier to make your client, your boss, or your husband more receptive to your ideas if you say it with a smile.”
(Page 68) “Whether you are a manager or a business owner, a colleague or a friend, when you’re able to help others discover a solution on their own, you’re helping them to not just solve the problem but to find a way to solve future problems as well.”
(Page 79) “For example, say someone tells you that they hate what you’re wearing. You could say something nasty back, or you could thank them for being concerned about your appearance. The actual intention of the person doing the clothing critique is unimportant. What matters is that you train yourself to interpret the encounter in a positive way.”
(Page 106-107) “It doesn’t matter how small the business is — because for a junior-level person who just sold a coupon ad, that’s their whole world. If we don’t recognize it, we’re essentially saying that their work doesn’t matter.”
(Page 114) “The beauty of focusing on other people’s concerns is that it shifts your attention away from your own worries and anxieties. And it’s a lot cheaper than therapy!”
Special thanks to Mimi H. for recommended this book to me. This certainly was a pleasure to read. John Kotter and Holger Rathgeber took on a similar story telling style that Spencer Johnson and Kenneth Blanchard used to write “Who Moved My Cheese?“. It read like a children’s story with big fonts (easy on the eyes), pictures, lively characters and lessons embedded to teach something novel. The story telling style removed the reader from applying his/her own discriminatory views and enable the readers to better accept the key ideas presented by the authors. The key ideas that Professor Kotter and Mr. Rathgeber conveyed in this penguin story is the eight step process of successful change, which is listed on page 130 and 131 in the book. Here is a brief listing of the steps:
- Create a Sense of Urgency.
- Pull Together the Guiding Team.
- Develop the Change Vision and Strategy.
- Communicate for Understanding and Buy In.
- Empower Others to Act.
- Produce Short-Term Wins.
- Don’t Let Up.
- Create a New Culture.
How these steps applied throughout the penguin story? You will have to read the book to find out. ;)
I was impressed by Dr. Karen Stephenson‘s talk about social networks. She firmly believes that “relationships are the true medium of knowledge exchange, and trust is the glue that holds them together.” (Page 248, “Enlightened Power”, see pdf) Without trust, much of organizational machinery breaks down and can leads to failures in reaching organizational goals. This certainly is a powerful concept and at the same time subtle enough that we may overlook its importance.
Several months ago, I realized that paper-based todo list was not sufficient for my needs. I went on searching for a web-based todo application to help me manage my todo lists. After evaluated a few existing implementations that I could find at the time, I decided to use voo2do. I was impressed by ease-of-use with its use of AJAX techniques. Today, I came across a even more impressive todo web app, Todoist. There a lot of short-cut key strokes to help speed-up user work flow. One cool thing that I cough my attention immediately about Todoist is the concept of hierarchical todo list, a feature that is missing in most todo applications. After spending some time with both apps at the same time, I realized that Todoist server appears not responding at times, while voo2do still operate normally. Now, the competition is up another notch. Keep up the good work to the folks at Todoist and voo2do.