A couple of weeks ago, I attended the 2014 Chrome Dev Summit at Google HQ. It was a good opportunity to get a one-day whirlwind tour of a number of upcoming technologies that are changing the way web applications are built in very significant ways.
I had briefly read about Web Components before, but hadn’t gone into too much depth because the lack of broad browser support at the time had made it an impractical choice to do anything real with. I also distinctly remember that the first time I read about it, the use of custom elements had made me somewhat uncomfortable; maybe it was the purist in me that made me feel like they were somehow “polluting” the “standard” HTML markup that we have come to know and love for so long.
But then, as I sat through Dmitri Glazkov’s excellent presentation at the Summit, I became fairly convinced that Web Components are, indeed, a significant and much-needed step forward for web application development. If you, too, are on the fence, I highly recommend watching the talk to see why it changed my mind. Weighing in at just 25 minutes, it’s a fairly succinct (and entertaining) look at how the four parts of Web Components - Custom Elements, HTML Imports, Templates, and the Shadow DOM - make effective code reuse and composition possible on the web.
For me, the use of the Shadow DOM to allow reusable components to be isolated is the most interesting aspect. This three part series of posts on HTML5Rocks provides a great introduction to how it works, and what it makes possible.
Now that browser support for Web Components (without the use of polyfills) is growing, I plan to spend more time digging deeper into how I can start taking advantage of these new capabilities to build sensibly structured and maintainable web applications.
A few months ago, Divya and I decided that we needed a shared to-do list to keep track of all the little things that we need to remember. We wanted something that we would primarily use on our iPhones, but we also wanted the ability to update things from anywhere else. Fast and reliable synchronization across devices was the paramount requirement -- if you've ever had a shared to-do list go out of sync, you know how frustrating it can be.
So we tried a handful of different options, including Apple's own Reminders app (with remarkably unreliable iCloud sync), Wunderlist, Any.do, and a few others. And an unexpected winner emerged - Trello.
Described as an "online collaboration tool," Trello is generally viewed as a simplified project management app. But its customizability also makes it an excellent, flexible shared to-do list that you can fit almost exactly to your needs. It also happens to be the most robust at synchronizing between devices, and updates propagate almost instantly.
A default Trello "board" consists of three "lists" - To Do, Doing, and Done. We started out using this default setup for our shared to-do list, and it worked reasonably well, but there were a couple of problems. First, the "Doing" list wasn't particularly useful to us, because unlike longer-running tasks in software projects, most tasks in the context of personal to-do lists tend to be fairly quick to complete. So we nuked that list. And then our "To Do" list started getting quite lengthy, because we didn't have a nice way to separate out things that needed immediate attention from less important things that we could push off until later.
So we changed things up, and here's what we ended up with (inspired, in part, by the excellent Mailbox app's "Snooze" options):
- The "Immediate" list: Things that need to get done today/tomorrow.
- The "Later This Week" list: Things that need to get done within a week's time.
- The "Some Day" list: Things that are not urgent and can be picked up at any time.
- The "Things to Buy" list: Self-explanatory -- a running list of things we need to buy.
It works sort of like a Kanban board, where we pick up items from the "less important" buckets as we finish up the ones that have higher priority.
This set up has been working really well for us (and it's almost made mundane chores fun!), so I thought I'd share. :)
So Apple released the final build of iOS 7 a week ago. Since then, a handful of people have asked me what I think about it, and whether or not they should update. This doesn't come as much of a surprise to me, because iOS 7 has been somewhat controversial ever since Apple gave the world a sneak peek several months ago.
The most polarizing aspect of the new OS is, of course, its new look. I have to admit -- when I first saw screenshots on Apple's site after it was initially announced, I had mixed feelings. And I still do. While I think that the new home screen icons could have been a bit more polished and consistent (hey, Mobile Safari, I'm looking at you!), I've begun to warm up to the rest of the overall look-and-feel. It feels much cleaner, especially once you move beyond the home screen into apps like Mail, Safari, Calendar, Weather, etc. Third-party apps that haven't been updated yet are already starting to feel old, crufty, and out-of-place after a couple of weeks.
Even moving past the visual changes, there's a lot to like in iOS 7. Quick access to commonly used functions like Airplane Mode, WiFi, brightness, etc. through the Control Center has already become an indispensable feature for me, and I've relegated the Settings icon to my last home screen since I almost never need it anymore. The new multi-tasking app switcher is a significant improvement over the little row of icons that iOS 6 had. Peer-to-peer file sharing through AirDrop is super-easy to use, and the only thing that baffles me about it is that Apple hasn't made it compatible with the AirDrop feature in Mac OS X (...a Mavericks feature, maybe?). The ability to natively block spam text messages and unwanted calls from telemarketers is another welcome addition. The new Mobile Safari app is so good that I haven't felt the need to re-download Chrome from the App Store. The list of improvements and little tweaks goes on and on, and it's actually fun to discover them as you poke around all the corners of the new OS after you've upgraded.
On the flip side, there are also annoyances (besides the aforementioned home screen icon blues). For me, the biggest one relates to poor use of animation effects -- I honestly believe that Apple went overboard with the fade-in effect when turning on the phone, and the icons-flying-in effect when the device is unlocked. It looked kinda cool the first few times, but now I just want the effects to get out of the way so that I can actually start using my phone faster. I really hope that Apple tones this down in the next update; it happened with the "genie effect" on OS X, so I'm hoping they'll learn from this mistake too.
So, should you update then? I'd say yes, absolutely, but realize that things may not be perfect. Give the visual changes a couple of weeks to sink in and let them grow on you. Once you're past that, the rest of it is pretty great. :)
2012 was a year of no new blog posts. But it was also one of the most eventful years I've had in a long time.
The new year had started out much like the year before it. I had settled into a comfortable routine of sorts, but one that had started making me uncomfortable. I had been at Morgan Stanley for more than four years, and I had learned a lot during my time there, but a sense of disillusionment and a desire to do something else had been gnawing away at me, and that feeling was becoming impossible to ignore.
Fast forward to May, and I was sitting in a conference room overlooking Millennium Park on the 25th floor of a building in downtown Chicago for my first week of orientation as a ThoughtWorker. I would be based out of the New York office, but I'd be traveling during the week to various client locations across the country to work on software projects. Flying twice a week, every week. Working on completely new projects in different industries every six months or so. Things were looking good.
In the midst of all this, I had also met Divya. We had started hanging out on weekends and talking to each other quite a bit. We both really liked each other and things just clicked, so during the Labor Day weekend in September (almost exactly a year ago now), we got engaged and decided to get married in February. Things were looking even better.
It's been just over a year since all of this happened, and looking back, I find it amazing how quickly and unexpectedly my life changed over the course of those few months. It was like hitting the reboot switch and waking up to something completely different.
For the last couple of months, I've been making tiny tweaks to the design of this blog, with the intention of making it a home for my thoughts on all things -- technology, life, and miscellany, again.
It's time to get started.
As I was skimming through my feeds in Google Reader today, I paused to read this piece in the New York Times about the Indian government's plan to force internet companies like Google, Facebook, and others to pre-screen and censor content posted by users on their websites. It's ironic (and sad) that such a story would appear in a section of the Times called "Notes on the World's Largest Democracy."
What's more unfortunate is that this appears to be a growing trend across the world -- China is well-known for its "Golden Shield Project" (more appropriately known as the Great Firewall of China); Pakistan was in the news recently for its attempt to censor the contents of text messages; the SOPA bill introduced into the U.S. Congress made waves all over the web last month. The list goes on.
The internet and social media have made it possible for information to spread freely and rapidly, and corrupt politicians all over the world are terrified of the power that this puts in the hands of the people. Kapil Sibal, the acting telecommunications minister in India, openly claims that a Facebook page criticizing the Congress President, Sonia Gandhi, is "unacceptable," and that Facebook should be responsible for actively monitoring and blocking such content. Besides the obvious technical challenges involved in achieving something like this without expensive manual human intervention, the whole idea of preventing people from posting their thoughts on public forums is just plain wrong.
Kudos to Google, Facebook, et al for sticking to their guns, protecting their users, and doing the right thing.