In addition to being a nuisance, spam (junk) emails waste user time, disk space and network bandwidth. On my way back to KFUPM after the summer vacation, a simple idea regarding spam filtering hit me.
It all began with a simple question: “Why don’t you want to see spam emails?“. The answer was straightforward: “Because I’m not interested in whatever subjects the email is talking about“. Then, I started thinking:
We can’t use the subject header of the email because it can be totally unrelated to the body. So, we have to look at the content itself. How about if we extracted keywords that represent the main subject(s) of the email, and then compared them with keywords that represent the subjects that the user is interested in? After that, we should come up with a predicted “level of interest“. If it is too low, then the user will (most probably) not be interested in seeing this email (i.e. it’s spam).
This idea is now the core of my senior project. It will be a research-oriented, AI-related project. Regarding the first phase (keyword extraction), my teammate and I will most probably use some of the available services. We will focus our efforts on the second phase (keyword comparison). We have to figure out exactly how to do it and how to incorporate machine learning in it. We also might improve it by using Bayesian Belief Networks and/or Functional Network classifiers.
Spam filtering is one of the hot topics in the application of data mining and AI techniques. By working in this project, we hope that we can contribute to the ongoing research and develop an approach that will hopefully be taken as a basis for a new filtering technique or as an addition to existing ones.
Firefox is my default web browser and I use it a lot. One thing that I don’t like about it though is its memory usage. It is true that I’m using around 20 extensions (some of them can cause memory leaks and crashes), but consuming about 100 MB of memory while only 8 tabs are open is quite irritating.
By default, Firefox doesn’t reduce its memory usage when it is minimized (unlike Internet Explorer). Nevertheless, there is a trick to make it do so. Just do the following:
- In the Firefox address bar, type “about:config” and then press Enter.
- Right click anywhere in the page and select New -> Boolean.
- Type “config.trim_on_minimize” in the box that pops up and then press Enter.
- Select True and then press Enter.
- Restart Firefox.
Now when you minimize Firefox, its memory usage should drop to about 10 MB.
Although the memory usage will gradually increase even when Firefox is kept minimized, this is a good way to “manually” free some memory out of Firefox’s grip. Hopefully, this issue will be resolved in Firefox 3.
Note: For some reason, this didn’t work under Windows Vista! (Currently, I don’t have other operating systems installed to test this trick under them)
Phew!! I was so close to forget that I have a blog that needed to be maintained regularly! I didn’t intend to leave my blog for more than two weeks without updating it, but things got out of my hands… sort of!
I had two weeks to spend relaxing in Syria before coming back for my last semester as an undergraduate. For my surprise, my PC there (an old one) wasn’t working properly. I tried to fix it myself but I didn’t have the necessary equipment. I didn’t take to be repaired because I was… too relaxed! I said to myself: “I can survive two weeks without a PC, I only need to go to an Internet café from time to time“.
My first (and only) visit to the café was terrible! The DSL connection was literally slower than a dial-up! I started to panic: “I HAVE TO check my e-mail, publish a post on my blog and update my status on Facebook. I just HAVE TO!“. Then, it hit me: “What if I left everything and tried to enjoy my vacation without worrying about anything related to technology for once?“.
And that was exactly what I did. To tell you the truth, I can’t remember the last time I felt this relaxed before. I admit that catching up will be hard (1000+ unread items in my Google Reader!!), but it was worth it.
Now that I’m back online, I’ll continue blogging regularly. I won’t be publishing posts at the same rate as I did in the summer though, because I have a lot to deal with right now 😦
I spent the last week finalizing the list of features for the auditing component. Fortunately, the Team Leader didn’t ask me to go to Aramco. I think he figured out that I will only slow them down. Lucky me! I also wrote the second and third progress reports. Unlike the first one, my posts about summer training were really helpful. Lastly, I submitted all what I have worked on to the company.
I really enjoyed working at Futureware. I know it wasn’t perfect, but compared with what I have heard from other students about their summer training experience, mine was really good. I’ll defiantly miss it.
Now, it’s time for me to go to Syria and enjoy my two-week vacation. See ya! 🙂
Getting bored of the walls around you? Put HypoSurface on them and enjoy the show!
HypoSurface is the World’s
first (see the note at the end) display system where the screen surface physically moves. It uses an “interlocking flexible panels activated by compressed air from behind the wall to create three dimensional waves, patterns, images, and even words by moving the flexible panels in sync“. Using software, the wall can react to sound and movement. Add to that some light effects, and the result is quite amazing:
Here is another video showing HypoSurface in action at the Bio 2007 International Convention:
You can find more videos at the company’s website.
Note: I don’t think it is the first display system with a moving surface. Daniel Rozin built the Wooden Mirror in 1999 and the Shiny Balls Mirror in 2003. There is another thing: why did the company register their commercial website as a dot-org?
At last! I got the chance to work on something as interesting as the OLAP Cube.
On Saturday, I started searching for audit trail components based on the new info. One of the employees told me that I should take a look at the Enterprise Library (a library of application blocks designed to assist developers with common enterprise development tasks). I found that it contains the Logging Application Block which can be used to simplify the implementation of common logging functions.
On Sunday, I started reading a blog about how to use the Logging Application Block. I tried to follow the steps of building a simple application with logging capabilities, but there was something wrong with the database connectivity. I changed so many settings to the extent that I couldn’t trace back the changes, but it refused to work. The Team Leader sent me an e-mail containing more details and asked me to study this tool more. This was good news for me, because I figured out that I won’t be going to Aramco soon!
On Monday, I continued my struggle with the library and the DB. After one last reboot, the whole thing worked! What made it work? I have no idea! (Déjà vu: I faced a similar situation with the OLAP cube before). I developed and tested another application with more logging capabilities. I sent an e-mail to the Team Leader to inform him of my progress.
What’s next? I don’t know! I have managed to dodge going to Aramco for the time being, but I don’t know if I can keep doing it till the end of my summer training.
It seems that I’ll spend the last two weeks of my summer training in the place I hate most!
On Monday, I formatted the proposal according to the company’s official format and sent it to the Team Leader. He responded by giving me a “real” new task: they wanted to know if there are any audit trail system components that can be used within the system. I never heard of “audit trail” before and I wasn’t given many details about it. So, I was on my own.
On Tuesday, I reached a dead end in my search. I was hoping to see the Team Leader on that day but his meeting with the Big Boss (the founder of the company, that is) took too long and didn’t end till after 5:30 PM.
On Wednesday, I sent an email to the Team Leader requesting more details about this new task. He replied back giving me the details I asked for, and there was something else: “Even if you can’t find anything relevant let me know. I might ask you to do some development with us here in Aramco“. NO! THIS CAN’T BE HAPPENING!
I have to find a way to get out of this! Wish me luck 🙂