FERDY CHRISTANT - MAR 26, 2014 (08:51:49 PM)
I'm entering the world of Android. As of last weekend I own a Nexus 7 tablet.
I didn't really buy it as a personal device, as some kind of 'switch'. Rather I bought it so that I can test websites on it, notably JungleDragon. Furthermore, not having any experience with Android in an Android-dominated world just feels wrong.
Another important motivator is the price of this Nexus. I paid a mere 220 euro for it, whilst it is considered one of the best Android tablets around. In fact, due to this device I am able to cancel my subscription to BrowserStack (which I use to test my websites on various devices). As a result, I will be earning back the (low) price of this device in about a year.
I'm not going to do a full review of the device, I only just got it, and it's been reviewed all over, since it's a 2013 device. Rather, here's just a few notes and early impressions. Take into account that I'm coming from iOS, iPhone and iPad in the past years.
Hardware-wise, I've never handled such a small tablet so it feels weird to me, smaller than I expected. In fact, it even fits in the front pocket of my jeans, although that does look ridiculous. This one is definitely going with me on travels. The back of the device is an unimpressive plastic, but still feels good. I'm not inclined to immediately put a cover around it, it's a practical build quality.
The shape of the device is odd, in that it is very tall and narrow. The aspect ratio is off, which is my main critic on the Nexus. More on that in a minute. It has a camera, which is crap, but that too is OK. It's positive that it at least has one for practical things, such as scanning a document.
The hardware buttons on the device are poorly designed in my opinion. The power on button is on the side but doesn't really stick out of the device much, it's hard to 'feel' it. As it is black just like the rest of the device, you can't easily see it either. I am sure that with practice I'll get used to it.
By far the most impressive feature of the device is its screen. Although in a strange aspect ratio it packs an impressive 1900 x 1200 resolution. It has excellent color reproduction, and wonderful brightness even outside. The screen alone makes you wonder how they can produce this at such a price point. It is awesome allround, for movies, photos, the web, games, everything.
A great screen requires powerful hardware, and here too the Nexus does not dissapoint. Watching video in full HD works fluently, playing heavy games is no issue, I've yet to encounter the first stutter in such scenarios. The sound, although unimportant on a tablet in my opinion, is at least perceived to be better than on any iPad.
Hardware-wise, this thing is top notch at an incredible price. There's only one big negative sticking out in my experience: the aspect ratio. The device really is too tall and narrow. This typically frustrates web browsing. Either you get a very narrow view that is tall, or you get a very low view that is extremely wide. Both classic websites and responsive websites suffer from the weird aspect ratio. I've also experienced the issue in gaming, where in landscape mode whilst holding the device, I can barely reach the middle of the screen, because it is just too wide.
In my case, this device is a great purchase either way, since I bought it for different reasons. Plus, the low price makes me forgiving.
As this is my first step into the Android world as well, hereby some early experiences, again coming from years of iOS usage:
- At a very high level (helicopter view) the differences are subtle. After an hour or so I could find my way around and do everything (and more) that I was used to doing on iOS.
- This particular device, truly is a Google device, in that it makes me uncomfortable. It comes packed with a lot of services that collect all kinds of stuff from me. It deeply integrates with Google+ whether I want to or not. It syncs my photos automatically to Google Drive, unless I disable that. I'm finding myself having to take a deep dive into all these settings just to feel safe, and that's not right.
- I find it refreshing that I can just connect the Nexus to my PC and move stuff in between, without needing iTunes crap.
- The Google Play store has plenty of choice, all the big apps are there. That said, there's definitely far less tablet-optimized apps compared to the App Store. Furthermore, overall the applications seem more crappy. That said, it's fun to find apps in the Play Store that are not in the App Store.
- One huge critic I have on the Play store is privacy (and related, security). Many applications requests a zillion permissions before installing, with no way that I know of disable individual permissions. It disgusts me for example what Facebook asks for: access to all your phone numbers, your text messages, the ability to change your wallpaper (really?), the list does not even fit on 2 screens. This isn't a subtle privacy grey area, it is an all-out attack on personal data.
- Notifications I find to be overwhelming. Nobody asked me anything yet there's an avalanche of updates constantly bugging me in the top menu bar. I have to look into how to optimize this, I'm sure it's possible, but the default state is not very clean.
- Performance-wise, I feel that as an Android user I have more responsibility in managing system resources (notably closing apps), than is the case on iOS. It's more like an open PC than a closed platform like iOS. So far it's a managable problem though.
- I'm dissapointed by Android browsers, in particular their performance. Although this depends on the device, browser and website, in general it lags and stutters, unlike any other feature on this device. That must mean it's in Android itself or in the browsers. Even Chrome really sucks compared to the performance I am used to in mobile Safari (which I don't even find a good browser at all).
So far for my early impressions of both the Nexus 7 and Android. Note that although I have addressed some negative points about Android, do take them with a grain of salt. None (except the privacy issues) are deal breakers, and overall I am finding it to be a fairly mature and very powerful platform. It has issues but most are managable.
On battery life, it's too early to tell right now. I did notice I had to recharge after 2 days of mild usage, yet I did play around with some energy sucking stuff whilst having the screen on a high brightness level.
The end verdict is simple: it's hard to go wrong with the Nexus 7 at this price point. You get insanely good hardware on the cheap, with a world-class screen and a powerful OS. It's great as a main device, as a 2nd device (maybe for the kids), a great device to take on travel, and a great device to just test Android.
FERDY CHRISTANT - MAR 25, 2014 (06:34:42 PM)
Last weekend Google's play store in the Netherlands release two new devices for sale: the ChromeCast and the Nexus 7. I ordered both, this post is a very brief review of the Chromecast. There's not that much to say about it, and I'm sure you'll find better reviews elsewhere.
Installation is simple: just plug the ChromeCast into a free HDMI IN port on your display and connect the power adapter (I actually did not even realize the ChromeCast needed its own power supply, so take note). It's a fairly lenghty device so be sure to research how your ports are positioned. If it does not fit, there's an optional HDMI cable extender included.
After the hardware installation, you switch your display to the port you plugged it in, if this did not yet happen automatically. Next, you simply follow the steps on screen to get the software and network setup in order.
Assuming all went correctly, you can then start casting. There's a handful of apps that support it, of which Youtube and Netflix are the most valuable in my opinion, the other apps being lesser known or oriented on the US only.
Casting happens from within those apps, it's not an OS function. You can do it from a smartphone, tablet on most platforms, iOS and Android at the very least. In the supported apps, you will find the cast icon, a TV with a radio signal. After clicking that, you select your uniquely named Chromecast device, and that's it, whatever you were playing, is now playing on the TV.
The picture quality and refresh rate for Youtube and Netflix is excellent, I can't tell any difference between more native playing.
I was wondering if you could also cast from a desktop that only has ethernet (no wifi). That works. The trick is to not run the setup there, as you did it elsewhere already. This is somewhat confusing, or so it was to me.
I also did a test from my work laptop, to see if I can cast my browser on the screen. Chrome supports a beta plugin to cast a tab. It works, but very poorly, there's a lag of 2-3 seconds, and the image quality is very poor. When you stop moving, there's another lag of a few seconds to render the still in high quality. In this state browsing on the TV is unusable. I hope it improves soon. Here's a photo of my very website www.jungledragon.com cast on our TV:
Another caveat is that the ChromeCast is not very stable. Only one day after my initial test it stopped working and only a power reset got it back up and running. I should not complain about that too much for this low price, but I'm getting quite tired of tech crashing on me (I'm talking about TVs and related devices...they should just work).
That's it for my little review of the ChromeCast. My end verdict is that this is an excellent solution to cast Youtube and Netflix, and for anything else...keep your expectations low.
FERDY CHRISTANT - MAR 24, 2014 (08:16:13 PM)
It's been quiet over here for the past 3 weeks, yet I have been continuing JungleDragon development. I worked on a few miscellaneous items to improve usability and consistency. They are subtle improvements, yet took a lot of time to develop due to various browser quirks.
Sticky headers and smooth scrolling
The most important update is in JungleDragon's header navigation. Allow me to explain the problem:
Above is JungleDragon's homepage on a smartphone. The dilemma is that there's a fight for vertical space: we'd like some navigation to be permanently visible, having fixed positioning. But it should not be too much, as there needs to be space for the content as well. At the same time, we don't want to hide content from mobile users just because they are on mobile.
In the above situation, I'd like the primary navigation (green) to always be visible. I'd also like secondary navigation (dark brown) to be permanently visible. The header message (light brown) sits in between. I don't want to hide it, but it should not be permanently on screen either.
Before this update, I used to hide that message alltogether on mobile. Because I had no way to make that secondary navigation 'stick' as there was dynamic content above it. But it gets worse. The above is only one of many navigation variations. Some pages may have tertiary navigation or a special type of header. I ended up with many fixed positioning hacks based on the page and the size of the viewport, all the while hiding essential content from mobile users.
If none of the above makes sense, it will become clear in this video:
Pay particular attention to the beginning of the video. Note that as we slowly scroll down, primary navigation (green) is sticky. The "hero" message in light brown is there (which is good) yet scrolls below the primary sticky navigation. Then, as that message is scrolled away entirely, the secondary navigation (dark brown) becomes sticky. Finally, the actual content flows below both the sticky primary and secondary navigation.
If you're wondering what the big deal is, good. It makes sense and feels natural. Yet it brings both me and users great benefits:
- This behavior is now consistent across all pages and across all devices
- I no longer have to hide things or worry about content messages taking up too much space, you just scroll them away
- My code for navigation is drastically simplified, more consistent and easier to test
For the technically interested, I'm making use of the bleeding-edge CSS property position:sticky, which has little support. Therefore, I'm using this fallback in case the device does not support it.
Smooth momentum scrolling
The 2nd update concerns scrolling behavior on touch devices. You can see it in the 2nd half of the video. If you have an iOS device (iPhone, iPod, iPad) you are used to the behavior of momentum scrolling (also called inertial scrolling) even if you're not aware of it. Momentum scrolling means that when you swipe on the screen, it will not stop scrolling when you let go. Instead, the page keeps scrolling and eventually slow down. It will do that based on the speed at which you swiped. This behavior feels natural, and you'll see it everywhere in native apps.
But not in the browser. There by default the behavior is different. Scrolling stops after you let go. So scrolling long pages is more laboursome. Not anymore, JungleDragon now has momentum scrolling enabled. It's hard to demonstrate in a video, but it's butter smooth, and makes JungleDragon feel more like a native app. It's a world of difference.
Note that on other platforms, particularly Android, momentum scrolling is the default in browsers. So you'll get it there as well. Unfortunately, the smoothness is not as good as on Mobile Safari, but over time that will improve.
For the technically interested, enabling this on a website starts with enabling -webkit-overflow-scrolling: touch; on the HTML element. Unfortunately, that can have a lot of side effects, such as slow repaints and gaps in your page. It took me forever to get it right.
Fastclick - failed
The 3rd update is one I actually cancelled, but I'd like to share it anyway. Some mobile browsers have a 300ms delay before any touch action you perform gets executed. The reason for that is that browser is waiting if perhaps a 2nd touch action occurs, for example in case you use 2 fingers to zoom in on something.
Whilst that delay does not seem like much, it's actually quite huge. It's one of the reasons why people perceive native apps to be so much faster than mobile websites.
There's a well-known way to remove that delay, it's called FastClick. I tried to implement it, but unfortunately, there's too many side effects that I cannot solve at this point.
I have optimized the use of space for many headers by floating elements when there is space for it:
In the above tags screen, you can see how the header message and search box are on a single line, where before the search box was placed in the page itself, taking up an additional line. The reason I can float them now, is that I'm always showing the header, even on mobile.
In the above screen, the viewport is getting to narrow, and the header message takes up 2 lines. However, because of the sticky scrolling, this no longer is an issue, you can just scroll it away.
I've optimized all headers throughout JungleDragon, saving precious vertical spacing.
Zooming - still here!
This is more of a technical update. One common issue on mobile Safari is that when you focus on an input field, it zooms the entire page, breaking the layout. I used to have a hack for that to prevent that, yet it had side effects.
I have now found a much better solution to avoid the issue, whilst maintaining JungleDragon's ability to zoom into any page on touch devices. For the record, many web developers simply disable zooming alltogether to avoid the issue, but I find that to be a shortcut, hampering accessibility.
Wildlife renamed to species
A small update: in the global navigation "Wildlife" is renamed to "Species". To some users, it was not clear what the difference is between a photo of a species and a species records. Hopefully this makes it more clear.
Self-hosting of icon fonts
Another technical update. JungleDragon makes use of an icon font called "FontAwesome". If the loading of this font fails, JungleDragon looks awful and is hard to use, therefore it is essential that this loading is robust. I used to host these fonts at Amazon S3 but have now moved them back to my own domain. This avoids issues in particular edge cases, such as Firefox for Android.
Speaking of Firefox for Android, here's proof that they load correctly there:
In landscape mode:
Entering the Android world
There's a specific reason why I shared the above screenshots. As of last weekend, I am the owner of my first Android device, a Nexus 7 (I'll post some device experiences soon). The Nexus 7 has a gorgeous, ultra-high PPI screen and I can tell you, JungleDragon looks awesome on it!
The bigger point, though, is that as of now, I'll include at least some Android testing whenever I develop on JungleDragon.
The above set of updates are subtle, yet took a lot of effort due to the state of mobile browsers. Still, some of these updates are real breakthroughs to me, in providing a consistent, smooth experience to you, whilst also having maintainable code on my end.
As for next steps, I have a few more mobile optimizations to implement and a few more bugs to solve. Meanwhile, I'm still planning to deliver an awesome new mapping feature soon, but I'm still waiting on the data there (I paid somebody to collect mapping data).
I hope you appreciate these updates. Better yet, I hope you barely notice them, as a sign that they come across as complelety natural.
FERDY CHRISTANT - MAR 7, 2014 (07:36:16 PM)
I'm working on maps 2.0, a series of updates to improve JungleDragon's mapping features. During the last weeks I worked on an unexpected feature: a daylight (and darkness) planner that allows one to plan light conditions ahead of time. It started as an experiment and evolved into an increasingly useful and powerful tool.
Today I'm sharing the last update to the daylight planner for a while. I can think of several more improvements, but one has to draw a line somewhere. This update is about one thing only: mobile.
The daylight planner uses a fullscreen Google map. Google maps on mobile truly sucks, they present several usability issues. The fact that JungleDragon's daylight planner adds several visual controls to that, makes the mobile experience even worse, and frankly just not usable.
Mobile needs a different approach. There just isn't enough space and performance to do the full desktop experience. Therefore I came up with a highly simplified daylight planner, just for mobile. As a reminder, here's the desktop experience:
And here's the mobile viewing, meaning, it's the exact same web address as above, yet rendered on an iPhone:
As you can see, I got rid of the map entirely, and of most controls. It simply prints a table with the important light phases of the current day, and of the current location. Using the arrows near the header you can go back or forward a day.
The idea on mobile is that it is more of a viewer than it is a planner. In the field you can check it as a quick reminder. Another possible scenario is that you plan the photo trip on your desktop, and from there add it to your calendar. Next, you're in the field and open your calendar and click the link inside it. This will take you to the exact moment and location that you had planned. Here's a full height screenshot:
The screenshot shows that next to the daylight phases, the table ends with the moon's illumination.
This solution may be simple, but it is usable, the other one was not. That said, if you want to do advanced daylight planning on mobile, you are probably better served by dedicated apps for that.
As said, I'll leave the daylight planner as "complete" for now. This does not complete the "maps 2.0" initiative yet. I still have one awesome feature to release, yet the data I depend on has been delayed somewhat.
FERDY CHRISTANT - MAR 2, 2014 (02:16:29 PM)
Yesterday I announced some cool improvements to JungleDragon's daylight planner, notably the inclusion of the sun's angle and a light pollution toggle. Today I have one more update, one that is slightly bizarre. It is in fact based upon an idea submitted by Bas Peters:
"I can think of one useful feature for the daylight overlay. With the timestamp of a submitted photo, you could visualize the light condition at that particular moment on the given location. This gives a little more insight in the shooting conditions :)"
That's a great idea, one I did not think of yet. Think of it, we know the location, we know the time, so using the daylight planner, we will know the type of light during the moment when the photo was captured. But it gets better, since as of yesterday, we also know the sun's angle, we can actually reconstruct the total light situation.
It's like reliving the past. Allow me to give you 2 examples:
Above is a photo of a mountain range in Isola, Madagascar, taken in 2012. On JungleDragon photo pages, there's always a sidebar showing metadata about the photo. Like this:
We know who took the photo, when it was taken, when it was uploaded, where it was taken and using what camera settings. Yet, as of today, one extra nugget of information is added. Note how below the map, there is a link "View light conditions of this photo". Let's click it:
That seems to work. The daylight planner has rewinded back as far as September 10, 2012. At the time of the photo, it was close to sunset. The night map as well as the time panel indicate this, we were in the golden hour. Let us go deeper though:
We have zoomed in significantly, without changing the time or location. We were standing at the marker's position. The sun is shining from the west (it is setting). Between us and the sun is a rock formation that you can see on the map. This rock formation is the famous "Isola Window", a gapped rock where exactly at sunset, the light peaks through the holes. Several tourists come to the middle of nowhere for just that moment.
Looking at the actual photo I took though, the light is in my back. That means I took a photo in the opposing direction, stubborn as I am. Where did I point to? I've drawn that on the map, using the red line. To be clear, that line is Photoshopped, the daylight planner does not know the location of your subject. Yet from the combination of data that we have, we can reconstruct the situation. It's quite fun to reconstruct your memory from your own photos, but also great to learn from others.
Side note: I have enabled street view on the map. It will usually not work in off-road situations, but in the cases where it does work, you could even get a 3D look at the situation.
A 2nd example:
See above. This a Chameleon in Madagascar at night, found in the bushes during a night tour. The flash lits up the dew beautifully. Let's see what the conditions were when I took this photo:
It was dark, but only just dark. It was a tour by foot, one we squeezed in just before dinner. And it was on a paved road with dense bushes on each side, as the map shows.
I remember from that tour that it was the three of us, my girl and me, and the guide. We were navigating the thick bushes with our flash lights, looking for shapes slightly lighter green than the bushes, as those are the chameleons. I had the idea to check out the bushes on the other side of the road, to cover more ground, as a team.
Our guide told me that I would not find anything, as chameleons (cold-blooded as they are) will always settle for the night on the side of the road where the sun last shone, as it is warmer there.
Where did that sun really last shone on the road above? For that, all we need to do is rewind the daylight planner to the moment just before sunset:
Look at the angle of the sun, about one hour before we took the photo. It clearly shone last on the right side of the road (as seen from a top view). So I've checked the dozens of photos in this series, and what do you know, all spottings came from that side of the road. The guide was right, and the data backs it all up.
The past, only possible in the future
This new feature comes with a one-time limitation: it is only going to work on photos uploaded as of now. The reason for that is that it requires a GPSTimeStamp, which is an attribute I did not store until now. In addition, it is only going to work on photos that have all of the 4 below attributes set in EXIF date:
- GPS Latitude
- GPS Longitude
- GPS DateStamp (GMT/UTC)
- GPS TimeStamp (GMT/UTC)