I heard from a user of the Attachment Viewer today that when a large ZIP was selected the client appeared to hang. He explained that the attachment viewer was not even showing yet it looks like it still processed the selection. Well, he was right. After looking at the code, it was actually processing the ZIP file every time – whether the viewer was showing or not. So I made a simple change and he is checking it out (testing it for me). I did my small unit tests but I figured giving him a patch and testing his large ZIP file attachment would also be good – a second set of tests is always welcome in software.
So what did I do?
In the selectionChanged() event I had to determine if the view was visible or open. This was an interesting problem because the view itself does not contain this state. What I had to do was register the view with the workbench as an IPartListener2. Why the “2″ and not just IPartListener? The key event we need is actually partHidden()!
The description of the event is here:
Notifies this listener that the given part is hidden or obscured by another part.
What I do is have a class level property named “_closed” and set it to true or false in the different events for IPartListener2. This allows me to not process the selection if its “_closed” and just return out of the selectionChanged() callback.
I scoured the SWT and Eclipse world and I could not see another way to do this so if anyone has any input please let me know. I will be updated the OpenNTF project with the fix in a few days. I am sure one of the Eclipse guru’s reading would know if this is correct or not.
I love the open source community. The amazing Super3Boy has a really good set of tutorials and is extremely popular in the Blender community. Following his 24th tutorial video I was able to create a basic explosion. In the end, after playing with the many settings it looks more like a gravitational pulling apart video, or something like that, then an explosion but anyway, its pretty cool.
I like how Facebook just changes its UI somewhat randomly. I am sure they announce this stuff somewhere but from a casual users perspective its pretty annoying. I log on to FB tonight and notice the “Share” field is now gone and I have to click an option of what I want to share:
Click to enlarge
So is this how the cloud works? Will applications in the cloud “just change” one day when a user logs in? I wonder how this would fly in real enterprises. I know when I worked at a large company in IT there had to be all kinds of training, warnings, etc that a new version was coming. This just seems to easy to frustrate the average employee.
One key thing that may distinguish cloud based applications from on premise custom applications is that they are so intuitive it doesn’t even matter if the stuff changes. Unfortunately FB has not been so intuitive. I remember several changes totally frustrated me in the past. This one change is minor but its funny how I immediately noticed it because I could just click in a field and start typing!
Viola! The rendering worked just by changing that one line! I am not sure what I was doing right or wrong but I do know that this was very frustrating and wanted to pass it on. If you are using “dijit.layout.StackContainer” with “dijit.layout.ContentPane” and are seeing some strange things then try Dojo 1.5.
I really wanted to dive on the two versions of Dojo to write about what exactly was the problem but I have been too swamped to take that dive. Hopefully this helps out others.
Today I sat down with my eight year old and showed him a little bit about Blender. After the first video he immediately took interest and I also showed my two oldest kids the video and pointed them to the YouTube tutorials by Super3Boy and Blender site so they could play around if they wanted. In the end, Nathan came up with the animation below. I helped by doing the actual work but he pretty much directed the entire animation – which was cool. He seemed to have a pretty good interest level. You can do a Save As on this link if you want to download the blend file.
After taking some feedback and hearing further arguments I went ahead and automated a program that runs many permutations of the sort comparisons. For these results I ran against an array that has 150,000 random strings that are sent into each different sort approach as I showed in the previous post. I then wrapped these calls into a loop and ran that loop 50 times. The results are a little different than the first set of tests but in the end the Java sort is much faster. Maybe the next exercise would be to code a search that is as fast as the Java sort – without looking at the Java sort code…
Here are the average numbers. Each set below is the average for a 150,000 element array running 50 times. I actually ran this twice just to get another set of numbers.
150,000 elements run 50 times
Average Merge Time = 176
Average Quick Time = 190
Average Java Time = 161
150,000 elements run 50 times
Average Merge Time = 182
Average Quick Time = 200
Average Java Time = 165
Does anyone else hate this new collapsing block of advertisements you see on some sites now? The ad initially expands and pushes the content of the article down the page and you either wait for it to disappear (scroll back up) or click the close button. This has got to be the most annoying advertisement method I have ever seen on the web! I actually get extremely annoyed daily on one of my favorite sites:, InfoWorld. I am sure some marketing person thought this was a great idea. I for one absolutely hate it. Put your ads on the top, the side, or throughout. I don’t care. Just don’t make blocks scrolling around uncontrollably.
This is a really good web cast about Eclipse Features, Plug-ins and how they are deployed and installed into Lotus Notes. Chris Miller does a great job explaining the difference between plugins, features and widgets. I really like how Chris talks about Eclipse Features – many do not understand or even realize what a Feature is. If you want to know this stuff make sure you watch and listen to his great web cast about these new packaging models in the Lotus Notes 8.x client. You can see his original post or you can just watch the embedded replay below.
Education like this is very important. More and more companies develop plugins and widgets; as an administrator you need to know how the plugin and widget get deployed and then, more importantly, how they are updated or removed.
I have always been a stat junkie and when I went into my blog today I noticed the last post about Blender was the 800th post for my blog. While there have been a lot of different kinds of posts since the very first one on February 15, 2006 I have in the past year or so tried to focus on software development, but once in a while I have to share some funny or personal stuff – its the nature of blogging! I am not sure if there are any blog milestones or not but I thought this was interesting. This post makes 801. I am not sure how many posts I have in a month, year or whatever but it will be interesting to see where I am in a year from now.
There is a side of me that has a huge interest in virtual reality, 3D modeling, and gaming. It has always has been a hobby to do this kind of stuff and as the open source community grows and the tools and techniques are becoming better and better the interest level increases. I took some time and went through a few Blender tutorials – which I am amazed how large the Blender community is. Bottom line – if you like graphic arts, 3D modeling or animations then Blender is an amazing tool to start with or get involved in. There is even an artist site where people who have created graphics with Blender collaborate on.
The first tutorial I went through showed how you can easily animate a bouncing ball. This tutorial shows you the basics of the animation concepts with Blender. I created a bouncing ball but then did a few more things to play with movement and rotations. Here was my first Blender animation:
The output of Blender is very nice. I was first having the output be a series of JPG’s until I changed the output settings. I ended up just choosing AVI and then uploading that to YouTube (the video you see above).