This is NOT meSun, 20th Apr '14, 2:55 pm::
I don't know who this guy is but he is making me question my existence more than Descartes or Nietzsche ever did. For the first time in my life, I have found a doppelganger. Well, it was actually Juliet wondering what I was doing on a beach without her. It appears we both spend quality time on beaches flailing our arms around, wear garish clothing, sport a manly beard, and refuse to bow down to the tyranny of barbershops. To you Sir, I say "Congrats on being almost like me!"
The Goats have arrived: Marco & PoloMon, 14th Apr '14, 7:50 pm::
They constantly call out to each other when separated. Hence the names: Marco - Polo. Marco's the older black & white baby goat and Polo is the little waffles-colored kid.
The first four photos are from two weeks ago when we first saw them at a farm up north and the rest are from this weekend at our house. Right now, they're staying in a make-shift enclosure in the porch. Over the next few weeks, we'll setup a nice shelter for them next to the Prairie Dog and Rabbit enclosures in the backyard, and build a protection fence around the whole area so they can safely chomp grass all day.
I also uploaded the pics from our weekend trip to see family in Utah last month.
Enchanted!Sat, 5th Apr '14, 12:55 am::
Tonight, we went to see the comedy musical show Disenchanted with our friends Cary and Laura at the Straz Center in Tampa. I knew it was going to be funny but I had no idea it was going to be utterly hilarious. The play is a sarcastic take on the Disney's Magic Kingdom universe, comically yet bitterly mocking tropes like damsel in distress, prince charming, once upon a time, and happily ever after.
While I had read many positive reviews of the show prior to the ticket purchase, I expected the quality of the performance to be mediocre. Instead I was blown away by how beautiful the artists' voices were and how well the live orchestra performed. The lighting, sound, set design, and costume design were very well done, and although the theater and stage were small, it felt no different from any big budget Broadway show.
Guess whatSat, 5th Apr '14, 12:40 am::
Take a look at this cellphone photo I took at my friend Rick's house, peeking directly into his telescope. Try to guess what it is. Scroll down for the answer.
It's the sun through a special solar filter. You can clearly see the sunspots as the dark smudges.
Building an awesome home surveillance systemTue, 1st Apr '14, 12:10 am::
During the first year of moving into our house, we focused on function: fix what's broken, replace what can't be fixed, and make everything work as best as possible. The second year we focused on necessary furnishing and organization: bedroom sets, dining table, floor mats and so on. The third year we're splitting the upgrades - Juliet's in charge of paintings and decor and I'm geeking out on home automation and surveillance. I'm quite happy with the technical decisions I've made so far and would like to share what's worked for me:
Home Network: The cheapest, easiest, and most reliable way of controlling all the different systems in your home is over the good ol' LAN. Since every system in my house was going to be controlled via the LAN, the first thing I did was buy a powerful router: Netgear WNDR4500. In addition to having 4 Gigabit ports, the WNDR4500 supports dual band WiFi at 2.4ghz (usually 802.11g - good: long range, every WiFi device supports it; bad: all your neighbors use it, microwaves interfere with it) and 5ghz (usually 802.11n - good: better speed, less noise; bad: shorter range, only supported on latest devices). Connected to the router is my cable modem, couple of TP-LINK Gigabit switches and a TP-LINK Gigabit Power-Over-Ethernet (PoE) switch. If you want a solid home network, make sure all your core switches support 10/100/1000mbps and only use CAT5e or CAT6 cables. All my wired devices are connected to the TP-LINK Gigabit switches. The TP-LINK Gigabit PoE switch is connected to all of my wireless access points.
Wireless Access Points: Even though my router has very good WiFi connectivity, it does not cover my entire house and definitely not the yard. We installed four EnGenius EAP600 units around the house and porch so that almost every corner of my house gets blanketed with perfect signal strength. The EAP600 gets power from the Ethernet so mounting it on the ceiling is a very simple step if you have easy attic access. The best thing about EAP600 is that in addition to supporting dual-band WiFi at 2.4ghz and 5ghz, it supports band steering, "a technology that detects whether or not the wireless client is dual-band capable, and if it is, it will push the client to connect to the less congested 5GHz network." This means my iPad and laptops that support 5ghz automatically connect on that frequency while my older devices continue to work on 2.4ghz. The best part is that there is a single wireless network (SSID) to connect to. Having a good wireless network is necessary if you want to view the surveillance videos from anywhere in the house on any device.
Devices: Speaking of devices, I am absolutely in love with my iPad Mini Retina and highly recommend it as the remote control for your entire house. I find the regular iPad too bulky and the iPhone/iPod too small to operate. I can't speak for or against any Android or Windows tablets as I don't know if the software I use is available on those platforms. As for the hardware to record my 12 camera feeds, I went with something unconventional - an Acer Travelmate P6 laptop that was on sale! I set it up to never go to sleep, operate with the lid closed, and removed all unnecessary software since it was going to use a lot of CPU/RAM 24/7. Believe it or not, a modern laptop with Core i3 and Gigabit Ethernet is more than capable of recording 12+ cameras. Best part is I can hide the laptop somewhere inconspicuous for added security and not worry about it being a target itself. Only problem with a laptop is storage. While 500 GB ought to be enough for a week's worth of video for 4 cameras, it barely records two days worth from my 12 cameras.
Storage: I attached the Acer laptop to my Synology DS211J NAS. I cannot profess my love for the Synology brand enough. I've bought, setup, maintained, and troubleshooted probably 30 different brands of network-attached-storage devices in the last decade and absolutely NOTHING comes even close in performance, price, quality, and robustness to Synology - not even products 3-5x more expensive. Even the low-end DS211J version is very reliable and works great for home backups, media sharing, and in this case, recording video footage. Pop-in a couple of 2TB drives, create a shared folder, map the shared folder in Windows, and drive S: is now ready to store two weeks of videos!
Software: Before I arrived at the current laptop, storage, and software solution, I spent months trying out various software (both free and commercial) and hardware (plug PCs, mini PCs, even VMs). My requirements were pretty fixed from the start: (1) Must work on iPad and iPhone (2) Must work from inside and outside the house (3) Must support at least 12 cameras (4) Cost under $500 in software/device licenses (5) Must allow real-time video and easy playback of recorded footage. While I came across many different solutions, the one that worked best is the free-for-personal-use video monitoring software Genius Vision NVR. It only took minutes to install on the Acer laptop and barely 30 minutes to configure to record all footage from all 12 cameras. It has companion apps for the iPad and iPhone and has decent security to make sure nobody can access my cameras without the right credentials. When adding the cameras to Genius, make sure you name each camera channel properly because there's no way to change them later and the iOS apps automatically sort the cameras based on the channel name. Since you cannot rearrange the cameras on the iOS apps, you really want to get the order correct beforehand. I prefixed my camera channels with 01, 02 etc. to get my desired sort order. Once Genius was configured properly, I opened a random port on my WNDR4500 firewall and made it point to the laptop's IP and Genius port 3557. On the iPad and our iPhones, I added two NVRs (a) At Home (b) Away from Home. The At Home connection points to the internal LAN IP of the Acer and Away from Home points to my WAN IP. Since my ISP rarely changes that, it is not a big deal for me to update that if necessary. I could've used a dynamic DNS service but oddly enough, most of the popular ones are no longer free and the ones that are, I don't know well enough to trust.
Video Surveillance - IP Cameras: Having used many different IP cameras in the past, I knew this was going to be difficult. I wanted 12 identical cameras that worked perfectly in day and night, in full brightness and pitch dark. Nearly all of my cameras face East or West and so it was critical that as daylight fades away the infrared mode kick in automatically and vice versa at sunrise. Additionally I wanted outdoor PoE cameras that could handle moderate rain, high humidity and temperature changes. Weeks of research led me to try out Dahua IPC-HFW2100 (IP66) and I can honestly say that I am pleasantly surprised at how well they work and meet all of my requirements. I must add that configuring them was a pain times twelve and that without this Amazon review, I would not have been able to setup the RTSP stream necessary for Genius Vision NVR. Make sure you get an IP camera that supports NTP and point it to pool.ntp.org or another NTP server so that you never have to worry about the camera's internal clock, which is usually displayed on every stream. If you setup the camera to overlay the current time on the stream, you can immediately tell if any camera stream is frozen by just looking at the on-screen clock.
PoE Switch: I highly recommend getting PoE cameras so that you only need a single cable to the camera instead of power adapter and electric sockets everywhere. In terms of performance and reliability, PoE will always beat WiFi + power adapter. Problem with PoE is that the switches are usually expensive. Most PoE switches with 8 ports only have 4 PoE ports. I did not want to buy 3-4 PoE switches and instead got a BV Tech 16 port / 100Mb PoE switch. I was originally quiet worried about having just a single 100 Megabit cable connect all of my 12 cameras but believe it or not, it has worked quiet well. Even if all of my cameras are streaming at 4Mb/s, that is still under 50Mb/s, well below the theoretical capacity of a 100Mb switch. The best part is that since this device has individual switches to turn on/off the power to each port, I can use it to reboot any camera without unplugging the Ethernet cable.
It has taken me a good six months to plan, budget, purchase, test, and deploy all of the above and finally I feel content with it. I would like to setup Genius Vision NVR to record on motion detection instead of bulk 24/7 recording but that will take a lot of tweaking for each camera. Regardless, we now have a system that we can access from anywhere in the world and it works as well as any professionally installed solution that would cost 4x as much.
Other than the surveillance project, I've also replaced all of our regular A/C thermostats with CyberStat WiFi thermostats that Juliet and I can control from our phones. No more wondering if we left the bedroom heating on while we go on a weekend trip - we can check it and change it from anywhere with Internet access! Next up, I'm thinking of installing electric switches that can be controlled from the Internet and of course in person. And then some day, I plan on writing an algorithm to control colored LED lights in our living room based on a variety of factors.
Last minute heroicsSat, 15th Mar '14, 1:05 am::
I don't remember a single instance in my academic life when I finished my homework well in advance of the due date. Yet surprisingly, I can't recall being late for any assignment unless I had a serious excuse. For as long as I can remember, I have always scheduled my homework to be completed just moments before it was due. Or in other words, I have always waited until the last possible moment to get started. You might think that this negative personality trait is sooner or later going to get me into serious trouble. I'm not cocky enough to deny that possibility but due to the reasons I list below, I highly doubt it.
While the disciplined students and obedient employees were working on their big projects months in advance, pacing themselves cautiously, providing adequate buffer zones in case of problems, I was learning how to improvise at the last minute, regardless of the subject matter at hand. While they were trying their very best, I was unknowingly learning how to ration the resources I had (time and energy) while delivering my desired quality of work. On the surface, this makes me look like someone who does just enough to get by but nothing could be further from the truth. Not only have I always aimed for the best results, I have forever challenged myself to be more ambitious. It is that innate desire to do more things juxtaposed with my inherent laziness to do no more things that has fine tuned my ability to "just wing it".
I am not writing all of this to show off my improvisational skills but rather to encourage the last minute heroes to continue procrastinating tasks as long as they do not miss the deadlines. I spent my school and college years participating in many different activities and programs simultaneously, waiting to do everything until just before the cutoff time. The amount of self-inflicted guilt I bore for not being more disciplined was demoralizing and unjust, especially since the results of my efforts were almost always top quality. I made myself feel bad for not following the path I was told was "right", even though I was surrounded by disciplined students who took weeks to write their essays and ended up receiving lower grades than the papers I wrote in the final two hours.
It was not until I joined the workforce over a decade ago that I realized that my lifetime of last minute heroics had prepared me to excel in the face of impossible deadlines. In school, you get four months to do your research, collaborate with your classmates, and design your presentation. In real life, you get pulled from an already-delayed project you're working on, to take over an urgent do-or-die assignment that you know is a bad idea in the first place. Given that situation, would you rather be the disciplined student who needs a four month plan to accomplish anything substantial or the champion of procrastination who has been living on the edge all their life?
After five years of having sub-par Valentine's Days due to work, school, and non-fun travels, we finally decided to do something memorable this year. We flew to Albuquerque, New Mexico and spent the weekend traveling around in Santa Fe. Here are the pictures.
A little over three years ago I went to Santa Fe with my buddies and fell in love with the air, landscape, and relaxed life. So it was a pleasure to visit the town again, this time with Juliet. In addition to window-shopping around Santa Fe's famous Plaza, we climbed up 120 feet into the thousand year old cliff dwellings in the nearby Bandelier National Monument.
The last thing we did before we returned home, was a limo tour of the shooting locations of the TV show Breaking Bad in Albuquerque. We're both fans of the show and waited for every episode with bated breath. If you ever find yourself in Albuquerque and love Breaking Bad, I highly recommend taking the Breaking Bad Experience Tour.
Enjoying the boringTue, 14th Jan '14, 4:00 pm::
I am taking a break from coding (because one of my meds is giving me very painful migraines) and instead of watching a funny movie or exciting TV show, I found myself transfixed on month-old recorded videos of the local "Code Enforcement Board" proceedings on St. Pete TV.
The mission of the Codes Compliance Assistance Department of St. Petersburg is to maintain the quality and extend the life of existing housing, to stabilize neighborhoods and to protect the public. As I understand, the Code Enforcement Board rules on violations of building codes and gives fines when the violations are not rectified in the allotted time.
Word for word, the above paragraph qualifies as the top candidate for the most boring thing I have ever written on my 'blog and I've written some seriously bland material on the housing-bubble and financial crisis. Yet here I sit, completely captivated by video of a board room with seven administrators, hearing one case of violation after another. For each case, a code enforcement officer takes the stand under oath and reads out a case number, name of the accused, and the violations. The violations are everything from shattered windows and broken fences to operating unlicensed restaurants in residential zones.
What impressed me was that everyone from the enforcement officers and board members right down to the accused homeowners were so rational, logical, and frank. Unlike the fake TV judges with over the top stories about domestic skirmishes, this is real life and even though no major crimes are committed, there is so much at stake for the homeowners and community. And unlike courtroom cases where there is a lot of he-said-she-said interpersonal conflict and drama, homeowners end up facing the Code Enforcement Board when for some reason or other, they fail to take care of property, paperwork, and procedures. In simpler terms, instead of resolving playground fights, this is the grownup version of why Johnny didn't do his homework.
In one instance, a homeowner did not take care of a fallen tree that was partially blocking the road. One of the neighbors filed a complaint with the city, and rightly so. The city did an investigation and sent a notice to the homeowner, giving him a month to fix it - a pretty fair action. The homeowner ends up in the board room because he did not take care of the tree after a month. Now we hear his side of the story. He said a large section of the tree was touching live electric cables. The electric company was scheduled to take care of that but they haven't. The board then unanimously gave him another 60 days to take care of the tree, more than enough time to resolve the issue with the electric company. While this sounds fairly routine, the homeowner sounded pretty frustrated because all of this was beyond his control. He didn't cause the tree to fall, he cannot clear it because it is touching electric cables, he had a hard time getting in touch with the electric company, and here he was, being dragged into board room on a regular work day.
Unlike the hundred "This can happen to you!!!" stories we hear about in the media, this is the one that can most likely happen to me. And it is hard to find someone to blame in this. The electric company probably has thousands of such cases to deal with after every thunderstorm, the neighbors don't want to hit the tree while driving, the homeowner isn't going to risk getting electrocuted cutting the tree himself. The city officers did the right thing in investigating it and the board did the right thing in extending the period. While I have no background information on the board members, each of them who asked a question or made a statement, did it politely, clearly, and without any prejudice. This is not some all-powerful "board" who's judging the poor citizenry. This is just regular people making rational decisions and hard choices for the good of the community.
However, sometimes you do feel bad for the accused. This guy (actual screenshot below) was being charged with operating an unlicensed barbeque grill in a commercial zone. Come on guys! Let the man cook in peace!
On my own scheduleThu, 9th Jan '14, 8:10 am::
I am currently running an unintentional experiment with my sleep cycle that very few grownups with responsibilities have the luxury of attempting. Since I've had a bad cough for more than a few weeks now, I've stopped worrying about anything except getting better. As a result, I stopped trying to go to bed at a set time or waking up with an alarm. I stay up as long as I want, I sleep as much as I want, I take as many naps as I need, and I code whenever I feel like.
Yesterday I woke up at noon, ate my first and only meal at 6pm, fell asleep at 7.30pm, woke up at 1.30am, and coded until 7am. I am a bit sleepy now and will fall asleep soon but I am in no hurry to do any work, chores, or sleep. Since physical exertion makes me cough, I've been pretty lethargic. Here's some interesting things I realized:
1) Freedom from guilt is refreshing! Not feeling guilty for sleeping in until 2pm or watching cartoons from 3pm until 1am is elating. Far too often we live our lives in a certain way because that's how we are supposed to. As long as I am not dropping the ball on my responsibilities (bills, social commitments, work projects etc.), there is no reason for me to feel guilty.
2) 24-hour cycle is definitely not for me. In fact, my sleep cycle isn't even periodic. It's very random. Some days I've stayed up 20 hours without feeling tired and some days I've slept 16 hours. My only concern has been feeling good. Obviously being sick and taking cough medicine skews how I feel and how often I want to sleep/stay-up but even on the days I barely took medications, I would fall asleep at 4pm only to wake up at 9pm for absolutely no reason.
3) I am procrastinating less! Technically, I am not procrastinating at all since I have no schedule so whenever I do anything, it is done on time. I do have some self-imposed deadlines but they are not stringent. Being able to meet them while still living on a completely carefree schedule feels wonderful.
4) I am listening to my body - more so than ever. I am not fighting my urge to sleep or eat or stretch. While this means I don't have to eat my meals at a set time, it also means not ignoring that I am hungry at 4am. Instead of forcing myself to do things because it's time, I'm waiting to feel hungry or thirsty before I eat or drink. The revelation to me is that this hunger feels very different from the "it's 12pm so it's lunch time" hunger. This is definitely a sample size of one issue but I feel like I am eating the proper amount I need instead of over- or under-eating like I generally end up doing when I wait too long to eat or have to eat much sooner than I want to.
I'm not trying to hack my body into doing anything fancy. I just want to stop being miserable and my condition has improved considerably over the last week. I don't plan on living like this forever though I have to admit, the psychological benefit of this carefree-ness during a typical grouchy period of sickness has kept my spirits high throughout. Next time I'm sick, I'm going to do this for sure.
On the 10th day of ChristmasMon, 23rd Dec '13, 5:25 pm::
My Christmas gift to Juliet this year was a real-life encounter with a Capuchin monkey at our house! Enjoy the photos.