Picture Organizing

When I finally have a need and I am looking for a tool/system to accomplish that task, I tend to be extremely picky and very demanding of certain features. This happened when I finally made up my mind to consolidate all my photo’s in to one central system and organize them. Pictures started coming out the woodwork, now I have a jumble of hundreds of folders with thousands of pictures.

On the bright side, they are all on a single partition now. This is compared to before where they were spread across many machines, hard drive, backups and whole bunch of flash memory cards laying around.

Now on the hunt for a good program to organize them. So far I have tried F-Spot, Picasa, DigiKam. They were alright, but didn’t fit my needs, and I doubt there is anything out there that would. So the features I need are

  • In Place file access - should not require the program to import the pictures to it’s own backwards folder structure
  • Restructure folder tree - For example all your pictures are a mess, but with this you can tell it to put all the files in folders according to date or category name
  • Categories, Keywords - All the programs I tested did this pretty quick
  • Automatic Categorization according to date and other information

So the automatic categorization is the most important feature I want. Picasa does a good job at this.. but it simply clumps pictures that were taken in the same day together. What I want is for this to happen in a more elegant algorithm that uses the timestamps to figure out and distinguish between different events.. but allow the user to easily merge or split categories.

I think I will put to my work stack to develop such an algorithm, does not seem to hard. I am thinking it would make sense if you graph the amount of pictures taken per day, any grouping of pictures can be thought of as a single event or category. Lets see where it goes…

But for now considering I haven’t had any rest at all for the past few days, I think I will let all my photo’s chill for a while.

The Work Stack

Ok I need a break from my finals studying. Just 5 minutes. Here is my to do list of things.

  • Study for Finals - Just two more days
  • Cisco Systems Internship - Again this summer, need to pack up and go
  • Canon SD1000 - Play with the chdk firmware.
  • WRT350N Bricked - Poor 802.11n router, need to bring it back to life
  • Organize local files - Several TB over about 20 hard drives makes me a sad panda
  • Organize online files - Makes me sick looking at my web hosts root directory
  • VoIP - Put my SPA3102 with my Asterisk box to good use
  • Box of Networking stuff - Need to bring them back to life
  • Bye WordPress - Needs replacement or upgrade
  • Web Photo Album - Any ideas on Flickr, Picasa Web, maybe I will just host my own
  • The list just doesn’t end…

Back to cramming… wish me luck.

Port Multiplexer

The other day I was trying to figure out how much I can do with accessing only one port without tripping IDS before that machine. Hiding a service or two services in one port. Lets take an example, it would make more sense.

You have a server with only port 80 open. How can I rig the server so it would continue to serve web data as normal on port 80 to regular clients, but at the same time allow special access or services through the same port

A way this can be accomplished is by using a port multiplexer. I searched around for this idea and the only thing I can ran across was a 1988 RFC 1078, that kind of does what I want, but not really. My thought on designing a port multiplexer is have it work like a NAT, except instead of IP address translation, it would do service translation.

This would work like this. First need to have the webserver process (apache/IIS) listen on some other port (lets say 81). Now have the Port Mux program listen on port 80. Now how it works from the time a user tries to connect to the server. The second service would be listening on port 10000 for this example.

Client requests connection to port 80
Port MUX creates connection with client
Client sends packet
PortMUX inspects packet
_ if packet has specialheader
_ _ _ router all traffic to port 10000
_ else
_ _ _ route all traffic to port 81

So when a connection comes in, PortMUX will make the connection and accept the first packet and if it has a special string, it not it will forward the traffic from that connection to the web server. If it is a special character, the connection would be to port 10000. Its easy to detect if it’s a HTTP request by looking at the first string in the packet and find “GET” or “POST”. As for the special string, you could put something like “SPAMSPAMSPAM” which is definitely not a HTTP request… and would allow access to the second service.

I will make an implementation of this sometime later and post it, if you have some free time now feel free to make one and test it out.

Standup/Lock

As a habit now, every time I stand up from the computer, I press the hotkey to lock the computer (yes, even when I am the only one around at home). It hit me, why not automate this. A sensor you can have on the chair that would lock the machine when it detects you stand up.

Concept seems simple enough, all I need now is some free time to implement this.

Cleanup Time

Looks like it’s time for me do a total cleanup of my things, both virtual and in the physical world.

  • Room Cleanup (load of empty boxes, anyone want any?)
  • Door-Desk, two of them for the room
  • New Book shelves, having a space issue now
  • 3TB worth of data to be organized, and the countless number of cd and dvd spindles
  • Old cloths, old electronics, old everthing…

Wow.. thats a lot of random stuff. Maybe I should get started as soon as possible when I find some time.

Weakness in Captcha

Captcha is a system widely used in web forms to differentiate between humans and bots. I won’t go into detail how it works but you can read it on Wikipedia. Many people try to defeat this system by writing very advanced character recognition software but there seems to be a very large hole in this system at the moment.

This vulnerability isn’t on all of them, but about half the systems I tried, it works (Yahoo and Google to give two examples). It seems internally, when a new captcha image is generated, the corresponding plaintext is stored in a database. The problem is that this database just stores the plaintext without any connection to the client’s identity (For example IP). So how can this bad?

Well you can refresh the captcha images in this system repeatedly and write down the plaintext values from the image. Now you can store those value’s in a bot and have the bot enter those plaintext value’s in.

Here are the steps for a proof-of-concept.

Go to Computer A, get a captcha image. Write down plaintext
Go to Computer B, go to same page, enter previous plaintext from different session

WRT350N External Serial

I got my hands on a bricked WRT350N router was trying different magic trying to flash a new firmware and get it working. I was trying to connect it to a serial console when I realized that on the WAN port in the back, on the opposite side of the RJ-45 jack there were 4 pins… named UR1 UR2 UR3 UR3… that got me thinking, could those be for a serial connection Linksys started including in their new routers??

Opening the case up and tracing the 4 pins to the internal serial connection terminals proved that they were indeed for a serial connection. Some pictures for your viewing pleasure.


Now I just have to figure out where to get a RJ-45 jack that has the pins on the opposite side so I can hook it up without soldering my own ghetto RJ-45/Serial jack. Let me know if anyone know where to find such a RJ-45 Jack.

Calendar Syncronization Winner

I did not put the effort before to keep a calendar of any sort on the computer before since it was a pain to get it to synchronize between the desktop computer, laptop, and if I am not near those two the calendar is unavailable… until I found a killer combination.

Thunderbird + Lightning + Provider for Google Calendar

This was so good it was enough reason for me to switch from Evolution to Thunderbird… the interface for Lightning seems a little out of place compared to thunderbird and gnome’s default theme… but I can live with that. Now adding a event in my laptop, desktop or google calendar online is all I need to do and the other places are automatically kept up to date. Fabulous!

I had used other calendar synchronization application combinations before, but this is by far the best one I have come across and highly recommend you to take a look. Enjoy!

UPS Social Engineering

I recently ordered something and had it ship through UPS. Once it had already shipped, I decided I want it shipped directly to my College Station address instead of my Houston address. I was not sure if this was possible, oo I was getting ready to go to the UPS store, show some ID and verify that it’s me who is changing the destination address…

But I decide to call them beforehand. A minute later, my local UPS location gives me 1800 number, and two minutes into that call, the customer rep asks me for my tracking number and the new destination address. Thats it… Wait, they didn’t even verify who I was.

Is it me who sees a huge security hole here. It seems anyone with a tracking number can re-route a order to any place they wish.

So that means one should not go through the trash at the UPS store and should not find receipts of recently shipped items, and should not follow their tracking to see if it’s still being shipped, and should not call them and reroute them to your neighbors house. It’s illegal and unethical to tamper with someone else’s shipment so you should never even think about this.

Multi-Factor Authentication on the Cheap

Large enterprises, banks and other places requiring very high security log on systems use multi-factor authentication. Multi-factor authentication is using multiple means of verifying if the person trying to log in to the system is the real person and not someone stealing credentials. For example a conventional single-factor authentication is simply entering the user name and password to log in to check your email. A example in multi-factor authentication in a high security area might be entering a pin number and doing a retinal eye scan. Notice that multi-factor means using two different means to gain access, in this case the pin number and the retinal eye scan.

A really easy way to set up multi-factor authentication for one your systems is to use the conventional username/password as one factor, and then using the SMS technology in your phone as the second factor. An example case will better demonstrate this.

User enter username/password and log in to the System
System sends a SMS message to pre-defined phone number with a code
Enter code in next step in the log in process
Log into website

When you set up the account, you need to set up a phone number to pair up with the given username/password pair. To make things a little more secure, you can change things around

User enter username/password and log in to the System
System sends a SMS message to pre-defined phone number with a code
Unscramble the code manually (reverse the code)
Enter unscrambled code in next step in the log in process
Log into website

This might seem nice and all, but as most cool ideas, you might say the implementation is too much trouble to go through. Wrong, this is extremely easy to implement. Most mobile phone carriers now have email to SMS gateways. For a few of the gateways you can visit my previous post or just google. There are a few services popping up online that allow you to send a email to a single phonenumber@domain which will select correct SMS and send it.

For example to send a SMS to a t-mobile phone number with 123456789 you would send a email to 123456789@tmomail.net and thats just a single php function.

Good luck, this is a very easy mechanism to implement to make it harder for someone to gain illegal access to your systems.

D975XBX2 SATA Controller and Linux

After struggling with the Intel Bad Axe 2 (D975XBX2) motherboard to get the secondary Marvell SATA controller to work with Fedore Core 7 Linux, I finally got it working. The motherboard has two on board SATA controllers, each with 4 ports, totalling 8 SATA ports. The parimary SATA controller is from Intel and it was detected flawlessly. The secondary SATA controller is a Marvell 6145 (88SE61xx), and throughout fedora core’s installation as well as boot up, fedora core tries to load the pata_marvell driver and screw everything up.

The solution is easy. Blacklist the pata_marvell. To do this add the line “blacklist pata_marvell” to the /etc/modprobe.d/blacklist and restart the system. This should speed up the boot process if it was hanging before trying to load the pata_marvell driver.

I wrote this so anyone else who might be having the same issue can resolve it quickly. Good luck!

ThinkPad Beep

If you are IBM Thinkpad user (T60, probably other models too) you know all too well how annoying the system beep can be, specially when you are on headphones (the beep always comes at the highest volume totally stealing my concentration). Usually comes when you press multiple keys at time, but once in a while it beeps randomly. Easy fix.

Go to Device Manager, Show hidden devices, Scroll to the Non Plug and Play Devices and disable the Beep device.

This was the only problem I was having with the laptop, and now it’s gone! Best laptop to date I have used.

Know who you are Scamming

Well not really scamming, but if you are trying to sell something and make a quick buck because you got it through a special promotion, make sure the people you advertise it doesn’t know about the promotion.

Hey interns,

I’m selling a brand new iPod nano silver 4gb for $160 and a brand new Macbook Pro 2.2Ghz (Santa Rosa) for $2000 (no tax on either). FYI the retail price on the iPod is 199+tax and the Macbook Pro is 2000+tax. The Macbook Pro is the 2007 version of it. Both are brand new sealed in box. Please give me a call at 408-???-???? or reply (NOT REPLY ALL) me if youre interested.

Thanks!

This was sent to the Cisco Intern mailing list. Almost everyone here knows that you could get the laptop for 1800 + free iPod if you are student. Talk about looking stupid… Moral of the story: Know who your audience is.

Free Premium Channels

Ever thought that it would be great to get some of those premium cable TV channels for free? For example HBO or Starz. You must be thinking this is going to involve using a legal-shady box or some type of hack, but most of the time just asking works. Well asking in a not so straight way.

First, it’s best if you are ordering a new cable connection your place. If not try to find some problem you are having with your cable connection, maybe quality is bad or lot of disconnects or look into your bill and find some type of mistake. If it’s ordering new cable, when you are talking with them on the phone find something that will not make you happy, usually they take forever to send a technician out to activate your service.

Now that you have something to be upset about cable company, call them up and complain. Try saying you are unhappy and ask them what they can do. Usually they will cut a deal. If they say no, just ask for the manager and say you’re unhappy about the service (in which case you should be now). Most of the time the managers will cut a deal with you. Remember to ask for some premium channels for no extra charge. Other things you might be able to ask is to lower your current service cost. Of course this won’t work 100% of the time.

You have nothing to lose doing this other than a few minutes of your time, and if you are reading this page, thats something you definitely have. Enjoy! I am going to go enjoy some free HBO.

Cisco Internship

I am currently interning with Cisco Systems in San Jose. Just the break I had been hoping from academia as I was this close to snapping. Perfect weather and interesting work with awesome benefits, I don’t think I can ask for any more from a internship this perfect.

The specific group I am working in Cisco for is known as the STG, or the Security Technology Group. This is great as my primary focus lately had been network security. Everyone is very friendly and quite passionate about their projects which I thought was only present in small start up companies. Then again Cisco can be thought of as a grown up start up, so it’s still got the soul of one. The main project I will be working with related to Automated Signature Extraction from worm and virus outbreaks. Other than that I will be working on maintaining security related components in the IOS as thats what the STG is responsible for as well.

Cisco really pampers their employees and interns. I was surprised to find that as interns we are equally treated as full time employees regarding to the type of work we are doing and the benefits we are receiving. All receiving nice ThinkPad laptops, unlimited beverages at work (lots of soda and juices, many flavors tea, coffee, water, hot chocolate…), gym and sports facilities, awesome cafeterias on campus and the list goes on and on. Along with a nice compensation, I can’t think what else to wish for. The free drinks has been my favorite so far. There are about 40 huge buildings in the Cisco campus and their all beautifully landscaped with basketball courts and volleyball courts scattered in between. Ping-pong, pool and foosball games within building helps everyone keep their sanity levels normal during high stress work. Tech related stuff can be quite stressfully and I assume all these are to keep everyone sane, which equals to better productivity and happy employees.

My first few days were all about getting used to the Cisco IOS Source building enviornment. Cisco has a array of their own tools and their own version control system to help the thousands of developers work on the same code base seamlessly which is amazing. In the main source tree, doing a “ls” is a bad idea… imagine so many items it takes a while for it to display. The process of getting even a few lines into the IOS is a very systematic and long process involving many checks, automated checking and testing, peer reviews and more testing. I just committed my few lines of code in to the Cisco IOS last week in the form of a bug fix which I think is insanely awesome!

For those who don’t know what Cisco IOS is, it’s the operating system almost all Cisco Routers use, and almost all internet related networking products that backbones and ISP’s use are Cisco. In simple words, the internet you use is driven in majority part by Cisco IOS running products.

Well It’s getting late, I will post some pictures and more info some other time. Enjoy!

Command Line SMS Fun

Almost all cellphones and carriers support SMS’s now, and bundles of hundreds or unlimited plans are really cheap. One spiffy feature that most major carriers provide is email to SMS relaying. Below are some of the major carriers relaying addresses.

Alltel
1234567890@message.alltel.com

AT&T Wireless / Cingular
1234567890@mmode.com

Boost Mobile
1234567890@myboostmobile.com

Cingular
1234567890@mobile.mycingular.com
1234567890@cingularme.com

Nextel
1234567890@messaging.nextel.com

Sprint PCS
1234567890@messaging.sprintpcs.com

T-Mobile
1234567890@tmomail.net

Verizon
1234567890@vtext.com

Virgin
1234567890@vmobl.com

So if you want to send a SMS, send a email to the above email format. The from and the subject fields will be added to the message body. Check with your carrier about how long a message can be, usually it’s 160 characters (including the from, subject and body together). Now let’s make things fun.

Sendmail Mashup

Sendmail is nice. Most *nix installations will have it already configured, if not it’s not that hard to setup anyway. Sendmail allows you to send emails through the command line directly, for example you can pipe the message body into sendmail to be sent as the message body.

echo moo | sendmail email@email.com

Since SMS’s can now be represented by an email address, you can pipe the output of various commands directly into a SMS message. For example, one of the things I use this daily is to be alerted when builds finish that take a long time.

make something && echo "Make Finished" | sendmail 1234567890@tmomail.net

I made it even simpler by writing a bash script named “sms”.

#!/bin/bash
echo "Finished building at `date +%T` -- `pwd`" | sendmail "1234567890@tmomail.net" &

This way I can simply append the “&& sms” after any command and when ever the previous command finishes, it will alert me with a quick SMS. The above script will include the username and host name in the from field by default, the time it finished and what the current directory it was in.

Other uses might be if you are doing any type of simulations, you can append this to the end so you know the simulations are done. Other uses might be alert you when a hard drive fails using smartd or other types of triggered alerts. Hope you found this useful.

Update for Unix Users
Ok, so on the unix machines at work, I realized sendmail is not available. So if you want this in a Sun Unix enviornment, use the following with mailto command.

#!/bin/bash
echo "Finished building at `date +%T` -- `pwd`" | mailto "1234567890@tmomail.net" -s "nix"

Tea Coffee Mix

It was late at night and I was trying to decide if I should make Tea or Coffee as my caffeine fix. It was a long night of coding, and lot of fuzzy logic was involved. The first thing that popped in to my mind was something in between.

Then I wondered why I had never seen Tea and Coffee mixes anywhere. Does it taste bad? Would the two just cancel each other out? To my surprise it actually tastes really good! I would say if tea was given a score of 10, and coffee a score of 10, the the tea-coffee mixed would get a score of 15. To improve upon this mix, the next morning I decided to add a hint of Raspberry syrup, and the score goes up to 20. So give it a try, the tea-coffee mix. Might seem counter intuitive to mix the two, but they taste awesome!

Now on to trying different combinations of other beverage mixes!

Update: I did find a extreme version of the coffee-tea mix, credits to goon “The Codfather”

I call it my ‘double black magic early morning rocket fuel’. 8 cups of water run through a coffee filter packed with coffeee, then I run it through again, then empty two tea bags (rip open the top and dump the tea in) of mint tea into the nalgene, add 10 tbs of sugar, and the coffee. Shake well, let tea settle, and drink. I usually end up eating the tea at the end. Tastes like minty coffee, but with a serious kick for those cold early mornings on the water.

Improve on Microwave Ovens

I wondered a few days ago why I need to press a few buttons to set the time and start the microwave oven every time I put something in it. If I put something in the microwave, majority of the time it’s to either cook it or to defrost it. Instead I would much prefer if the only thing I had to do was to put something in the microwave and press only a single button to start or confirm the microwave’s guess on what I want to do. It’s not black magic, and can be implemented very simply. Below is how my ideal (dream) microwave oven should work.


WAIT until Door Closes

IF there is Mass on the Turntable
No: Go Back to Start

SAMPLE Mass on Turntable
SAMPLE Surface Temperature of object from several sides and take average

IF Temperature close to freezing or below
Yes: Guess food needs defrosting until room temperature or by mass

IF Temperature just cool (midway between freezing and room temp)
Yes: Guess food needs heating until slightly above room temperature

IF Temperature warm or above
Yes: Guess food needs heating until hot

PROMPT user a YES or NO to confirm the Microwaves guess

IF User confirms guess
Yes: Run the microwave according to Guess
No: Wait Until User Manually enters the function they need

This way the microwave guesses what you might be wanting to do, and only ask for a confirmation (only a single button press). If the guess is wrong, you can simply operate the microwave oven conventionally.

To implement this, you simply need to add a mechanism under the turntable to measure the mass and several infrared sensors to measure the food’s temperature. A side benefit of this implementation is that you can use the microwave oven the measure the weight/mass of things.

Hoping they will have a microwave like this out before my college career is over, a lazy students dream microwave oven.

RIP A7M266-D

Rest In Peace A7M266-D (March 2003 - March 2007). No… it’s not a person, but it’s my motherboard that served me well for 4 straight years in my main server along with two Athlon 2000 MPs. When I say straight years, I mean it was chugging numbers, rendering random stuff or juggling files non stop except when I was moving it around or for hardware upgrades. Not to mention how much traveling it had done with me around the country for countless number of competitions and LAN parties.

I guess the reason it fried (smoke + burning smell.. yeah it was bad) it self was moving around that much, the sound ports were fubar, parallel port was coming off, solder points were scratched off the back… now that I think about it, I am surprised it worked at all for this long.

Oh well, time to eBay for replacement mobo.

Pale Blue Dot

Carl Sagan is the man. Below is one of his most popular and insightful quotations I have ever come across and it manages to break my mind everytime I read it. This was a response by Sagan regarding a photograph Voyager 1 sent back which includes our home, Earth.

Pale Blue Dot
We succeeded in taking that picture [from deep space], and if you look at it, you see a dot. That’s here. That’s home. That’s us. On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives. The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, every hunter and forager, every hero and coward, every creator and destroyer of civilization, every king and peasant, every young couple in love, every mother and father, hopeful child, inventor and explorer, every teacher of morals, every corrupt politician, every “superstar,” every “supreme leader,” every saint and sinner in the history of our species lived there — on a mote of dust suspended in a sunbeam.

The Earth is a very small stage in a vast cosmic arena. Think of the rivers of blood spilled by all those generals and emperors, so that, in glory and triumph, they could become the momentary masters of a fraction of a dot. Think of the endless cruelties visited by the inhabitants of one corner of this pixel on the scarcely distinguishable inhabitants of some other corner, how frequent their misunderstandings, how eager they are to kill one another, how fervent their hatreds. Our posturings, our imagined self-importance, the delusion that we have some privileged position in the Universe, are challenged by this point of pale light.

Our planet is a lonely speck in the great enveloping cosmic dark. In our obscurity, in all this vastness, there is no hint that help will come from elsewhere to save us from ourselves. The Earth is the only world known so far to harbor life. There is nowhere else, at least in the near future, to which our species could migrate. Visit, yes. Settle, not yet. Like it or not, for the moment the Earth is where we make our stand. It has been said that astronomy is a humbling and character building experience. There is perhaps no better demonstration of the folly of human conceits than this distant image of our tiny world. To me, it underscores our responsibility to deal more kindly with one another, and to preserve and cherish the pale blue dot, the only home we’ve ever known.

You can find more information about a Pale Blue Dot from Wikipedia.