42 karma · joined April 4, 2016
-Loud fan. With all of its (considerable) horsepower, it can get quite hot. Even when simply booting up or writing a document in Word, the fan is on almost constantly and very audible.
-Keyboard quality. The coating on the keyboard has already started peeling off after 1.5 years of mild use.
-Big and heavy power brick that gets extremely hot.
-Random buggy hardware issues. The webcam stopped working after updating Windows, and I haven't been able to get it working since. The trackpad is HORRIBLE and buggy. Maybe it's because Apple's trackpad has spoiled me, but going from apple's trackpad to Asus' was probably the single most frustrating thing. It's terribly inaccurate, doesn't understand multi-gestures, and worst of all, there's this weird cursor jitter when you touch the trackpad without being electrically grounded. I'm serious. If I want to accurately place my cursor over something, I have to be touching the laptop's aluminum chassis or else the cursor starts spasming.
The overall build quality just cannot be compared to Apple's. Even the mini Sub Woofer my Zenbook came with started working intermittently and I discovered that the port it connected to came loose for no apparent reason. The same thing happened to one of the USB ports.
Oh, and this was all after going throught he trouble of RMA'ing the first one for harddrive failure.
For a higher end, premium priced laptop I really expected better.
In some of the more popular microservice frameworks for instance, I see some attempts to build abstractions for things like data persistence -(what if we want to swap out Postgres for Mongo, etc?) But I think that's a good example of a needless abstraction. In fact by building an abstraction like that, you lose many of the features that perhaps made that specific database so great in the first place.
It seems to be easier to mentally justify logic duplication in the hardware world. An FPGA is an abstraction of logic. In general, it trades off performance for more flexibility. An ASIC is specifically designed from the ground up to do one task very well, but deviate from that task and it's borderline useless. I think that for microservices, code should be treated more like ASICs. One off, application specific code that we won't be afraid to throwaway and rewrite from scratch if we need to.