-
Review: Monoprice Aluminum X-Form Rotatable Desktop Stand
A few weeks ago I wrote about the MobileMount and how it worked well for the iPad, but not the iPhone. After using if for the iPad for over a week, the suction cup stopped sticking and my iPad kept falling. So it looked like another failed KickStarter project (I'm a sucker for trying new things). I did like using it with my iPad as it was convenient to have my iPad easily accessible on my desk.
I started searching for an iPad stand and there are a huge number of options out there, so picking one was going to be hard. I liked being able to rotate the screen easily, so the book stand options weren't attractive. There are cheap ones and expensive ones. After much searching, I went to Monoprice.com, one of my favorite places to get cables and connectors. I saw that they had a decent selection of stands, so I picked the Aluminum X-Form Rotatable Desktop Stand.
When I opened up the stand, it looked pretty substantial for a $13 product. I put my iPad in it and started rotating the screen to see how well the connector worked holding the base to the frame. The movement is quite fluid and holds my iPad well. The stand is extremely adjustable and can be titled to many angles. The only thing it seems to be lacking is a height adjustment, but that seems minor. I've read other reviews indicating that the screws get loose over time, but that is easily rectified.
I'm quite surprised that such an inexpensive product seems so well built and so functional. As I'm working on an iPad project right now, this is really going to come in handy.
Pros
- Inexpensive (< $20 with shipping).
- Allows easy rotation.
- Angle adjustments.
- Fits my iPad 3.
Cons
- Not height adjustable.
- There is a little slop in the corners where the iPad fits into the slots.
Summary
For the price, this stand is well worth it. Monoprice seems to deliver decent products for a reasonable price. If you're looking for an iPad stand, I'd definitely check this one out. While I hate to say that things are disposable, for $20, I don't think you have much to lose. While you're shopping around Monoprice.com, check out their other items as they have a lot of things you wouldn't even have thought that you need.
-
Learning the dark side
About a year and a half ago, my manager suggested that I learn Android development, so I played around with the SDK for a few days and then got distracted by real work. Now that my role at work has changed, my manager again encouraged me to learn it and said that I could goto a class if it would help. So, this past week, I went to a class given by Big Nerd Ranch outside of Atlanta, GA. The class was quite informative, I learned a little Java and a lot more about Android than I probably needed to know.
I currently have no plans to write Android apps, but knowing a bit about it should help me better understand the other half and make it easier for me to communicate with my Android counterparts.
The biggest thing that I think is a stumbling block for learning Android is the development tools. Many developers use the Eclipse IDE. Any iOS developer that complains about Xcode, needs to use Eclipse for a day. Eclipse and the Android tools are extremely unpolished, buggy, and hacky. I've realized that this is probably the reason I didn't get very far in the past; I like high quality developer tools and they just don't seem to exist for Android.
Is it a telling sign that the instructor carries an iPhone?
-
Marketing doesn't meet reality
While it should come as no surprise to anyone, marketing departments usually aren't very technical. Today I was reading an article about slow Internet performance and it sparked me to test my connection. I'm getting about 15-20 Mbps down and about 1 Mbps up. Unfortunately I have no idea what I pay for as the plan I'm on is so old, it isn't listed on Time Warner's website. I did, however, goto their website to see the current offerings and saw this table.
Obviously they want you to purchase the Ultimate Internet experience and getting 50 Mbps would be nice, but is it really true that with up to 10 Mbps you can't watch streaming movies, video conference, or use multiple devices in your house? Netflix recommends 5 Mbps for HD streaming. We watch Netflix all the time, have a ton of devices connected, do video conferencing and do VOIP over our connection. According to Time Warner's marketing department, we should have one of the top two tiers of service.
I'd love to get a faster connection, but is it worth the money? If I were in Kansas City, I'd sign up for Google's gigabit service in a heartbeat, but going from about 20 Mbps to 30 or 50, would I be able to justify the cost? Time Warner won't tell you on their website the exact cost, but if you build a bundle, the Standard Internet (10 Mbps) is $40/month and the Turbo Internet (20 Mbps) is $53/month. Currently I pay $50/month for my service.
-
Struggling with graphics
One area of writing code that I've never been good at is graphics. I partially attribute this to my lack of artistic ability, but also my distaste for advanced math. For the last day, I've been working on a problem to rotate some buttons and move the buttons at the same time. Rotating the buttons is easy:
self.myButton.transform = CGAffineTransformRotate(flashTransform, degrees * M_PI/180);
Moving the button turned out to be hard for me. I tried all kinds of translations and transforms, but came up with nothing. The transforms are matrix math and that just makes me want to turn the other way and run. I searched and searched, tried different things, stayed up late and still couldn't solve it. This morning I was chatting with a colleague and he suggested just to do the rotation which I knew how to do and then move the buttons. OK, that seemed simple and I know I had tried it. Turns out you can't move a view using the frame property if there is a non-identity transform on it; however, you can set the center which is just as good, but requires a small extra step. You have to convert the origin point you want to the center.
CGPoint center; center.x = newOrigin.x + self.button.bounds.size.width / 2; center.y = newOrigin.y + self.button.bounds.size.height / 2;
Definitely not hard to do, but it tripped me up. The other thing that tripped me up is that in order to resize the button, you have to use the bounds and not the frame if a transform is applied. So with those 2 hints, I was able to finish my task in about 15 minutes. Hopefully next time I won't be so thick header about this.