Skip to main content

Posts

Software Requirements 3, by Karl E Wiegers, Joy Beatty, Microsoft Press

One of the areas often overlooked when writing software systems is thoroughly understanding what needs to be developed. Specifically who are the users that are going to interact with the system, what are they trying to accomplish with the software, and how is the system expected to behave under normal and error conditions. In short, developing software requirements and specifications before the software is written. " Software Requirements 3 " addresses these questions, with clear answers and advice in a rather longish format of roughly 673 pages. The book starts with a story about the importance of software requirements: a case of an employee who changed her last name without getting married, and the accounting software's inability to handle the change, with the repercussions that the employee will not get paid until the the "bug" is fixed. The book mentions that this is not an atypical situation, and that  ... errors introdu...

Sign language

One of the frustrating things for new parents is that their baby's communication is usually 1-bit: the baby is either crying (on), or not crying (off). When the baby is crying it is for different reasons. They could be: Hungry Sleepy In need of change Hot Cold Over-stimulated Bored It is hard to decode these competing and sometimes conflicting needs, although some people claim they can from the tone of the cry, and its duration. Lucky them. Most parents look forward to their babies' talking so that they can communicate their needs. What they don't realize is that when the talking stage arrives, so does the arguing stage. I am looking forward to that. It turns out we don't have to wait that long. We can teach babies sign language early on, and it will help them communicate their needs through signing as early as 6 months, which sounds like a blessing. There are a ton of videos on youtube that teach baby sign language but nothing beats attending a cla...

More water please

At work I always enjoy chatting with our lead designer, who is also a strongman, and competes in strongman competitions. In addition to talking about design, I love to pick his brain about how to become more healthy and fit, and he is very generous with his advice and the lessons learned during his training. One day I noticed that he is filling a huge one gallon bottle of water, and I could not resist to ask why. He explained that he needs to drink more than a gallon of water everyday, and that without measuring how much water he consumed, at the end of the day he's not sure if he hit his goal or not. I was intrigued, and decided to see how much water I drank everyday, even though I had no intention of matching his consumption. I bought a 1 liter bottle of water, and set to drink 3 liters of water a day, as the  Mayo Clinic recommends . To my surprise I discovered that I am no where near the recommended quantity, even after factoring in the incidental drinks I consume everyday...

Hungry for Change -- the documentary

Documentaries about food and health are almost always controversial, especially if they include a view on dieting and weight loss. They end up espousing a myopic view of how to lose weight and be healthy, and lose the viewer who is a long time skeptic after seeing a lot of fad diets come and go. The documentary "Hungry for Change" was a pleasant change. It focused on giving out balanced information on how the US as a nation has a high percentage of obese individuals, despite all the health awareness, and diets in circulations. The premise of the documentary is that we have strayed from eating the foods our bodies evolved with through million of years to consuming highly processed foods, and if we change that by eating less processed foods, we'd have a better health. The documentary starts with some eye-opening highlights: Supermarket foods are engineered to have a long shelf life, to be appealing and addictive, and be not fulfilling so that we buy more The proto...

Enterprise Data Workflows with Cascading, by Paco Nathan, O'Reilly Media

For people interested in developing Hadoop analytic applications there is a plethora of options. The options range from writing low-level, hand-tuned Java map-reduce code, to using a higher level language to manipulate the data such as Pig and Hive. There are pros and cons for each option. For the first, the code becomes complex for anything other than the canonical word-count example, and for the latter, to do anything meaningful, you almost always end up augmenting the higher level language with user-defined functions written in a different language to regain power and flexibility, causing maintenance nightmares. A happy medium in between is to use one of the data-flow libraries for Hadoop, of which Cascading is one. Since Cascading has been around for some time, the online documentation is relatively mature, and includes a gentle introduction to the library, with example source code, and a well written user's guide. However this does not obviate the need for a book that desc...

Compiling the Firefox codebase

Out of curiosity, I decided to take a look at the Firefox codebase, and compile it on my Mac. Mozilla's developer pages are great, with elaborate instructions on how to get the source code from the mercurial repository, to compiling and running the codebase on various platforms. You can find the details at: the Mozilla developer guide , and on Mac OS X they are as simple as: Get the source code from mercurial repository hg clone https://hg.mozilla.org/mozilla-central Install a specific version of autoconf (2.13) brew tap homebrew/versions brew install autoconf213 Build Firefox cd mozilla-central ./mach ./mach build The build took roughly 2 hours to finish on my MacBook Air. Run ./mach run The resulting build is similar to Firefox nightly, and includes all the bleeding edge features and instabilities, but is great for tinkering.

Back to Firefox

I have been using Chrome as my primary browser ever since it first came out, and have been pretty pleased with it. At the time I switched from Firefox because Chrome was the faster browser, and arguably had fewer memory leaks, and with its growing ecosystem of extensions and applications, I never felt the need to use any other browser. However, lately I started having problems accessing some legacy sites that I needed for work, that employ Java for some of the content, and starting or joining WebEx meetings. Both problems are due to the fact that Chrome is a 32-bit browser, and the available Java and WebEx plugins are 64-bit for the Mac. Since Safari is a 64-bit browser, I used it for a bit as my backup browser to launch WebEx meetings, and access the legacy websites, but it was a minor inconvenience to use two browsers. A friend sold me back on Firefox, with the cross-device sync feature--one that I heavily love on Chrome, the tab groups feature, and the recent memory leak fixes....