Anyone who has used the Ext.LoadMask object with a modal window (basically a popup that prevents you from interacting with anything outside the window) that spawns another mask will know that there is a known bug in ExtJS that doesn't mask the modal window automatically.
Example:
Say you're looking at an online menu for a restaurant, like something you would see on GrubHub. You select one of the dishes and it pops up another window that asks you what kind of rice you want with it, simultaneously graying out everything around the popup. That rice-selection popup is a "modal window".
Imagine you select your rice choice (white, of course) and press the OK button. A small loading icon appears, a mask appears over the modal window, and a second later the modal window and both masks go away, leaving you on your original menu window, with your dish and rice option selected.
That's what should happen. In ExtJS that second mask doesn't overlay the modal window, meaning you can click things while it is doing work in the background. It probably won't affect the operation, but it's tacky and unprofessional.
I've run into this at work, and an easy solution that worked for me is
Ext.WindowMgr.getActive().setDisabled( true );
That will (usually) get the topmost window, likely the modal window you are looking at, and disable it which causes it to gray out as if masked. Call this right after the user hits the OK button and you should be all set!
Friday, October 22, 2010
Monday, October 4, 2010
[GAMES] Figuring out your saved Nethack character name on Windows
One of my coworkers is a dual major in computer science and game design, and recently we've been talking about some of the games that set the groundwork for the games we know today. He started talking about the game Rogue and the games that built off of it, called "roguelikes". Basically, they're text-based dungeon crawling games with randomized dungeons and permanent death. Diablo was actually heavily influenced (according to the developers) by the most popular roguelike, NetHack.
Of course, I had to try it out, and now I'm pretty much addicted.
But this post isn't about my propensity for gaming addiction, it's to actually provide some useful information. I got the furthest I'd ever been last night and saved and went to bed.
The problem is that I couldn't remember my character name. I'd started and died so many times I was just hitting random keys for name creation. However, you can look at the save file and figure out your character name.
On Windows XP at least, it will be saved into the same directory as the NetHack executable. The file format is
WINDOWS_USERNAME-charname.sav
For example,
Administrator-AwesomeValkyrie.sav
Just type in "AwesomeValkyrie" in the load screen and you're all set!
I hope that helps someone out there who looked up the solution to this problem and only ran into *nix answers :-)
Wednesday, September 29, 2010
[TOOLS] Transparent development progress
One of the biggest movements in software development is that of transparency: telling all observers, especially stakeholders, exactly what the team is building right now.
For example, the Scrum development methodology suggests the use of a "burndown chart", a publicly visible graph that shows how much work is left to do in a sprint.
I found another cool example of this when following the Natural Selection 2 video game's blog. They released an alpha version of their game to people who have pre-ordered the game, and want to keep people updated on their progress towards completion and which features they're working on.
Through the use of Pivotal Tracker (I've never used the tool, so I can't say good or bad things about it) and a simple web page (actually the web page might be built through the tool) the company has created a great transparent window into their development process and increased the connection with their customers.
This is a huge step forward in communication with the customer. Anyone who has ever pre-ordered something still in development (a phone, some software, even startup capital in a new company) knows how frustrating it is to sink money into a black hole and not know what happens to it.
With a simple but effective interface like the one shown above, people can have faith that their money is actually being spent on real features and get a handle on the direction of the product. It also encourages new investment by displaying the progress of the team.
Tuesday, September 28, 2010
[TOOLS] Spring 3.0 - making life difficult
Just kidding. Kind of.
In Spring 3.0 they decided to break up the main spring.jar into a bunch of smaller jars. While I'm sure they had great reasons for doing so, it means that old examples are now broken since you have to figure out which jars they use.
Or, alternatively, you can just reference all of the jars. In Eclipse, create a new "User Library" called spring jars and just add all those spring jars into it. In whatever package needs spring, add your new user library to the build path.
In Spring 3.0 they decided to break up the main spring.jar into a bunch of smaller jars. While I'm sure they had great reasons for doing so, it means that old examples are now broken since you have to figure out which jars they use.
Or, alternatively, you can just reference all of the jars. In Eclipse, create a new "User Library" called spring jars and just add all those spring jars into it. In whatever package needs spring, add your new user library to the build path.
Thursday, September 2, 2010
[TOOLS] Off-label use: ExtJS 2.3 with Managed IFrames
FYI:
The ExtJS extension "Managed IFrame" only lists support for ExtJS 1.1+, 2.0.X and 3.1.1+ only.
However, I can tell you from personal experience that the miframe_1_2_7 version (found here) definitely works with ExtJS 2.3.0. We use it at work in our widget system, and we found it to work perfectly.
Sunday, August 29, 2010
[RANDOM] Best of Wikipedia edit wars
For a bit of amusement, check this out and see what the lamest edit wars on Wikipedia are.
My personal take:
-Why bother mentioning House's lack of Asian diversity?
-Totally appropriate to put spiders on the arachnophobia page :-)
-Aluminum
-Cat: Owner
-Sulfur
Wednesday, August 18, 2010
[TOOLS] Amazing desktop wallpaper
It's sleek, simple and useful. What's there not to love?
Here's an example one...

It took me a while to find a blank version, but you can finally get it here.
I'm loading it up right now on my computer, maybe I'll post it when I'm done :-)
By the way, you might need to change your icon grid settings to get it to work:
Wednesday, August 11, 2010
[SCRUM] Keeping your team informed of technical details
In the past few months my scrum team has doubled in developer size. We started out with four developers, a Scrum Master and a Product Owner and have since added four more developers (two full-timers and two co-ops, who are full time until the end of December).
Recently we discussed how we no longer knew exactly what each other was doing. We might know generally what part of the product they were working on (through standups), but now had very little idea of how they implemented technical details. With standup time being the same (15 minutes) and the number of people who had to speak doubling, there was no way we could fit in extra discussion. We threw around having occasional code reviews, but anything that isn't regularly scheduled tends to fall by the wayside pretty quickly.
Our final solution was for the whole team to show up to our biweekly demo an hour early and go over what we changed on the projector. It's a perfect time to show completed code, do knowledge transfer AND prepare for the demo.
Wednesday, July 7, 2010
[RANDOM] More Chess!
I've been in a chess mood lately and been reading up on a lot of chess-related wikipedia articles.
For example, did you know that the "first-move advantage" in chess that goes to White has been debated for a long time whether it even exists? While the current prevalent idea is that against an equal opponent you should expect to win as White and draw as Black, this is far from universal and has been debated for a long time. If White does have an advantage, it only comes out to about 2 to 6% more won games.
Here's another link on cheating in chess, most of which is either getting help from outside sources (meeting them in the bathroom, sneaking looks at a handheld computer, etc.) or touching a piece and not moving it.
Another link on world records in chess. The "worst performance in simultaneous games" is pretty amusing, with Robert Wade losing 20 out of 30 games, including one to a seven-year-old.
Underpromotion (promoting a pawn to anything other than a queen) is very rare, but does occur in certain very specialized circumstances. It usually happens when promoting the pawn to a queen would result in a stalemate.
Antichess is a cool chess variant where both sides try to lose all their pieces first, and kings have no special powers (no "checking" occurs). Players must capture a piece if it is possible.
Some other clever chess variants exist. Chess boxing is alternating rounds of chess and real boxing, with victory possible via knockout or checkmate. Chess960 was created by Bobby Fischer that randomizes the back rank of pieces. There are other really cool variations that seem real fun to play too- for example, using different numbers of starting pieces or capturing rules.
Monday, July 5, 2010
[RANDOM] Ever wonder what happens to deleted Wikipedia articles?
You can find them here.
Some of them are really funny. Most seem to be self-advertisements of some sort. For example:
Monday, June 28, 2010
[RANDOM]Kasparov vs. the World
Nifty chess game between one of the best players of all time against, well, the world. Garry Kasparov played against the entire internet. Anyone was able to suggest moves, and the move with a plurality was selected. Both sides had 24 hours to make their move.
The World team also had help from four great young chess players who suggested moves, and discussions occurred on a Microsoft sponsored online bulletin board.
Monday, May 3, 2010
[CODE] How to alias commands in unix shells
One of those annoying things that takes more time to look up than it really should.
Example:
alias s='cd ..'
is one of my favorites.
If you need to know more details, man alias.
Checkdisk, and why it's a pain
Checkdisk, also known as chkdsk, is a Windows tool that scans your hard drive and checks for, and attempts to fix, problems with it. Generally speaking it can only be run after you restart, since it requires exclusive access to the drive in question.
See the problem? If a chkdsk isn't completed successfully the drive stays "dirty", indicating that a chkdsk should be run on the next startup. This continues only a chkdsk succesfully completes, which is likely to be never unless you do something about it.
The main way people use tend to use chkdsk is to right click on the drive in Windows Explorer, go to Tools and then click the button for Error checking. This will schedule a chkdsk for the next time your computer starts.
The problem with this is what happens when something goes wrong. For example, my computer was suffering from freezes that I suspected were related to my accidentally pulling out the power cord when plugging my external hard drive (ironically to back up my stuff).
Upon restart, it performs a chkdsk. When that finishes after several hours, it blue screens. When it restarts, it does a chkdsk again.
See the problem? If a chkdsk isn't completed successfully the drive stays "dirty", indicating that a chkdsk should be run on the next startup. This continues only a chkdsk succesfully completes, which is likely to be never unless you do something about it.
This is why you should do chkdsk from a safe mode command prompt so that if something goes wrong, you don't get into an infinite loop of chkdsk.
I can't boot into safe mode with command prompt, but that's another problem...
You also can't cancel a chkdsk that's already in progress short of restarting. Ctrl-c doesn't work.
Monday, April 12, 2010
[RANDOM] Google chatting to a cell phone
Some people out there know this already, but you can send Gchat messages to a cell phone. It's awesome and has no setup time- just punch in the phone number after you enable the feature in Labs.
http://www.gizmodo.com.au/2008/10/google_adding_text_messaging_to_gchat_in_gmail-2/
Go nuts!
http://www.gizmodo.com.au/2008/10/google_adding_text_messaging_to_gchat_in_gmail-2/
Go nuts!
Friday, April 9, 2010
[RANDOM] How to lock IKEA telescoping "A" legs
Ok, so this drove me crazy until I figured out what the trick is.
If you've ever bought IKEA furniture, in particular anything that has a choice between T legs and A legs, DO NOT BUY THE A LEGS.
The hassle it will be trying to adjust and lock those legs while keeping your surface level will drive you insane. Don't be cheap on this; spend the extra $50 or whatever to get the better legs.
However, if you do have A legs, like me, the way to unlock and lock them is counterintuitive.
Unscrew the legs CLOCKWISE (yes, that is reversed from normal) to unlock them. Adjust height. Screw COUNTER-CLOCKWISE to lock.
If you go to the IKEA website and find instructions, it will tell you the same thing. Go to page 40 to see the cartoon for it.
This drove me nuts because I've had this desk for a couple years and forgot that it's reversed (and lost the original instructions).
If you've ever bought IKEA furniture, in particular anything that has a choice between T legs and A legs, DO NOT BUY THE A LEGS.
The hassle it will be trying to adjust and lock those legs while keeping your surface level will drive you insane. Don't be cheap on this; spend the extra $50 or whatever to get the better legs.
However, if you do have A legs, like me, the way to unlock and lock them is counterintuitive.
Unscrew the legs CLOCKWISE (yes, that is reversed from normal) to unlock them. Adjust height. Screw COUNTER-CLOCKWISE to lock.
If you go to the IKEA website and find instructions, it will tell you the same thing. Go to page 40 to see the cartoon for it.
This drove me nuts because I've had this desk for a couple years and forgot that it's reversed (and lost the original instructions).
Thursday, March 18, 2010
[RANDOM] Gmail conversation limit?
Apparently after a Gmail conversation reaches 100 messages, it automatically spawns a new conversation.
Either that or I'm going crazy.
At any rate, maybe this will be helpful for some obscure reason at some point.
Either that or I'm going crazy.
At any rate, maybe this will be helpful for some obscure reason at some point.
Friday, March 12, 2010
[RANDOM] Northeastern students in a fishbowl
In my "Computers in Society" class, we talked about the effects of technology on our privacy, and what privacy really means. Privacy is hardly binary (private or public). There are varying degrees of privacy and many of them are based off of perception.
For example, donating money to a political campaign is a public act. For a variety of reasons it's important that donors give out their personal information. Most everyone seems to think that there's nothing wrong with that.
However, if you combine technology with "public" information you can get some controversy over ease of access. For example, California successfully passed a law to ban gay marriage. This website lists every single donor to that campaign by their name, profession, donation amount and marks their exact location on a Google map.
Is this illegal? Technically, no. All of that information is freely and publicly available at government institutions. Why is this a big deal? Most people don't have the energy to copy down thousands of names by hand from record books and post them on the internet on a map.
That's a great example of how people are fine with releasing information to the "public" as long as it's not in everyone's faces. It's analogous to permitting photos of your child's dance performance to go up in a public school's lobby, but making a fuss if they end up on the internet and gather millions of views.
Anyway, this leads up to the fun part of this article, which is how you, whoever you are, can watch Northeastern students online. For free. Really!
There are a number of cameras placed around campus that let you see public areas in real time.
The link is here.
Another student at Northeastern, Will Nowak, compiled all the videos together onto a single page for ease of use.
Is this too far, or perfectly OK? Enjoy the videos.
For example, donating money to a political campaign is a public act. For a variety of reasons it's important that donors give out their personal information. Most everyone seems to think that there's nothing wrong with that.
However, if you combine technology with "public" information you can get some controversy over ease of access. For example, California successfully passed a law to ban gay marriage. This website lists every single donor to that campaign by their name, profession, donation amount and marks their exact location on a Google map.
Is this illegal? Technically, no. All of that information is freely and publicly available at government institutions. Why is this a big deal? Most people don't have the energy to copy down thousands of names by hand from record books and post them on the internet on a map.
That's a great example of how people are fine with releasing information to the "public" as long as it's not in everyone's faces. It's analogous to permitting photos of your child's dance performance to go up in a public school's lobby, but making a fuss if they end up on the internet and gather millions of views.
Anyway, this leads up to the fun part of this article, which is how you, whoever you are, can watch Northeastern students online. For free. Really!
There are a number of cameras placed around campus that let you see public areas in real time.
The link is here.
Another student at Northeastern, Will Nowak, compiled all the videos together onto a single page for ease of use.
Is this too far, or perfectly OK? Enjoy the videos.
Thursday, February 4, 2010
[TOOLS] Need to know what's taking up space on your hard drive?
A coworker of mine recommended WinDirStat, which is actually pretty cool. It ran pretty quickly (on a 240 gb hard drive that's 80% full, it finished in about two minutes). It tells you directory breakdowns of which is the largest folder, and allows you to drill down to see the files.
It also has a good visual graph of your hard drive, allowing you to see from a glance what types of files (and which, if you mouse over the section) take up the most space.
This only works on Windows of course. *nix users have easy console commands for this :(
It also has a good visual graph of your hard drive, allowing you to see from a glance what types of files (and which, if you mouse over the section) take up the most space.
This only works on Windows of course. *nix users have easy console commands for this :(
Sunday, January 24, 2010
[RANDOM] Cleaning old java updates from your system
Chances are that if you browse the internet regularly, you have the Java Runtime Edition (JRE) installed on your machine. Your browser launches it when you run into things like java applets, usually in the form of a game, or maybe a telnet client. My school's command line web login uses Java, for example.
Chances are also good that you've updated your JRE a few times since it bugs you with annoying prompts if you don't. The updates are good to have (they usually fix security flaws) but unfortunately Sun doesn't clean up after itself. Your computer probably looks something like this:

See those extra updates? I already have "Java 6 update 17", but there's a "Java update 4", a 5, and a 7. You only need the highest number update. Cleaning up the others can save you on average of a 100mb per update. If you have all 17 updates, that's 16 useless updates, or 1.6 gigabytes of wasted hard drive space.
How do I get rid of them?
You can try manually removing them using the Add/Remove programs tool, but that can sometimes break the installation or not clean them up fully. I just discovered a tool called JavaRa that seems to work pretty well. Try it out here (search for JavaRa, Windows will need the "binary" file).
For a corroborating source on what I just told you, try this link.
Chances are also good that you've updated your JRE a few times since it bugs you with annoying prompts if you don't. The updates are good to have (they usually fix security flaws) but unfortunately Sun doesn't clean up after itself. Your computer probably looks something like this:

See those extra updates? I already have "Java 6 update 17", but there's a "Java update 4", a 5, and a 7. You only need the highest number update. Cleaning up the others can save you on average of a 100mb per update. If you have all 17 updates, that's 16 useless updates, or 1.6 gigabytes of wasted hard drive space.
How do I get rid of them?
You can try manually removing them using the Add/Remove programs tool, but that can sometimes break the installation or not clean them up fully. I just discovered a tool called JavaRa that seems to work pretty well. Try it out here (search for JavaRa, Windows will need the "binary" file).
For a corroborating source on what I just told you, try this link.
Sunday, January 17, 2010
[PROF] Google your own name before job searches
This is something that your professional contacts will always tell you to do. However, I feel it's still overlooked considering how often people get fired or disciplined for having questionable content on the internet with their name attached to it.
In Google, just search for your full name with double quotes around it. The double quotes force the search to only include content that has both words together, which is helpful if you have two common names (for example, a search for a name like Bob Smith would return all pages that have Bob or Smith in them).
You should look at the search results and decide whether you want to take anything down, or try to at least.
As an example, here's a search for myself. I used to have only about 20 results total, but now I have over 350. There's also another "me" out there apparently. He's a youth soccer goalie in San Diego.
In Google, just search for your full name with double quotes around it. The double quotes force the search to only include content that has both words together, which is helpful if you have two common names (for example, a search for a name like Bob Smith would return all pages that have Bob or Smith in them).
You should look at the search results and decide whether you want to take anything down, or try to at least.
As an example, here's a search for myself. I used to have only about 20 results total, but now I have over 350. There's also another "me" out there apparently. He's a youth soccer goalie in San Diego.
[PROF] Resumes: Welcome to the "real" world
As part of my job search preparation I have needed to revisit my resume and update it with my latest job's details.
We were given a list of basic items to change on our resume (list the college graduation date instead of period of enrollment, remove your high school, etc.) and some broader concepts to tackle as well (talk about non-technical skills such as leadership and communication).
To keep my resume to one page, I've needed to slash things over the years. One thing that I find especially interesting is how I will actually need to leave off some software or technologies that I have picked up but aren't really relevant anymore. I have a "pack rat" mentality and would like to put everything I've ever learned or used on my resume, despite how cluttered that would look.
Photo taken from the National Park service website.
One example of something I irrationally want to keep is my work with Adobe Photoshop and Illustrator. I took a graphic design class back in high school, about six years ago.
There is no reason to keep that on my resume. I'm not planning on ever looking for a graphic design job, and I sucked at graphic design anyway!
Some actually relevant stuff is also getting removed. For example, the programming languages C and MIPS are being removed. I've spent at most five hours working with either of those languages, and would probably crumple like a wet paper bag if asked questions about them in an interview.
To appease my childish side, I'm keeping a text file with a list of the stuff I'm slashing in case I ever need to browse the list for some improbable situation.
We were given a list of basic items to change on our resume (list the college graduation date instead of period of enrollment, remove your high school, etc.) and some broader concepts to tackle as well (talk about non-technical skills such as leadership and communication).
To keep my resume to one page, I've needed to slash things over the years. One thing that I find especially interesting is how I will actually need to leave off some software or technologies that I have picked up but aren't really relevant anymore. I have a "pack rat" mentality and would like to put everything I've ever learned or used on my resume, despite how cluttered that would look.
One example of something I irrationally want to keep is my work with Adobe Photoshop and Illustrator. I took a graphic design class back in high school, about six years ago.
There is no reason to keep that on my resume. I'm not planning on ever looking for a graphic design job, and I sucked at graphic design anyway!
Some actually relevant stuff is also getting removed. For example, the programming languages C and MIPS are being removed. I've spent at most five hours working with either of those languages, and would probably crumple like a wet paper bag if asked questions about them in an interview.
To appease my childish side, I'm keeping a text file with a list of the stuff I'm slashing in case I ever need to browse the list for some improbable situation.
Thursday, January 14, 2010
[TECHNICAL] Weblogic multicasting breaking your network
To all offices out there that have clustered weblogic servers and are experienced network problems: they're related.
My office has been experiencing serious network issues for a few months now. Problems like network connections resetting or extended outages were happening with increasing frequency, eventually reaching the point where there were practically hourly outages. This is especially bad since we use VoIP phones, so our client services people could be on a critical call and suddenly get dropped. We got to the point where we tore out all of our network infrastructure and replaced it with new hardware, but with no results.
After a ton of work by the CTO, our head of IT, the phone company's consultants and a Weblogic representative, we believe we have found the problem: clustered Weblogic servers using multicast. Basically, they constantly broadcast themselves over the network and clutter the system. The reason why it was getting worse over time was because the development teams all have been building their own clustered environments recently to act as production replicas.
A link to the problem described is here. FYI, we were using Weblogic 8 as well.
My office has been experiencing serious network issues for a few months now. Problems like network connections resetting or extended outages were happening with increasing frequency, eventually reaching the point where there were practically hourly outages. This is especially bad since we use VoIP phones, so our client services people could be on a critical call and suddenly get dropped. We got to the point where we tore out all of our network infrastructure and replaced it with new hardware, but with no results.
After a ton of work by the CTO, our head of IT, the phone company's consultants and a Weblogic representative, we believe we have found the problem: clustered Weblogic servers using multicast. Basically, they constantly broadcast themselves over the network and clutter the system. The reason why it was getting worse over time was because the development teams all have been building their own clustered environments recently to act as production replicas.
A link to the problem described is here. FYI, we were using Weblogic 8 as well.
Subscribe to:
Posts (Atom)