Some quick fixes.
- Character encoding fixed. Diacriticals should post correctly now.
- Changed header font
- Added a border around the gadget
I need to know if the new tweet notification workflow is working for you. The intended behavior is to display the “new tweets” notice. It should not scroll to the top when the notification displays. Clicking the “x new tweets” notification scrolls to the top and displays the new tweets. I’ve checked this several ways and believe it’s working. If it’s not working for you or you think it should function differently, let me know.
Rounded borders. I’m not holding out too much hope for this one. Inserting a background image with transparency kills the performance of the application. It’s something you have to see to believe. The gadget literally gets twice as slow scrolling. I can only surmise that it’s a bug in the sidebar code. Lots of gadgets don’t scroll so it’s not an issue but tweetz’s performance in this area is important.
I’m still not satisfied with the long term performance of the gadget. Performance still degrades over time albeit more slowly. The issue is the DOM. The larger it gets, the slower it goes. I’m thinking of rendering only the top 25 tweets on a refresh with a “more” link to continue. All the received tweets are in the memory model so updates for additional content will be fast.
Couple of quick tips: Ctrl+S will bring up the message window when the gadget has the input focus. Ctrl+S will send a new tweet. Ctrl+K will shorten links. If you hover over the message window buttons, you’ll get tooltips showing the keyboard shortcuts.
That’s all for now. Available on the downloads page.
Ok, I’m finally to the point where the new version of tweetz™ is good enough to warrant a beta release. For those who have been following this blog, you know that I decided to “start over” with tweetz. While the old tweetz was an OK gadget, it was bumping up against the limitations of it’s implementation.
The new version doesn’t do everything the old version did (yet). However, what it does, it does better. And more importantly, the code is more robust and extensible which means it should perform better, be easier to maintain and new features should be less disruptive code-wise.
Some things I was able to fix in the version.
- Better font – Actually the font is the same as before but it’s not bolded. I never did figure out why the older version bolded fonts but I suspect it had something to do with lame IE implementation of opacity.
- Better performance – The old version slowed down as the number of tweets increased. The new data model is much more efficient.
- Better interface – This is obviously subjective, but I think I’ve made some interface decisions that make the program better. Your feedback will be the judge.
- New features – I did sneak in some new features like hash-tag searches.
I’ll have much more detail in the release post. For now, I’m looking for feedback and validation of the new implementation.
Available on the downloads page.
I’ve been busily working on the next release of tweetz™ these last couple of weeks and have mostly ignored my blogging duties as a result. Codemash 2009 was a real wake call for me in that I realized that I needed to update my skills in a number of areas. If you take your craft seriously, you realize that getting “comfortable” is the kiss of death, skills wise. Especially in the profession of programming.
So, after seeing all the cool JavaScript/jQuery (and other stuff like Ruby) at Codemash, I arrived back, cracked open the tweetz code and set about to employ the new techniques I learned. I was immediately hit with a sad and disquieting realization however. The code really “sucked”.
It’s my own fault perhaps but consider that tweetz started out as just a few changes to a gadget called Twadget. It was written way back in 2006 using jQuery 1.1. Much has changed since then.
The code suffered from a classic case of lack of separation of concerns. You see this a lot in Web programming. Here’s this fat old DOM sitting out there just begging to have data and handlers hung on it like a Christmas tree. I followed suit with my “incremental” improvements and well, the result wasn’t pretty.
If I’ve learned anything about programming over the years, it’s that I suck at it. That sounds harsh but consider that we all “suck” at programming to varying degrees. As Jeff Atwood has said many times in his blog, “The goal is to suck a little less as time goes on”.
So I started over with tweetz. It wasn’t really worth “saving” in it’s current state and I had the opportunity to “do it right” this time around. I’ve also learned a tremendous amount about JavaScript and jQuery over the last few months. It’s really been an eye-opening trip of discovery. JavaScript is more powerful and robust than I realized.
Tweetz™ 2.0 has a real data model now. The controller and views are separated (mostly), and the generated markup is and much leaner and therefore faster. Many of the odd quirks and behaviors have disappeared in this new version. The code still sucks. It just sucks a whole lot less.
I keep thinking I’ll release the new version any day, but then realize there are many features the new version doesn’t support yet. As much as I’ve maligned the old tweetz, it was feature rich and did it’s job well for the most part. The new one is better so far and like any craftsman, I’m enjoying the process as much as the result. It may be a few days or a few weeks before tweetz 2.0 debuts, but trust me, it’s coming.
previous | next
powered by Bloget™