Wednesday, September 4, 2013

Gadget History with the Galaxy Gear Smartwatch

Gadgets are proliferating again. When smartphones were first introduced in the early 2000s, they promised to reduce the gadgets we all have to tote around. Instead of carrying a GPS, cell phone, MP3 player, and flashlight (because one of the first apps for all smartphones is inevitably a flashlight app), all these devices consolidate into a single one. Then came the tablet and e-reader. They supposed to target a different market, substituting for laptops and physical books. Now comes the beginning of what may be a bevy of smartwatch announcements with the Galaxy Gear Smartwatch from Samsung, despite a number of smartwatches being introduced years before. Don't forget Google Glass. Looks like we've moved from carrying around a lot of cheap gadgets each of which have limited capabilities to carrying around a lot of expensive gadgets each of which have extensive and potentially overlapping capabilities. This is great for advertising brokers. Now they can push ads to you on multiple screens. They might even figure out how to make the ad experience across gadgets seamless under the guise of enabling you to continue where you left off on another device.

Galaxy Gear boasts 70 native Android apps that can run on its 315 mah battery. From the looks of things, there is a good sampling of phototaking and fitness apps. For fitness, wearable tech isn't uncharted territory. Companies have been linking heartbeat monitors, pedometers, and such to portable consumer electronic devices for a while, first with the mp3 players, then with phones. What is really the killer app here?

Friday, August 2, 2013

C++ Parsing Gotchas

C++ is a complicated language. Even just parsing the language is troublesome. Scott Meyer included the most vexing parse as part of his Effective STL book (Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library ). Recently, I encountered another parse issue that ultimately warranted new syntax in recent C++ revisions: the dependent type parse. The idea is simple, type names and value names (i.e., functions or variables) may overlap. That is to say, one might have a type t and a function or variable t in the same namespace. Thus, the parser has to disambiguate. This potential overlap comes up when parsing dependent type names (e.g., set<T>::iterator). Specifically, when declaring a function with a dependent type parameter such as void f(set>T<::iterator I), the compiler will complain that the keyword typename must be inserted in front of the whole dependent type name. Thus, void f(typename set>T<::iterator I) compiles.

What C++ parse gotchas have you encountered?

Thursday, July 25, 2013

Quality of Computer Science Higher-Education, Part 1

A recent discussion about H1-B quotas and tech workers on Hacker News brought up a very interesting question for me. The observation is that US companies are finding it hard to staff programming positions. Some comments suggested that higher-education is producing a lot of unqualified graduates. There was also a claim that the quality of CS education has declined substantially. Having been on three sides alluded to in this discourse, doing the hiring, teaching, and job-seeking, I thought it would be interesting to see what data we have and what we can glean from the said data.

Aside: I like to collect some data on the whole fizzbuzz phenomenon (i.e., the majority of job applicants not being able to program fizzbuzz). If you like to contribute your perspective and see the aggregate results of where the skills gap is, please consider taking my survey.

Tuesday, July 23, 2013

Munis

Over the past few months, munis have a hit hard, very hard. Even after the mild recovery since the end of June, index funds such as MUB (duration 7.17 yrs, distribution yield 2.97%) are down in excess of 7% YTD. High-yield munis, HYMB (duration 12.02 yrs, distribution yield 5.89%), are taking it even worse with a YTD drawdown of almost 12%. In a perfect storm of rising yields, illiquidity, high redemptions, and a default from Detroit to boot, munis are facing considerable challenges. HYMB, especially, is exhibiting considerable discount to NAV at the 3-5% level. Unfortunately, as others have noted, for highly illiquid assets such as muni bonds, the market price might actually be more accurate than the NAV. That said, even with the Detroit bankruptcy, which has been thrown back into court, the credit impact on HYMB should be muted as Detroit only comprises 1.33% of NAV and even all of Michigan only 3.53%. There is, however, the risk of other municipalities defaulting, but that risk has been there for a while. Note that muni bonds typically have high recovery rates (as high as 68%). The remaining headwinds of rising rates and redemptions will likely be challenging enough for the muni market. As the economy recovers and state coffers get replenished, the credit spread ought to tighten, but whether enough to counter the effect of rising rates is another question.