Tuesday, December 31, 2013

Life: 2013

Another year has come and gone.

Diet

Although this was not a goal at the beginning of the year, I did make it my goal by end of the year some months ago. I did not quite meet my goal to lose 10 pounds by end of the year, but I did lose almost 5 pounds. I did most of my loss in the last quarter.

Keeping track of my weight throughout the year really gave me some motivation. This year, I had attended 7 weddings spread almost evenly apart. With all the travels and celebrations, I had gained quite a few pounds (up 5 pounds by end of Q3). Summer was also very difficult because I took a break from intramural sports which I was playing indoor soccer and volleyball.

Fortunately, I found my exercise ball and started making use of that in September when I started working from home more often. I would do simple crunches during meetings. This did not tire me nor distract me from taking notes. I could probably do about 80-120 light crunches which I would only feel the burn when I stand up. For reference, I can do about 20 sit-ups to feel the same burn in my abs. After doing this for a couple weeks, I noticed a significant increase in running. I do not lose my breath as easily and also increased my speed.

In the last month, I have added other exercised to my workouts by making use of the hotels I stayed at. I learned a few other exercised from my cousins that I can do without weights or machines. In the last week, I've added some weights to my workouts which might have worked against my weight loss. I have noticed that I am a bit more tone so I figure I have gained some muscle mass. Since I am doing this more for health, I don't mind that I have not made significant weight loss during this time period.

I am now able to run 10 minute miles easily on a treadmill. I expect this to be actually a bit slower on the road but I can probably accomplish it by putting in effort since I am not exhausted after 10 minutes on the treadmill.

Project

Although near the end of the year, I finally started on my project. Although spent a lot of time to learn Linux and Python, I have passed a hurdle I've been trying to do for several years. I still need an idea to build on but creating user and security management will keep my busy for some time. I will probably built other smaller apps to get used to Python.

With a mixture of visiting friends, friend's wedding, group trips, traveling with family, and other holiday events, I have not put much time in the last couple weeks but foresee progress after the new year. I have a general idea to build a personal inventory system which will provide notice to personal life events. 


Work

I am working on my second longest tenure at a single company. Although not very challenging, there are still some things that I learn every so often. I experienced a lot of reorganizations and worked under a few bosses now. The latest boss seems much more experienced in release management so there was a lot to learn in the last quarter. The new process is much easier to maintain so I feel a bit overqualified for the work that I do, so I spend some time observing how my current boss gets these changes implemented where the past bosses were not as effective.

With a regular 8-9 hour schedule and working remotely, I have time outside of work to exercise and/or work on my project. This has been good so far.

Although I was not searching for new work, I have a company request an interview in the last couple weeks. It sounds interesting especially with a higher rate. The position is focused more on release management tasks. The cons is that it will not be remote work and will be more work filled. My only concern with it being more busy is if the company dedicates any time to improve processes to simplify certain tasks. I would definitely give it thought if I pass the first interview. As of now, it is not worth thinking too deeply on until I get a more serious consideration.


Social Life

I have made a lot of new efforts to meet new people. I hope to continue to get out more to meet other new people. Also, I hope to spend more quality time with friends and family. Counter-intuitively, I plan to pay more attention to idle chats. I think I sometimes spend too much through processing on more serious topics, so I do not feel as connected to people as they are with other friends. For one, I need to ask more questions about their personal lives and keep track of them. I need to ask things like where they traveled or plan to travel, places they've ate at, etc. In the past, I didn't care much for this before because I haven't cared much about traveling.

I have noticed that this has also helped with my memory. I am not sure if it is because I am just more aware or just that I am exercising my ability to recall information. It may just be a combination of the two. 

Blogging

I have found that blogging takes up quite a bit of time. I think I may cut down on the frequency of blogging. I was also thinking of possibly moving towards a wiki to post on more informative type content like reviews and complaints. The reason is because these types of content provides more value over time as opposed to other content that are more time sensitive so has decreasing value as the post ages.

I think my topics are still bouncing around a lot. I have not determined whether this is a good or bad thing. Although this may not be as reader friendly, there is no particular audience that I am writing towards except for my future self. The topic choices will likely to stay erratic and let search engines lead readers to whichever posts is relevant to them.

I have added webmaster, analytics, and ad-sense to the blog. This has not provided much assistance in what I want to write about. Although it tells me which posts are more popular, most of those posts are not of real importance to me although I'm glad that there are people who make use of it.

2014

Happy new year! I wish you all a good, prosperous, and healthy 2014.

Review: Curry King (Union City)


  • Curry chicken lunch special
  • Lamb Tikka Masala
  • Chai Tea (free)
  • Wheat based dessert
Curry chicken was good which also comes with rice and curry mixed vegetables. Great price for $6 with naan. The naan was excellent. They had very nice crisp on the outside yet chewy in the inside that goes very well with the curry sauce.

My friend had the lamb tikka masala which I really liked the sauce more than the lamb. The lamb was good, but I think I still preferred the chicken.

Chai tea is unsweetend which was nice since I do not particularly enjoy over-sweetened tea. You can add sugar to your taste.

There was also dessert made of wheat. Unfortunately, I did not catch what it was called. It was a nice sweet treat for the end of the meal.

We were the only ones there at an odd hour. People were nice, service was good. Portions and price are reasonable. I would definitely like to go back just for the naan (there were also other naans with garlic, onion, etc.) and try some other dishes (perhaps the chicken tikka masala).


Reference

http://www.yelp.com/biz/curry-king-union-city

Life: Stanford University (tour)

Spent a couple hours walking around Stanford University. The campus is really large. There are definitely a lot of nice areas to just tour around and take pictures even though almost all the buildings were closed for the holidays. The architecture of the buildings were definitely more interesting.

I stopped by the Packard Electrical Engineering building and the Gates Computer Science building. I would have loved to go in to see their labs. Too bad there weren't anyone going in or out of those buildings.

Life: Google Plex (Mountain View) - Drive-by tour

I had a driving tour of the Google campus in Sunnyvale. I always imagined that it was one large complex so I was surprised that it was just a typical commercial area with some Google themes sprinkled around. For a holiday weekend, there were still a few people around. I also got to see the Google bikes. Unfortunately, I do not know any Google employees in the area so I can tour inside.

Spent the afternoon at the Shoreline Lake at Mountain View Park. I saw a lot of people playing golf, kayaking, canoeing, stand boarding, biking, walking, and other park-like activities. The park is right next to the campus area.

Monday, December 30, 2013

Review: Casa La Dona (Downtown LA)

I had the tacos baja as a "snack" before dinner. This was my first time having fish tacos and it was great. The salsa bar was nice. The diablo sauce was very spicy. The mango flavored (I think it was mango cilantro) was very refreshing. The service was also great. I would definitely like to come back here again especially for Taco Tuesdays.

Address

800 S Main St
Los Angeles, CA 90014

Reference

http://www.yelp.com/biz/casa-la-do%C3%B1a-los-angeles-2#query:tacos

Sunday, December 29, 2013

Review: Fish (Sausalito, CA)

Crab Roll 

Excellent. I would order this again. Although, I'm not sure how this would taste if it was not crab season. Nothing special with the steak fries except it was a bit salty.

True Cod (Special) 

I heard this was pretty good from a couple of friends that do not generally rave about food, so I assume that it is decent.

BBQ Oyster on the Half Shell

I liked the oyster. I am not a huge fan of oysters but these are definitely at the top. My friend who is not a fan of raw oysters prefers these over the oysters at Scoma's. I think these are different than the ones from Scoma. 

I am not sure if it is worth $3 per oyster though, but worth a try if you like oysters because you won't find it cheaper in the area.

Red Chowder

This was good but nothing particularly special.

Life: Still frustrated with Google Hangout

Over four months, Hangout (in gmail) still unable to see if a user is online although I can now through the Hangout application (desktop and mobile). Unfortunately, I use the service in gmail more often because I use it for Google Voice. Also, the apps do not provide the status so I cannot tell if they are available or not.

I primarily use IM to send actual "instant" messaging. I do not care for the idea that it is more conversation related. My typical situation is that I have an urgent personal matter where I need to find someone at that moment. I used to just scan through my list and see who are most available and best at answering my questions.

With the new hangout, I am forced to message a group of people that may or may not be online (or available) then wait for a response. Depending on the group because some are not always online, I may not get a response which then I have just wasted 5-10 minutes that I could have used searching for other resources.

I have recently been quite disappointed in Google's rollout of new features where I am forced to use certain solutions that overrides other features that I used to be able to use (i.e. Hangout replacing Chat, Google Maps) when it does not have the same features. At least allow me to use both Hangout and Chat. Or perhaps this is just a sign of my age.

Reference

I did come across the blog below which has some interesting info and updates quite frequently for the last few years.
http://googlesystem.blogspot.com

Review: Muir Woods - First visit


  • 3 Short paths for casual tourists (30 - 90 minutes)
    • Kids friendly
    • Descriptions provided along the paths
  • Extended paths (unpaved)
  • $7 / person, free after 5pm
    • Free for under 17

Path

We went in thinking the park closed at 5pm. We also did not have a plan on which paths to take.

We ended up taking the bridge 4 path which is approximately 2 miles. We finished this within 45 minutes. We didn't stop much to look at the scenery. I am more of a hiker than an nature observer, so I didn't mind this much. Although most of the path is either paved or boarded on flat ground, there is a short path after bridge 4 that is more natural ground and slightly inclined. I would imagine that this would take about 1.5 hours if we spent more time on the trail.

Hiking

The look trails were not much of a path for hiking. There are a lot of other tourists taking many pictures. Few people were on the bridge 4 path. We did stumble across a couple of the other paths (one was closed) which appeared more hiking like material.

The main loops are basically level ground so was very simple to walk through. The other trails appeared more interesting but we did not take those paths due to time. Looking on the map, there did not seem like there was a nice loop for the other paths. They appeared that you would eventually have to backtrack or be hiking for a rather long distance.

Scenery

The scenery was filled with a lot of redwood trees. There were a lot of information provided along the main loop paths for any casual tourists. On a few of the stops that we had, I thought the experience was unique to be surrounded by so many very tall trees. A few of the fallen trees were also interesting to look at. Some of the trees were amazingly huge. I really wanted to climb a couple of them but you are not allowed to step off the paved paths in the main loops.

Cost

The entrance is $7 per person, free after 5pm. We arrived shortly before 5 pm and thought that the park closed at 5pm but on our way out, there was a sign that entrance was free.


Reference

http://www.nps.gov/muwo/index.htm

Saturday, December 28, 2013

Review: Shao Mountain

Fish Fillet with Dual Flavour

This dish is rather large with two fillets. One covered with red chili peppers but was surprisingly milder than the other half which was topped with a green chili peppers. Both were really good. This dish does take a while for the restaurant to prepare. We basically finished the other two dishes before this came out.

Braised Pork Slices with Bean Sprouts

This was ok but a little disappointing. This was about 10 slices of thick bacon. After a couple slices this tasted rather heavy. I wish they could have made the skin more crispy. The bean sprouts were more enjoyable. Tastes better with rice and with another dish that is lighter like Melon with Garlic.

Squash / Melon with Garlic

This is basically squash with a lot of diced garlic on top. This dish nicely balances with the Braised Pork that we ordered (even though I would have liked to have ordered another braised pork dish). Beware for anyone that is not particularly fond of garlic or people on dates, there is a lot of garlic in this dish.

Overall

The spiciness is a nice change. I have not eaten at other places with a high degree of spiciness as this place especially for chinese restaurants. There are quite a few interesting dishes that I would like to return to try. As usual, I also find this place a bit salty for my palate.


Review: Cosmopolitan @ Las Vegas

I stayed with some great friends at the Cosmopolitan on the Las Vegas strip.

Location / View

The location was great being in the middle of the strip. Walgreens is right across the street to pick up any supplies like bottled water. There are plenty of things within walking distance.

The gyms are nice with your typical workout equipment. I prefer the east wing gym because it has a great view of the fountain in front of the Bellagio. It is slightly smaller than the west wing gym. There was also a great view of the ice skating rink.

Look

The building looks really nice from the outside. A modern looking building with blue highlights. It is easy to pick out from the surrounding hotels.

Parking

Parking was easy to find and park. We didn't have much trouble with this. It was interesting that they had signs on number of spaces are available in each section. It would have been neat if the signs also provided information on number of open spots there are.

Food

Wicked Spoon was great. The freshly squeezed passion fruit was the best. Other items that I enjoyed: smoked salmon, handmade sausage, horse-radish, fried chicken, angry mac-n-cheese, the sauce to the meatballs, and yogurt parfait. My friends really loved the Chai Tea gelato. 

Non-Cosmo Foods


Noodles at the Bellagio was ok. We had XO string beans, Chinese eggplant with fried tofu, and a couple other dishes.

Harbor Palace had slow service. We were there for about 15 minutes with no carts come by our table, so we ended up leaving.

Mr Sandwich (at least I think that was the name of the restaurant) was a nice Taiwanese place. Unfortunately, I am not able to translate a bunch of the dishes ordered. The beef sandwich (ge bao) is good. The "meat ball" (ma wan / ba wan / rou yuan) was ok. I've had better. Rice noodles were good. I heard the bubble tea (not on menu) is good.



References:

Wednesday, December 25, 2013

Life: My First XP Celebrating Christmas in the Warmer Climate

Celebrating Christmas in warmer weather is quite interesting to me. I have always celebrated in cold, frigid-like weather although very limited snowing Christmas's.

To walk around in shorts, not shivering to the core of your bones, we traveled around town to view Christmas decorations. There are some neighborhoods that really put a lot of effort into their displays. I liked the one where they used decorations that made the house look like the head of Santa Claus. Another interesting one is the house that had a lights show in sync with music. Although I've seen this on YouTube, what I found interested (or at least new) was that they broadcasted the music over FM (most likely a short distance transmitter). I would have liked to be able to see how they wired some of the lights. To be able to do some of the patterns, most of the lights must have been connected separately but then that would be a lot of extra cables. I wonder if there are new lights that the circuits already embedded into the wiring because I would think that there would be a lot of extra extension cords just to switch them on and off.

This was also the first time that I traveled to three different locations with different groups of friends and/or family within the holiday break. Although I try to hang out with different groups of friends, I always seem to end up with the same primary group. This time, I was able to split from them and hang out with another group. It was much refreshing to hang out with them in a different sort of environment. Previously, we've always just met for a meal to catch-up. Now because we are spending a couple days together and planning additional activities, there are other down-times where you go beyond just idle chatter.

The most difficult part is handling the mortgage papers while being away. I just do not understand why they are so dependent on faxing forms. Somehow, I have been able to find ways to print and/or fax.

Merry Christmas, Happy Holidays! And Happy New Year if I do not have a chance to post something before then.

Tuesday, December 24, 2013

Life: Learning How to Tie a Bow Tie

This was quite an experience. I'm not sure how many videos I have watched to understand this. I spent a good amount of the day to figure this out without any success. I can get all the way to the point of making the second bow to tie it all together. You will understand which step that is when you try.

I have to admit, this was much easier to have someone else actually show you how it should be done at least once. Locating exactly where the hole is and how to push the bow tie through it saves a lot of guesswork.

Fortunately, I was able to get mine tied the day of the wedding with my cousins. It was slightly loose around the neck because I made it too long with intentions that it would be easier to see how to tie. But because I already invested so much energy into it, I left it as is.

There is one hint in the case the bow tie is too loose around the neck without redoing the bow tie is to have someone detach and reattach at the proper position. This can be slightly tricky but still much easier (in my opinion). Also, it is much easier for someone else to adjust the bow tie.

In conclusion, I think the bow tie was invented by women to keep men busy while they prepare for events. It probably took us about the same amount of time. And with the frequency of these events, we are likely to forget again by the time the next one comes around. :D

Reference

http://www.youtube.com/watch?v=afx1l0MITO4 - On-screen step-by-step instructions

Review: Buying Cheap Spiral Notebooks

When buying very cheap spiral notebooks, 3 things to check that I should be checking for from experience:
  1. If the notebook has perforation, make sure that it is not too close to the spiral and not too close to the holes for binders.
  2. Make sure there is a margin line if you need it and that it is in the correction location on BOTH sides of the page.
  3. Pages can turned all the way around

#1 is not much of a problem if you do not plan on taking out any pages. But if you do, it can be a problem especially when the perforation is near the holes for binders. It makes it easier to fall out or in my case, the hole runs off the edge so cannot even be put in a binder. Some pages are have a sliver which makes it more difficult to tear off.

#2 makes it kind of difficult to keep a consistent margin especially when you need to tear out the page. When you right, you will either not have a margin to reference from or the holes for binders are on the other side.

#3 makes it less portable without "closing" the notebook. It can also be annoying if you have little desk space because you can only keep the notebook open like a book thus making it take twice as much space.

Saturday, December 21, 2013

Review: LAX traffic, downtown LA traffic, and SF driving... In-N-Out

It is evening 8:30pm and there is still a lot of traffic. Sepulveda Blvd was jammed, even when we circled around again around 10:00pm. It is not as bad as the NYC metro traffic during a work rush hour. Possibly comparable to a busy weekend traffic through the Holland Tunnel. There were so many cars on 110 and 105. It was still flowing around speed limit but it still rather packed. I cannot imagine what traffic is like during actual rush hour.

Typical drivers in SF and LA seem very different from the midwest or east coast. Many drives merge, turn, or change lanes first then turn on their blinkers. Most drivers I see on the street typically either use their blinkers before they turn or they do not use them at all.

There was one instant where there were just our car on a two lane street. It was late evening and there were no other cars. Eventually, there was a car they came up from behind, changed lanes, and passed us on the second lane but not completely. We drove side-by-side for a couple minutes, then suddenly the car wanted to merge back to the right lane with us still next to them. They were also slowing down so was practically side-by-side with us. It was like the other driver completely forgot that they were attempting to pass us.There were also several instances of drivers taking wrong exists and still attempt to return back to the highway.

To make it all worth it, we did get some In-N-Out before returning. I do not know if it was because we were extra hungry, but I thought In-N-Out was better than 5 Guys.

Thursday, December 19, 2013

Quote: Linux vs Windows

Linux is to chopsticks as Windows is to fork
Linux : chopsticks :: Windows : fork

I came up with this to describe my experience with Linux and Windows. I am primarily a Windows user and only started using Linux about a week ago. I can see where there are some potentials to Linux that I can make use of but the learning curve is just much higher (in my opinion). Sure Windows crashes more often, but a simple reboot fixes most problems. When Linux crashes, I have absolutely no idea what is going on without figuring out all the inter-dependencies of the application, drivers, and OS. Sure you can eventually fix it permanently, but that's somehow more annoying especially when you're new to the application.

My views on Linux will likely change as I use it more often, but I feel this analogy best describes my experience so far. Starve if you cannot figure out how to use chopsticks, perhaps stab the food if possible. While the fork is easy to use, and you can easily scoop up the food if you cannot figure how to stab it.

Ubuntu: Day 7 - Hello World! with Python, Django, and Eclipse Completed

I still do not have a full grasp of Eclipse, but I finally got to start programming in Python and publishing a Python Django site. A very simple "Hello World" page but this should basically be the last major barrier to starting the web application. Although it took me about a week, I probably put in about 16 hours of reading, preparing, installing, and learning some very basic stuff including Linux so I think I did a decent job of getting started.

Ubuntu Eclipse

My experience with the install was a little disappointing. I am still not quite sure what I did wrong the first time through. It may have to do with Django not being compatible with Python 3, but the article I read was rather old. I figured it would be by now. I could probably read up on that, but this just adds more complexity to the users who just wants to get something up and running.

Microsoft Visual Studio builds practically all the starting files so that you could run the application right after creating the project. I thought it was much easier to figure out which files I had to update without watching tutorials.

Keyboard Shortcuts

I am also having issues with the keyboard shortcuts. I dislike that I have to go to the bottom window to end the virtual web server, then go back to the top to restart. I found a keyboard shortcut, CTRL+F2, that should end when debugging. I am not quite sure what it means by debugging but I couldn't find option that says to just stop whenever. I am assuming that setting is what is preventing it to work even when I tried to run in debug mode (at least I think I was from clicking on the bug button). I can change the shortcut key to other key combinations and CTRL+F2, so it is not another application has some sort of higher priority to the key binding.

Intellisense

This feature is always nice. I probably need to spend some more time familiarizing myself with libraries but there are a lot of functions that I do not think I always need to see. There's a lot of properties or functions that are surrounded by sub-scores like '__someName__' which from what I understand so far are more internal use (but technically available). I think this makes it more difficult to learn some of these classes.

There are also some nuisances in getting the intellisense to pop-up. I still need a bit more experience in how the import portion works. I am not quite sure why I have to reference a library then import a "class" or is it a library(?). Anyhow, I figure I will get more exposure to this as I program a bit more.

Conclusion

I am happy that I've gotten to this point. I do not enjoy having to learn all the little nuances just to get this up and running, but then if this was exactly like VS then I suppose there wouldn't be a need to have Eclipse. I wonder at what point when I feel comfortable to put this on my resume.

I also have noticed that for some reason when I want to type python, I sometimes type pythong instead. I am wondering if this is because it is similar to 'anything.' Anyways, I may occasionally misspell this word in my post so just know that I mean python. Hopefully my muscle memory will correct this soon.

There is at least one big obstacle that I still need to work on which is publish the website to Apache. Currently, running out of Eclipse is sufficient for hobby purposes. I definitely will not be looking into the till later in January at the earliest. I need to give my brain some time to connect a bunch of the new dots.

Wednesday, December 18, 2013

Interview: How many cows are in Canada? Alternative solutions

I had posted my answer a while back. Since then, there have been quite a few comments (thanks readers). During that time, I have also been thinking why someone should prefer a certain answer over another. As the comments suggest, there are alternatives that are simpler, wittier, and/or thought provoking. I figured I spend a little time to explain what I would think about certain alternatives.

I answered as an engineer to demonstrate my ability to troubleshoot problems. Problems oftentimes are missing a lot of critical information (typically the reason it is a problem). This is an important skill for most engineering positions because this demonstrates my ability to breakdown a problem and find a place to start. The rest of the answer is just to complete the thought and maybe to show my attention to certain details.

Perhaps for an interview in accounting, finance, or data science, I could use an answer that was based on probability and statistics. Or an interview in waste management, I could base my answer on number of garbage. Or for an acting role, I could use the number of actual windows in a set then the special effects would replicate

In conclusion, I would think about what kind of person you want to present. This could be very dependent on what you have already demonstrated so far. For example, I could have answered a bunch of questions showing my troubleshooting abilities prior to this question. I could use this opportunity to change the flow of the interview like a witty response to lighten the mood or use probability to demonstrate my math abilities or quantum physics to show some math and humor (because I am not actually good with quantum physics). Or perhaps pull out some program to have a car drive around the city and count the number of windows, describe an algorithm to recognize a window, etc.

Reference

http://douglastclee.blogspot.com/2013/01/interview-how-many-cows-are-in-canada.html?showComment=1387158073286#c1041510031441338241

Tuesday, December 17, 2013

Ubuntu: Day 6 - Reinstalling Ubuntu, Python, Eclipse, Django, MySql

Spent most of day 6 reinstalling Ubuntu 13.10, then Python 3.2.3, Eclipse 4.3, and Django. I was finally was able to create a project with Django within Eclipse with Python 2.7 but not Python 3.2. I spent some time trying to get that to work but to no avail.

I've been tired the last couple days and have not progressed further in my Linux project yet. I am currently in the process of install MySql which seems to take quite some time to install. (Edited 12/19 - In the middle of the install, it requests for a password for root. For some reason this dialog box does not appear on top of the software center window. Look for the extra icon in the left tray.)

I'm not sure I'll have time tomorrow either to do some shopping and other chores before the holidays. I may have one last evening to work on something before year end. Otherwise, I'll pick this back up in January. I did start reading a book on graph databases in hopes of perhaps looking into MongoDb.



http://community.linuxmint.com/tutorial/view/864

Monday, December 16, 2013

Life: How much of what we do just to be accepted?

I just read the article, "It's easier than you think to get people to commit bad deeds." This got me thinking on how many little things that I've accepted to do just to appease someone, get them out of my hair, or wanting to belong.

I think it is interesting how easily we can be swayed in one aspect in life while trying to maintain another aspect in life. Even in work where I did a task something someone was supposed to do. I only did it because it was faster for me to do the work than to explain who should do it, why they should do it, and still risk that person will come to me anyways. Or in general life where I follow other jay-walkers but wouldn't jay-walk if I was the only one at the intersection. Or watching others speed because "everyone else is doing it."

Another interesting facet is how there are some people who take advantage of this social behavior. I think this should be an important lesson to learn in school because this would bring awareness how we can be easily swayed to do things we would normally not do or morally/ethically wrong to do. I think awareness will help me rethink the situation or even help someone else rethink their decisions.

Reference:
http://bps-research-digest.blogspot.com/2013/12/its-easier-than-you-think-to-get-other.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+BpsResearchDigest+%28BPS+Research+Digest%29

Review: TD Bank - Remote Deposit

Error Message: "Exceeded Deposit Limit - You have exceeded the mobile deposit limit."
Options

  • Deposit a Smaller Check
  • Find a TD Bank or ATM
  • Contact Us
  • Main Menu

The cheapest option is to mail to the following address (check the link below for current address):
TD Bank, N.A.
ME2-001-033
P.O. Box Number 1190
Lewiston, Maine 04243

Another option suggested was to wire the check from another bank. I am not familiar with this process. I would imagine you would need an account with that bank.

Experience

I received a check while being out of town for a while. I figured I could deposit check from my phone not realizing there was a limit to the amount I can deposit through the mobile app. Then I realized that there are no branches in my area.

So I used the Contact Us option which dialed the number 888-751-9000. I waited about 6-8 minutes (the machine said it was around 4-6 minutes) on hold. Soon I was speaking with Roberta who was able to assist me immediately and provide the address quickly. I have a lot of experience waiting on call a long period of time and working with people who has too look up information for everything, but not with Roberta. She enunciated very well; I had no trouble understanding her. I did not chat at all but she seemed pleasant. The overall experience was very good.

The only unfortunate thing was having to mail the check which is not a problem as time is not a huge factor, but that I am always wary about mailing anything. Although greatly exaggerated, I feel like half the snail mail seem to get lost (except for spam mail). It is kind of a hassle to get 1 envelope and 1 stamp when out-of-town.

Although I had no problem with TD Bank service, I think this could have easily be resolved if they just had an option that gives me the address to mail the check to when the app realizes that I am depositing more than the daily limit. 

1/8/2014 - They deposited the check after the end of the year. I am little upset about that but not a huge deal... at least it worked. 17 total days, 12 business days, cross country mail.

Locations

Error Message: "There doesn't seem to be a TD Bank near where you are looking. Please try entering the info again."

One last thing was finding a branch very far from their region. I think it would still have been nice to return the closest branch even though it would have been several states away. The reason is I thought maybe I entered in the location incorrectly or maybe I had to look farther.

Reference

Review: Oasis Grill, CA

This was a nice hole-in-the-wall-like place. There isn't any place to sit but who needs to sit inside while in SF? Although, it is a little cold for local residents.

I enjoyed the beef shawarma (spicy) for the first time. I did not find it spicy. It was a nice refreshing burrito-like meal. It is a bit pricey in my opinion, around $11. Definitely more preferable than Chipotle (which I also enjoy) even though a couple dollars more.

I think I may have preferred the chicken. Also, I opened the wrap from the wrong side. So, look for the side that has a slight opening otherwise it could be quite messy. I opened it on the side where the bag opened, but fortunately, I caught it somewhat early so able to control the leaking.

Saturday, December 14, 2013

Ubuntu: Day 4 & 5 - Broke Ubuntu by Uninstalling Python

Yesterday, I installed Eclipse 3.8 and PyDev.

This morning, I was trying to create a new Django project in Eclipse but kept running into an error, "Django not found." There were several sites that fixed this issue but none fixed mine. I checked that Django was indeed installed and that it was installed in Python 2.7.1. I added the Django folder to Interpreter's PYTHONPATH. None seemed to have fixed the problem.

After a couple hours of resolving the issue, I uninstalled Python and all applications dependent on Python. Of course, I did not realize how many applications were dependent on Python. I reinstalled Python in hopes that it will at least fix the problem with Eclipse (which it did not). I noticed some apps were not working properly like the Software Center, so I rebooted Linux. After I logged in, I just had a blank screen.

I am not exactly sure how to revert back, so I am considering to reinstall Ubuntu. I could use more practice in the installing applications. There were also some questions whether Python was installed in a virtual environment which I was not sure if mine was or not. I do not believe so as I did not install any virtual machines, but perhaps Python has its own method of installing in a contained environment? This is all new so I am only speculating.

Worse comes to worse, I could just start developing a Java application.

Friday, December 13, 2013

Life: Getting a Haircut, Experience with Medium Length Hair

I've let my hair grow out for the last few months. I have about a medium length hair now where the front reaches my eye brows, hair just barely over my ears, and no more prickly feeling in the back. I've always gone to a large chain barber like super cuts, until more recently which I found that China town does a much better, more consistent and faster job at a much cheaper cost. I typically just walk into the barber and let them do whatever which typically is a #2 on the sides and back, tapered/faded, and some random length on top depending on the barber.

Because I have been working remotely more often, I figured I could let my hair grow out a bit longer past the embarrassing transition between short and a longer hairstyle. My hair starts to look a bit like Wolverine or Einstein but an uncooler version.

Now that my hair is longer, there has been some differences that I did not expect. Sitting in high-backed chairs, there used to be some pressure when leaning my head back due to the short cut but now it is flatter and moves around more easily. The hair reaches over ear which took me a while to get used. It was a bit distracting because it felt like something was itching my ear.

With a friend's wedding coming up soon, I have to get at least get my hair trimmed. I figured it was worth investigating how to ask a barber to cut my hair. I had once asked the barber that I wanted to keep the current length so that I could grow out the hair. I thought I was asking for a trim by asking them to just evening out my hair but it ended up to be short again. Another time, a barber asked if I wanted to cut the top which I declined. She said she'll just make it even yet somehow I ended up with my normal cut. Fortunately, I found the site below and hopefully to make use of it by going to a more traditional barber.


Reference:
http://www.artofmanliness.com/2010/08/25/get-the-perfect-haircut-how-to-talk-to-your-barber/

Ubuntu: Day 3 - Crashes, Django, Apache

Continuing to watch videos. Ubuntu appears to crash whenever I leave the videos on overnight. This was the second night that this has happened. After the first night, I was able to use the mouse and click on other windows but was unable to type anything in. Also, I could not click anything on the top so I could not shutdown or restart. I was able to close windows and open whatever was in the left panel. After the second night, I had left the youtube video on full screen. I was not able to click on anything at this point although the mouse moved. Clicked on videos, replay button, full screen button, and keyboard shortcuts do not seem to do anything. Both times I had to hard reboot. Everything seems to function after rebooting.

Yesterday, I installed Apache while I was watching videos on Python. I came across Google's Python 2 day class which I thought was very informative while I was cooking. The day 2 part 1 on regular expression was worth skipping. It was more on RE than on python programming. If you are watching for RE, it may be worth it. I did hear much of it as I was washing dishes while that section played. Afterwards, I tried to find some more tutorials and came across Django.

Django seems interesting. It is a web application framework. So far it seems analogous to ASP.NET for C# (and other .NET languages). I am hoping to get some time to install and actually start playing around with all the different apps that I've installed.

Thursday, December 12, 2013

Ubuntu: Day 2 - MySql, Python, Keyboard Only XP

Keyboard Only

Since I am working off a pc mounted to my friend's tv and didn't have access to a mouse, I tried to navigate around with just a keyboard. I was able to get around quite a bit with just the keyboard. Linux has a bunch more keyboard shortcuts which I learned quite easily, although some of them I have to consciously think about because the key patterns are different from windows.

For example, navigating webpages uses the alt plus arrow keys. You'll see me just hacking away at the backspace like your standard ID10T. Also does not help that my friend's keyboard also has foreign keys so the layout is just slightly different enough to mess with my fingers. There is an extra key between alt and space. I learned that I find the alt key by referencing the space key. Also the right shift is much smaller to fit in the up arrow which is probably the most frustrating lesson for my fingers to learn.

What I found most interesting was navigating YouTube. I cannot find a way to get the "cursor" to activate on the video. So, I cannot rewind, fastforward, stop, full-screen, and worst of all skip super long commercials. Fortunately, the video auto-starts because if it didn't I'd be stuck for a while. I was using YouTube to test the video because there is quite a bit of lag with the TV.

Disabling Screen Saver or Monitor Power Off

While watching some of the tutorials, the TV would turn off after 5 minutes of inactivity. So whenever I forgot to press a button or doing some chores while watching, the TV would just turn off. Because I am such a sucker for punishment, I wanted to just figure this out without looking online. The more I couldn't find it, the more I didn't want to look it up. I looked under power, monitor display, and even the TV menu (thinking perhaps there is off-chance that it was the TV... although it was obvious since it would say that it loses data connection). But seriously... who would look under brightness and lock? 

Installing Applications

My Ubuntu life became much easier when I familiarized myself with the Ubuntu Software Center. It works similar to the Google store. And works quite while with just the keyboard.

The first app was Chromium. A nice small lightweight application to test out the install process. I found that this is much easier tool for first-time users. After getting the hang of Linux a bit, I can see how the command prompt could be slightly faster once someone is familiar with it.

Next, I installed MySQL. I find it interesting that I say "my-S-Q-L" for MySQL when I use "sequel" for SQL. I wish I kind of knew why I do that. Anyways...

At first, I thought Linux crashed because it stayed at the same point in the install for a very long time. I am still quite not sure what happened. The PC is somewhat slow but it took a few hours. Fortunately, I was doing chores so I didn't just sit there the whole time.

After that, I installed the MySQL Workbench which appeared to be an developer environment somewhat similar to Microsoft's Management Studio. This time it installed at a much more normal rate that I expected.

I watched a couple quick tutorial while it downloaded and installed. It has some functionality similar to Management Studio like the ability to create tables and databases, but very different overall. The naming schema is not the same. The structure of schema, database, and tables are not exactly the same, but not difficult to learn.

Python

My friend was talking about how he had to learn Python to use a certain library that did what the manager needed. So, I (being the easily distracted person that I am) started to look into Python. Python is already installed in Ubuntu so that part is super easy.

You can start writing commands write in the terminal and see results of what happens. It being a scripting language and with the interpreter engine, there is no need to build a project and compile to see something happen. This is very similar to VBScript and JavaScript but even easier.

I stumbled across a tutorial on string manipulation, and I was impressed to how easy it was to manipulate a string variable. Very intuitive, simple, and still elegant to read even for someone that hasn't even written Python code before. In C# or Java, it would still be quite a bit more verbose to do the same functionality. Of course, Python may not be as perfectly efficient in execution in the highest tier of efficiency but most applications and developers do not have to think at that level anymore. I could even argue that traditional languages could be inefficient if designed incorrectly.

Conclusions

I still have a long ways to go. For some reason, work has been very busy so I have not been able to put as much time and energy into getting my Linux project going. But I have been able to put a couple hours into it so far. I hope I can at least have a simple web application up and running by next week.

Wednesday, December 11, 2013

Ubuntu: Terminal Basics

I think this is rather self-explanatory with Windows command prompt experience.

pwd - displays your current directory [cd]
ls - list files [dir]
cd - change directory [cd]
clear - clear terminal screen, clear buffer [cls]
mkdir - create a directory
cp - copy file [copy]
mv - move file [move]

~ - home directory
/ - root directory


home directory - this is equivalent to Window's user directory
root directory - this is the base directory, the closest equivalent would be like Window's C drive but not exactly.

Tuesday, December 10, 2013

Work Life: Ubuntu - First Impression

I finally got around to installing Ubuntu. I have never really used Linux although I did have some exposure over a decade ago. Unfortunately, I installed the server version so there was absolutely nothing there except for the terminal. The only command that I knew how to use was [ls] which just provides me the list of directories and files.

A friend then work his magic while I tried to follow what he was doing. Eventually ended up with a gui interface (I think it was called X Windows) with nothing there. He then just recommended to use the GUI version of Ubuntu.

Since he's out, I tried to play around with the flash drive and found that I could run Ubuntu right off the drive. This was much easier to use with the interface. It is much easier to navigate directories and open files which are very similar to Windows. I was able to open Firefox and watch YouTube videos on Linux tutorials.

I started by searching for how to install files from Ubuntu although I kind of figured how to do so in the terminal. From the GUI, I would just get a folder-like directory when I clicked on the files that I downloaded. I also did not know what the difference was between YUM and RPM. So... I have much to learn.

One minor thing that I have to get used to is that the icons to close, minimum, maximize, etc. are on the top left corner. Also what takes me a while to adjust is that the icons do not appear in max size unless the mouse hovers in the upper regions of the screen. This seems to throw me off for some reason.

In conclusion, I was not able to do much with my working knowledge of Windows except to navigate the directories and configure the wireless. My goal was try to get to installing a web server and database, so there may be other basic functions that I could figure out for regular use.

Sunday, December 8, 2013

Work Life: Software Versioning - Understanding the basics

The main reasons that someone would be interested in the versions is when they need to identify which features are in a particular version or identify which code to update for remedy a defect. Otherwise, version id is rather useless except for maybe as a marketing gimmick which really does not serve any functional purpose to software development.

At the most fundamental level, version id allows the developer know exactly which code base to identify or modify. In other words, the version id does not have to follow any sort of schema, rules, or process. You can use numbers (version 1), groups of numbers (Version 1.2.3.4), letters (version A), mixed (version 1.2.a.3.b), pictures, names (Windows XP, Vista, Google Jellybean, Ice Cream Sandwich). Basically anything you want it to be as long as you know how the version id goes with which code base.

To expand on the numbers and letters, you will commonly see that there is some incremental process. This is also not required on the fundamental level. You can jump from (v3 to v1.1 to v2.0.4 to vA to vB) like how Microsoft jumped from (v3.1 to 95 to 2000 to ME to XP to Vista to Win 8). No rhyme, no reason needed for version id except that it should at least be unique. I use 'should' because you could technically use the same version id but then that really complicates the matter which I won't cover here because who knows why some people do that (but it really does exist).

But because our memory with versions work well in chronological order, many companies use an incremental pattern type. Not only is it easier to remember, it is also easier to automate. Every time you have an update, you increment by 1 (version 1, then 2, then 3). 

Eventually, you'll find it cumbersome to remember difference between version 15 and version 32 and version 75. So many companies compartmentalize the changes by adding a sub-group (Version 1.1, then 1.2, then 1.3, etc). When you reach a arbitrarily major update, you will increment the super-group from 1.X to 2.0 (or 2.1 depending on your preferences or even 3.X if you want people to go slightly insane). Here, I use X because it can be any number. You can find that you go from 1.9 to 1.10 which does not seem to make mathematical sense, primarily because it is not a mathematical number (technically two numbers thus 1.10 is not the same as 1.1). This can be understood more easily if another sub-group is added like 1.10.20 which completely breaks any relationship to a mathematical number.

You'll find that 2 to 3 level system works for most groups and companies. But for software managed by many people (20-100 developers), you'll notice that there are more levels and that they do not increment in the normal fashion. The reason for this is because of branching of code. Because there are so many people developing at the same time, there is a root application that they all work off of. So everyone could be working off of code version 1.2.1. Developer A will be writing code version 1.2.1.5 while another developer B will be writing code version 1.2.1.8 (maybe he has an intern working on 1.2.1.8.2). Someone will eventually decide that it is time to bring some of the changes together to create version 1.2.1.22. If they find that to work, they could publish version 1.2.1.22. Of course, you could also have a policy that just increments the third-level whenever you merge which then should have been version 1.2.2.

But let's say we kept with 1.2.1.22 because it is a patch update and not really an application update. While testing, this version did not work and deemed to difficult to troubleshoot. Version 1.2.1.22 can be discarded. After the major items are addressed, eventually someone will merge a different set of versions to create Version 1.2.1.45. Then, repeat until they have a working version. If 1.2.1.45 works, they may just publish that so the public will never see version 1.2.1.22. If you use the other policy, you wouldn't see 1.2.2 but a 1.2.3.

At this point, you can also see from the end-user (i.e. customer) that may concern them especially for new vendors. Why did they skip a number if they always had an incremental system? This is why larger corporations that invest in PR develop their own version schema. Company A may say that we don't want to confuse the users with an update from 1.2.1 to 1.2.3. They are going to stick with version 1.2.2.

But on the development side, you cannot simply rename 1.2.3 to marketing's 1.2.2 because it was already used. Thus a cross-reference table needs to be maintained to tracking marketing's version to the development's version.

On a higher level, you can easily see where development and marketing would deviate in version id when there are impacts to technology versus usage. For example, the development major version (level 1) needs to be incremented because of a new software design that does not impact function. To marketing this is not a major change. So development could move to version 2.0.1 while marketing may choose to remain in version 1.x.x format. On the other hand, marketing may see one of the new features that will change how they sell the product but was not a major change to code (like backup and restore, or moving to SSO). For this marketing will sell it as version 3.0.1 while development keeps their 2.x.x format.

After some time, marketing will then start to simplify or complicate the version id towards their market research. That is why you see so many odd versions in today's world. You can have Google's candy theme that increments by the first letter. Apple's animal theme with the same incremental scheme. Or Windows random scheme. Primarily, their versions are easier to remember maybe because we can relate more things to it than just numbers which we see everyday. Also it makes it easier to search because all applications use numbers so searching for version 1.1 will return several results while version Vista is more unique. Or you can complicate it which then many people will not remember the older versions.

So in conclusion, version ids can be anything. Best practices are good guidelines. Choose and/or adapt one that fits your business model. I do not recommend random version id for development as there is little value to that, but who knows perhaps it has value if you are trying to make it difficult for other people the chronological progression of your software development (like for a spy-world tv show).  

Complaint: Flash player volume on Google Chrome - Perma-mute issue

If a stream uses flash player and has a mute option, I've noticed that if you leave the mute on for too long the video will not unmute although the icon changes to the unmute icon. The shortest I've noticed this is about 30 minutes but is not consistent. I have had run a stream for a couple hours without a problem. At first, I thought this was only with Twitch.tv but I've noticed this on other video streaming sites like CBS.com, The Daily Show with Jon Stewart (also Colbert Report), and Hulu.

I've only been using Chrome so I am not sure if this also occurs on other browsers. Not a major problem as refreshing the page resolves this issue all the time but is quite frustrating when the player restarts from the beginning (thus watching commercials before jumping back, then watching another set of commercials).

Thursday, December 5, 2013

Life: Swatting? Blackstone "scam"? Ignorance of the Law? Why is it so hard to be a good citizen?

How does anyone even keep up with everything these days? I am in the middle of writing a blog on "Ignorance of the Law" about how can the law expect average citizens to know all the laws while judges cannot even agree if a car is legally parked depending on parking signs. 

Since I started, I read about the insurance "scam" that Blackstone committed (not including losing whatever trust I have left in our public news journalists with the lack of coverage or rather their priorities). In what I think is a scam yet somehow legal, a company can basically buy insurance to protect the car, mark the car with an erasable marker, then collect the insurance. How does an average citizen feel like the government is against them when they cannot even collect their insurance on legitimate claims or legal technicalities (plenty of articles from Superstorm Sandy)?

Then I came across "swatting" a new prank that can get any random person with internet access get in a lot of trouble. This does not only impact internet subscribers if the prankster has access to your phone number or address. Ever wonder how easy it is to order pizza? Then wonder if you used someone else's address? Now just imagine that on a much grander scale. Average citizens have to worry about this even if the law is not ready for it. How does the law expect citizens to be perfect? We can barely do one think perfectly, yet expected to know perfectly everything with perfect knowledge? 

Then I read about our representatives working on new legislation. Isn't there like a common sense law somewhere? Something like, you cannot get rewards by committing a negative action? Should law enforcement have ways to track people who put in false calls or false orders?

On top of all that, the most frustrating part is figuring where to put my attention to. I believe there are plenty of good people, not just good citizens. I meet them all the time and more frequently than bad people. We all work towards good things, but I feel that "bad people" have split our focus so that they can divide and conquer our efforts. 

Either that or we need to find a better way to fundamentally change the laws for the better. I am terrible with following what laws are passed (is there anyone that does... doesn't seem like even politicians know what they pass either... yet we're still accountable to it), but I feel that the laws we pass are just patches. 

In software development, patches do not fix the underlying problem. Eventually, the product cannot support all the demands added to it effectively. Either the product needs to be refactored or be replaced by another product. The latter would be a revolution in government terms.

Shouldn't a citizen who has good intentions be automatically good citizens? I think good people are frustrated because they must consider so many immoral, unethical factors while bad people just continue to exploit loopholes. To deflate some of my reader's egos, this includes just people who speed above the speed limit all the time while on a random select get speeding tickets. I just wanted to muddy our belief that "I am good" while "others are bad" mentality. In this scenario, should we all just be driving the speed limit? Yet in today's world driving the speed limit causes a lot of ire from the majority of drivers. Then there's the unfortunate person who maintains the new norm but gets ticketed just because of some factor not in his control like officer happened to look up at that moment, easy to identify, didn't have a trailer truck to reduce visibility, etc. Do we really want to that kind of system? The police surely does not but they can only follow the rules that have passed by the representatives that we elected. Perhaps, we need the ability to elect someone that does not want to be elected. Of course one of their traits would have to be that they have social responsibility if it is placed upon them. I have definitely across a couple people who I thought would make great politicians, choose not to be one, but would do it if called upon... like jury duty. Perhaps being in jury duty should be one prerequisite to being a public officer. 

I apologize again for just spewing ideas again. I find each topic important to put down. I want to reword and restructure but I know myself better than putting this on the shelf until I get around to fixing this like many other unfinished posts (at least this is more complete than most of the other random thoughts). On the bright side, I do learn a bit more about myself as I write more. Each month I do notice that there are some values that I find easier to define than before.

Reference

Swatting

Police Visit - Swatting

Blackstone Insurance "Scam"

Threads

Sunday, December 1, 2013

Life: Decoupling Economic Dependencies on Government Laws

I was going through some articles about parking ticket scams where people were given parking tickets where most have never been in the state before or was clearly not there during the time of the violation. Although there were so many things wrong with the system, what really got me thinking was when did our justice system put the burden of proof upon the victims when all they have is the hearsay of a traffic officer. Somehow, the victims now have to provide documents, lawyer fees, etc., for something they did not commit in the first place yet the law does not even produce a picture of the violation even especially after dispute. 

On a similar note... if a sign was missing or a meter was broken, the burden is on the victim to prove that it was missing or broken, yet not the burden of the government to prove that the meter was working and the sign was there. On top of that, even if you pay the fine because it is cheaper than proving your innocence a $2 convenience fee is added for paying online. 

Where did our society go wrong? Yet when come to changing the laws, some of the arguments is on how the government will compensate for the lost revenue if the law changes. What does that even have to do with the justice system? Then to kick the average citizen while they're down, they let many criminals free because of technicalities that average citizens cannot exercise due to severity of crime or too poor.

This is not an easy task for the government to balance but I think there are benefits to directing our budget to segregate where the revenue is used. Economically, I believe the problem is because they pay for programs using revenue from another program. In this case, parking tickets and violations produce a lot of revenue for the government (local, state, or federal) to pay for many programs.

To simplify the laws, I think it would be wiser to start to focus the penalties of laws towards the costs of misdemeanor crimes. Revenue produced from parking tickets can only be used towards the cost of parking issues. Taxes on tobacco or other illegal substances should only be used on programs that deal with anti-substance abuse.

This is not necessarily simpler but possible as insurance companies are able to make profit on similar type disasters. Parking issues should include some of the cost of the chance that the parking may cause the building to burn down. For example, the car parked in front of the fire hydrant so the fire engine could not effectively save the house. Part of the revenue from that parking ticket should pay for the damages on the burning house scenario. Thus inversely, the proportional percentage of the cost should be built into the ticket fine. Thus if the damages was $500k and car caused $10k of the damage, then $10k divided by number of expected fire hydrant parking violations should be the minimum to the ticket. Of course there are several other variables that needs to be included but that should be the gist of the concept.

By this same concept, income tax should be used towards our universal programs that impacts all citizens, like National Security, Social Security, National Healthcare (if it continues to exist), public education, all the court fees for defending the constitution, etc. Property tax used on programs for the property.

If we ever reach a point where one of the programs "makes a profit" then that should be saved in the government "bank" that can be "borrowed" for other programs when a disaster does occur but there is not enough funds for that program yet. If there was an unexpected hiccup, like Superstorm Sandy, recovery programs can borrow money from the "bank" to pay for the costs now. But eventually, that "debt" needs to be repaid. In the case of Sandy, since it is the welfare of East Coast residents, that should at least come out of the state income tax of the states impacted. If the US citizens want to assist, a part of the federal tax revenue can also be used. By doing this, it sets our expectations that our income tax is used to protect our welfare.

By not meeting expectations. this puts a lot of burden on the government for many things like PR, managing risks, and handling a very complex system. For example, the $2 convenience fee. We all know that online payments save the government money over hiring processors to receive mail, open mail, manually enter data, send check to bank, and all the other exceptions like overdrafting, canceled checks. Why leave such a sour taste in their own citizens by stating that it is for their convenience when most people know it is not for our convenience? The government can probably get less gripe by just by saying "because we want to fee" instead of convenience fee.

The purpose of all this is to decouple the dependencies between programs due to economic reasons. We should not be prevented in correcting a particular social issue just because it impacts the revenue, thus preventing ourselves from passing a law that is more justified.

Side Note

First, I'd like to apologize if the ideas do not flow together. I started with one idea then it morphed into something a bit bigger and just wanted to type it down as the thoughts came to me. I figured I will still go ahead and publish in-case someone happens to stumble upon this article and has some additional thoughts or reading material. I would like to revisit this thought again sometime in the future.

Another interesting thought that came to mind was my use of a software engineering term, decoupling. This got me into thinking how the government should be structured similar to a large application with a controller (federal government) with maybe something like interfaces (for state government). Basically, I think we need a plan that would refactor the code (laws) so that it is more effective. 

If there are any PhD candidates looking for a thesis (probably in Political Science or maybe Computer Science or Software Engineering), I would definitely be interested in such a topic.

Very last thought, isn't it a very terrible way to learn (or get clarifications) on certain laws by accidentally breaking them? Seriously... blocking the box, no right turns in the city proper violations, are not common knowledge nor is it common for people to check on all the laws on everything. I tell that to anyone visiting to nyc. Or not having to come to a complete stop for right turns in California. How about a warning system that fines people the minimum amount for the time of the officer to give me the warning? Instead of having your average citizens more afraid of the law than criminals. http://www.dmv.org/fun-stuff/bizarre-driving-laws.php

As if to prove that traffic laws in themselves are confusing, most areas do not allow U-turns yet I have encountered intersections with No U-Turn signs even when it is already a violation but still have random intersections without the sign within eye-sight of the previous intersection. If you do not read up on the laws, you may be tricked into thinking that it is legal to make a U-Turn at an intersection that does not have the sign. So make sure to remember that even though there may be a sign explicitly stating that violation, that does not necessarily mean that it is not a violation when a sign does not exist.


Reference

Parking Ticket Scams - People receiving parking tickets at locations they've never been to

http://charlottejhsu.wordpress.com/2011/10/25/the-896-80-parking-ticket-i-received-while-2000-miles-away/ - Not exactly never there but clearly not during the time frame of the ticket

Parking Ticket Discount (I only found NYC to have this. I thought this was interested and as stated by the article was not a lot of people are aware of this)


Convenience Fee

Friday, November 29, 2013

Work Life: Implementing Password Storage for a Login System

With work calmed down a bit, I have returned back to refreshing some programming skills. At first, I was reading on some Python but then had an idea that I wanted to start designing so went back to C#. Although I will be using C#, this post will primarily focus on the design implementation because I found it interesting. Each time I implement the login system, I always seem to learn a new little tidbit.

Most of the practices that I exercise does not completely prevent serious hackers. The basic practices will prevent most common intruders and at least make it more difficult for serious hackers. There is little that can be really done against brute force if someone gains access to the password files. Since access to password files is more a network security, that won't be covered in this blog.

By implementing the following, basic users like developers and db admins should not be able to just read the password. This would also means non-technical user who "accidentally" gains access to the files would also have difficulty reading the password. In other words, I should not be able to read the password just by logging into the database because I need to troubleshoot other issues even though I have access to the files. In actuality, I wouldn't be able to reverse the password without going to extreme lengths even if I was the developer or db admin.

Encryption / Hashing Password

Because the password needs to be stored some place, the password must be at least be made unreadable. Today, this can be done very easily with most programming frameworks. Basically all that needs to be done is to use hash algorithm.

Hash algorithm is asymmetric in cryptography meaning that it is extremely difficult to reverse the hash. In most cases, this is sufficient for security implementation of a system. In some cases, you may want to be able to reverse the hash. In those cases, you want to use normal encryption algorithms.

One example that you may choose to use an encryption algorithm is when you need to implement a solution to automatically connect to another system that requires a password. In other words, the password needs to be stored then used to pass to another system. These could be used to access APIs, Web Services, screen-scraping, etc.

Although neither are perfect, anyone hacking into the system would require a certain level of knowledge thus eliminating even basic developers and db admins. There are other layers that can be added to prevent external hackers which I won't be expanding here.

Salt

In conjunction to hashes, salt should also be used with the password. This is an extra "random" data appended to the password. The random data is still something that is based on certain information that needs to be stored. That data could also be encrypted.

In some cases, the user id could also be used as the salt. Although not random, it does make it more difficult for dictionary hackers by creating a different hashed password. This primarily protects users that have the same passwords.

I am not sure what the big advantage is to using a purely random salt. Even if the salt is known, this does not make the hashed password any easier to decrypt. Brute force is more likely to be used which means that the hacker already has access. This means the hacker most likely has access to the salt values. It does add a level of complexity to the hacker, but unlikely orders of degree in difficulty.

To me the most important is to at least differentiate similar passwords. By doing this, a hacker could not just search the table for another user with the same password which can be easily done by a developer or a db admin. All that needs to be done is query the password database with the same hashed password.

Disable Bit

In the table, I like to also include a disable bit. In the off-chance that a password or all passwords have been compromised, all it would take is a simple update to force users to update their passwords. This of course requires that the code makes use of this bit. If it doesn't, this is quite a moot point.

If this is a for a corporate industry level, there should be policies behind enabling passwords if that is an option. It is important to make sure the identity of the person is indeed in satisfaction to the company. For my site of lowest importance, I would force a password change. If I only enable the password, the hacker could just be trying to test to see if it was the same password. By changing the password (assuming that the requester is the hacker), the original user will not be able to sign-in thus triggering the user to either change the password again or inquire why it doesn't work. Hopefully by this point, the user should have received an email of the first password change. If not, likely the email has been compromised. Although I wrote that a bit convoluted, I am basically saying that it is more troublesome to the hacker when the password has a forced reset because he does not get anything out of it. 

Audit Log

On top of the above data structure, I like to keep an audit log of any activity especially sign-ins. One great use is to find dictionary hackers or sql injection hackers. With an audit log, you can find particular patterns to how data is entered. 

If there have been several failed attempts by the same or similar users, there is a good chance that it is a dictionary hacker. Once identified, certain actions can take place. You can automatically blacklist the ip or user. If user, you may want to warn the user that someone has failed to attempt to sign-in a certain number of times (in the off-chance that it may actually be the user who forgot their password). I think a 100 attempts within one sitting (~5-10 minutes) is a range to set an alert. Most people won't try more than 50 times (include frustration entries) before they quit or request for a password change.

If sql injection hacker, you can easily identify that someone is trying to compromise your system. Just remember to check for sql injection before the encryption. There should not be a need to do an exception rejection of password if using encrypted/hashed password because the sql injection would also be encrypted/hashed which would make it unreadable to the sql engine. This check is primarily to identify potential threats.

Side idea: I think it would be a neat idea to have a client-side password encrypter or hasher. Basically whenever you enter into a password field, whatever you type in will be encrypted/hashed before sending to the server side. This would at least allow users to appear to have multiple passwords (by using different keys like site name into the algorithm). This would prevent multiple accounts from being compromised if a single system is compromised. 

MS SQL Insert

I did not find it intuitive in how to insert a binary, so I figure this might help someone (ie my future self... why is he so forgetful?). 
string s = "INSERT INTO LGN (UserPassword) VALUES (@binaryValue)";
string c = "data source=.\\XX;Initial Catalog=XXXX;Integrated Security=SSPI;";
SqlCommand cmd = new SqlCommand(s, new SqlConnection(c));
cmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, 500).Value = text;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
Of course, use your normal try/catch/finally clauses. 

Cons

There is a disadvantage to hashing the password in that you cannot edit the password once it is set without having the user reset their password or login again. A scenario where you want to edit the password is if you need to add salt or change your key.

There is a collision in hashing the password which is around 0.001%. This means that there is a very rare scenario where two passwords end up with the same hash password. Although a possibility, the amount of attempts should trigger other security issues that can still address this con.


Reference:
http://money.cnn.com/2012/06/06/technology/linkedin-password-hack/index.htm
http://en.wikipedia.org/wiki/Salt_(cryptography)

Monday, November 25, 2013

Review: Google Webmaster Tools and Google Analytics on Blogger

I've used these tools before on regular websites that attempts to market their products. That was a while back and the tools have changed quite dramatically since I've last played around with them. I was by no means a professional at these tools back then, much less now.

But to fulfill my curiosity, I implemented Google Analytics a while back and Google Webmaster about a week ago. There was some fascination to which posts are clicked on and which ones are visited. At the start of my use of analytics, there was some influence on which topics I was going to write next. There was a slight need to fill what my current audience was looking for. Although I was happy there was a large audience for a couple of the posts, the posts were not my primary interests. I returned back to just writing whatever was on my mind at the time.

Google Analytics

This tool allows you to track the traffic that comes onto your site. It provides data primarily on the visitor which means it tracks where they came from, search terms they used to get to your page, how long they were on the page, etc. There are a lot of information but I found myself primarily just looking at the search terms used (Acquisition > Keywords > Organic) and location (Audience > Geo > Location) because I find it interesting how they are getting to my blog and where they are coming from.

One nice thing about Analytics is that the visitor count is closer to actual count, in my opinion. Blogger provides much larger numbers because it also includes all the sites that try to get your attention by crawling your site thus making you curious about who they are. About 90% of my traffic is from those visitors with no intentions of using or reading the content. I dare not provide examples as that would just feed into providing more free marketing for them.

I believe the reason for the actual count is that most crawlers will not execute the scripts, thus not added to Analytics. If Analytics had a filter for that kind of traffic, I was hazard a guess that blogger would have implemented the filter.

Analytics is more of a marketing tool. You can use this to determine which of your pages are popular, determine if your keywords are working, and drive your site accordingly. Since a lot of the data is oriented around the visitor, a company can make use of the data to focus on key solutions that are not performing or use the data to clean some solutions that are not getting any traction.

Also, Analytics can be useful for campaigns or promotions. If you market your pages on other sites like Google Ads or your industry pages, you can determine if the cost of the ad is worth the traffic generated from those sources.

Google Webmaster

I actually prefer webmaster to analytics because I am not marketing my website. For marketing, both tools are useful. What I like about this page is the actual number of impressions and click-through (CTR) on certain queries (i.e. search terms).

This fascination does not help me any bit for my blog, but it does fill a tiny bit of curiosity on how Google ranks their pages. Also there is an unfounded joy of seeing that some of my pages are ranked in the top 10 of certain searches. There is also a content keyword where it shows you how Google "ranks" certain keywords for your site. For example if I write a lot about software engineering, it would rank "software engineering" as a high relevance to the site. So it was no surprise to see life and interview on the list. Surprisingly, Google was ranked first which I do not have a lot of content on (I have no explanation for this).

For webmasters, there is a feature that allows you to find any dead links. This is extremely useful to identify those pages and should be addressed because it does hurt marketing if the pages are not coming up. 

One feature that I found fun was the Links to your site. I just received data today on it but hope to see more relevant sources.

Overall

Both tools are useful for companies for their websites if you do not mind the conspiracy theory behind Google's tracking of your sites data. If you are writing a blog to cater to your audience, this can also be useful. For those who just write whatever is on their mind with little care to who is visiting, then these tools are not needed. For those who are curious, these tools are free and easy to implement. 

I have not explored all features. And some I have not quite figured out how to use yet.


Reference:

Monday, November 18, 2013

Review: Open Lord Intrigue Card from Lords of Waterdeep

If a player is used to play Lords of Waterdeep prior to the expansion, this card will initially appear to be extremely Overpowered (OP). I've been a victim to this card twice and still do not quite have a solution to this. Both times played in the second round. Basically this card prevents players from using attacking intrigue cards on the wielder (OL - Open Lord).

After thinking over the game, I find that this card seems OP because it changes the dynamics of the game once it is played. Because now everyone has to share in the responsibility in preventing the OL from taking too big of a lead. Similar to the affects of IO or Wisp from DOTA, or playing against the score leader in Hearts, the card game. So to prevent the OL from winning is very difficult if you are playing with selfish players or new players. Revealing the lord is not a huge drawback because around Round 3 or 4, you have a pretty good idea which lord each player has anyways.

Two Players

To me this card is extremely OP for two player games because I did not have another player to play with. This means that I cannot play the attack intrigue cards at all which is a good percentage of the cards. That means that I will waste a lot of moves getting cards I cannot use. At the same time, because I cannot play them, I cannot use the Harbor which essentially gives you another half agent to an extra agent because you can replay him later. In two players, there are lots of open space and the intrigue cards give you the resources that you can attempt to block. At least with a third player, you can play the attack cards on someone else. This then leaves you with utility cards where half of them also benefits someone else, like two resources and give one to your opponent. Of course in two players, there is only one other opponent. I was completely crushed in this game. This was also the very first time I played this expansion so I did not know any of the new cards or mechanics.

Three Players

The second time we played with three players. We both still lost but it was much closer in score but really required both of us to "gang up" on the OL. By ganging up, we just used utilities between the two of us and avoided using attack cards. We had the building that let you discard intrigue cards which also helped. What hurt me was that I was the building lord which I had to spend half the game just getting the castle rook to have first dibs to the buildings, and of course the unfortunate luck to not getting quests that gave me buildings.

Conclusion

I feel this card is still overpowered but would like to play against it a few more times to get a better feel. But it definitely changes the game play once it is revealed. There are probably some lord combinations where it does not work very well like the building one.

On the rest of the expansion, I feel like there are a lot more intrigue cards that benefit the wielder without any penalties. At least in the original, the benefit was about an extra move like getting the same resources as if in another spot or take extra resource while giving something to someone else. There was one that just gives control of a building. Taking one that has a cost of 8 is basically stealing someone else's two turns for not even 1 turn... which basically means a 3 turn swing.

I am still split on the new mechanics. The corruption is interesting, and underworld quests cost a lot more (of course for more rewards).

Life: Detached Life, Attached Life, What Life Do I Want?

Do I want to rage in my life or observe from a detached point-of-view? Here I want to differentiate "I" from "us" because I want to be clearer that this is a choice that an individual cannot take both extremes. Most of us will fall in between the two, but we will likely lean more towards one than the other.

And as I ponder on this thought, my curiosity is more on what made me decide the path to take and what made you who you are. The more that I think on it, the harder it was to imagine that I made my choice without the world around me. It is like a void that I filled.

My life has taken me towards a path, while my talents have driven me towards a subset of those paths. Given all the choices I've made and the choices of the people around me has made, my one single path is the one that I lived. My future may have infinite paths, but not all paths are available to me.

I will never know what it was like to be homeless, parent-less, and the same time I will also not know what it is to be king or wealth beyond my imagination. I can guess, but I'll never know. It is just life to me because there is nothing I can do about what is. This does not make me sad or happy.

By the same thought at the more extremes, do criminals exist because of the situation they were put into? I am not perfect. Assuming that everyone is imperfect, there are bound to be "cracks" in society that almost seem like it necessitates the existence of "evil" within our world.

So to solve our worldly issues, we cannot "not" care about the world around us. To me, the solution is to strive to be self sufficient and be able to help at least one other person so that my idea can survive. If I can help at least two other people, then I have at least made the world a better place. Eventually those two people can help at least one other person.

I can choose to be a more pro-active person or an indirect person. I believe both paths can solve our problems. To reach the point to safely guide someone else, we need to reach a point where we are comfortable with our existence. Whether you find your sufficiency through a god, multiple gods, no gods, science, nature, personal faith, or even questionable existence, I believe we all seek a greater truth and we can all reach there faster with everyone. For a Buddhist monks see things that a pope does not see which neither can truly see what you nor I see. By sharing our vision, we can see a bigger picture... hopefully, we'll see that none of us are wrong. We just saw it differently.

Reference:
https://www.youtube.com/watch?v=Yb-OYmHVchQ
“Man is literally split in two: he has an awareness of his own splendid uniqueness in that he sticks out of nature with a towering majesty, and yet he goes back into the ground a few feet in order blindly and dumbly to rot and disappear forever.” -Ernest Becker

Review: Snagit - Screen Capture Application - My First 10 minutes

While trying to take screenshots of the search results of HealthCare.gov site, I could take taken a screenshot of the drop down results. Each time I tried, the drop down result would disappear because I clicked out of it. I tried using the Windows Snipping Tool which I found rather useful for normal screenshot uses.

After trying again a few more times, I recalled using SnagIt with a previous company that was easy to use for this type of screenshots. Unfortunately, this is a new version and I am a little too poor (at the moment) to pay for the full version, so I used the trial version (full version is $50 pre-tax). Easy to download and install. The interface has changed a little since the last time I used it (about 4 years ago).

At first, I was excited because it worked just as I remember although the screen flickered for a moment. I did this by hitting the Print Scrn button. It immediately brings up the capture tool with the drop down still on-screen for capture. I noticed the results were not the same, so I tried it again on the home page.

This time it did not work... very odd. I went back to the other page and tried again, and did not work. No matter what I tried with mouse clicking or keyboard shortcuts, I could not get the results that I got the very first time I tried.

Fortunately, Snagit also has a feature to video capture the screen. I quickly enabled video capture and recorded 2-3 seconds of me entering in the search until I saw the drop-down then ended the video capture. This quickly brought up the snagit tool with the video. At this point it did take me a while to figure out a way to take an image of the video. It was actually in a simple location (right next to the video console with the play, rewind, forward button)... the Capture Frame button.

So I figured all that in about 10 minutes so the interface was relatively easy to use, although I was already somewhat familiar with the product. I saw some familiar features like quick editing of captured images which I completely missed when using Microsoft's Snipping Tool and the very basic Print Scrn feature. Perhaps I should focus on more screen capturing posts and videos for the remainder of the trial version :P

I totally recommend this product for screen capture if you can afford it. There a bunch of other features that I haven't looked at yet either, but I liked all the features from its older version that I couldn't find elsewhere (not that I tried really hard to find other screen capture solutions).

Reference:
http://www.techsmith.com/snagit.html
http://download.cnet.com/Snagit/3000-2192_4-10004813.html