Good and Bad about Samsung Galaxy S4 and Android

Few months ago wrote a blog (more like rants) about Samsung Galaxy S4. Now that I spent little bit more time on it, here is some more about the phone.

The good

  • Camera: By far best camera among all I have seen in any smart phone. It takes amazing pictures and great options. I almost stopped using my standalone camera.
  • Widgets: Love the widgets like Alarm, Stocks so on where I can see details without opening them.
  • Google Now: Very convenient and very cool but a bit scary that Google is going through all my stuff.
  • Customization: Like the ability to customize things like keyboard, sounds etc.
  • Display: Pretty cool display. I might even go as far to say better than iPhone.

The bad

Unfortunately most of my previous rants still hold true. :(

  • Battery draining out fast still driving me crazy. I did all I could to reduce the running apps and other optimizations like removing transitions but it’s still pretty bad.
  • I can never get used to setting in this thing. So bad.
  • Every time I load a new app that can handle things like images, videos etc I get a dialog to pick an app when I click on a link for image/video. This drives me nuts! Why don’t Android make those apps ask instead of OS offering those options?
  • Samsung decided to put volume buttons at left side and power button to the right and both aligned, try pressing power button without changing the volume. Bad hardware design.
  • AT&T apps are so bad. AT&T should really stop developing those crappy apps for android. Apple made right decision to not allow AT&T to install their apps in iPhone. I can’t even remove those apps!
  • Text select, copy/paste etc sucks. Placing cursor at a specific location while writing an email is a tough task!

Over all, it’s not a bad phone and I am getting used to it but I do miss my old iPhone at times.

iPhone is really good at basics and Android provides lot of features and customizability at the expense of basic features.

Hope this helps to those who want to switch to Samsung/Android.

Samsung Galaxy S4

The size and scale of eBay: 2013 edition

Originally posted on Hugh E. Williams:

It’s time for an update of the eBay Marketplaces interesting statistics that I shared last year. eBay Marketplaces means we’re the team that builds ebay.comebay.co.ukebay.deebay.com.au, and most of the other worldwide marketplaces under the eBay brand.

eBay Marketplaces sold over US$75.3 billion in merchandise in 2012

eBay Marketplaces sold over US$75.3 billion in merchandise in 2012

Here are some refreshed and new facts:

  • We have over 50 petabytes of data stored in our Hadoop and Teradata clusters
  • We have over 400 million items for sale
  • We process more than 250 million user queries per day
  • We serve over 100,000 pages per second
  • Our users spend over 180 years in total every day looking at items
  • We have over 112 million active users
  • We sold over US$75 billion in merchandize in 2012

eBay’s an exciting place to be — plenty of engineering, business, and commerce challenges that are driven by users, items, traffic, and sales…

View original 4 more words

Things I hate about Samsung Galaxy S4

I am a long time iPhone user and just made a switch to Samsung Galaxy S4. This is my first Android phone.

S4 is an amazing phone at so many levels and there are so many things to love about this phone. But equally there are bunch of things in it that irritate me.

Things to love(big list) would be for some other time but here is some things I hate about this phone:

  1. Dealing with settings in general: Super complicated compared to iPhone. They are all over the place. One of the first thing I tried doing was turn off some sounds and it took a while for me. There are many other things I want to change and still working on figuring out.
  2. Notification settings are not uniform across apps: Settings for notifications for each app is at a different place and hard to get hold of them. For example, gmail app doesn’t display unread count with icon so only way you know about new email is by opening the app. I am trying to figure out a way to enable alerts, no luck yet.
  3. No unread count display support for shortcuts: No unread count display support for most of the apps like gmail, google voice, visual voicemail, WhatsApp, or any other critical apps. No idea why android don’t support this. This is major turn off.
  4. Battery drains fast: For my usage, I need to charge it at least twice a day! If i don’t use any apps then it lasts about a day or so.
  5. Too many confirmation dialogs: Oh my god…so many confirmation dialogs! “Just this once” and “Always” dialog is annoying.
  6. Too many junk apps installed by Samsung: Samsung pre-installed SO MANY Samsung and AT&T apps in this phone. May be there is a way to get rid of them but I am yet to figure out. This kinda feels like laptops from Dell with all those Dell apps and AOL pre-installs.
  7. No OS level search: One of the thing I love about iPhone is able to search for apps, emails, texts, contacts, so on from one central place. Samsung came with Google Now but it’s not as simple as iPhone in-OS search.
  8. Google voice app sucks: I have no idea why it has to be so hard to deal with this app. I have used it in iPhone and way better. Try making a voice call from Google Voice app…good luck to you there.
  9. Visual voicemail is separate app that doesn’t work well: There is no visual voice main in Phone app. For this you need to install Visual Voicemail from AT&T and by the way it sucks big time. No alerts when new voicemail!!!
  10. Facebook app has many bugs: Facebook app works exactly(almost) like iPhone’s but it has lot more bugs. For example, some times i can’t type in comments textbox!
  11. Copy/Paste/Select All/Select text is harder: Dealing with these basic actions takes a bit of getting used. May be it gets better once I use it more.

Some of these may be due to my lack of knowledge, would love to know if there are solutions or work around for above pain points.

More to come…

P.S. This is after I used it for 2 weeks and may be I’d like it more once I figure out this phone more. Obviously I still have iPhone habits so it goes without saying that I may be biased at times and I need some more learning.

P.P.S: I don’t have any plans to dump this phone so please send me tips/tricks/pointers you may have that would ease the pain points.

Samsung Galaxy S4

The Case Against Logic-less Templates

Recently I attended a conference and two separate topics related to Templates sparked a debate off-stage about Logic vs No-logic View Templates. Folks were very passionate about the side they represented. It was great to have those discussions since I learned lot more from those debates than the sessions that were presented. I really hope there are more debates than sessions in future conferences since we actually learn more by hearing multiple viewpoints.

While everyone involved in the discussion had different opinions on what the ideal templating solution should look like, we all agreed that templates should…

  • not include business logic
  • not include lot of logic
  • be easy to read
  • be easy to maintain

The rules, best practices, performance etc aside, this is what I prefer. My preferences came out of my experience dealing with templates for medium to complex applications.

Before I go into the details, I would like to make one thing very clear. While I am trying to make a case against Logic-less Templates, that does not mean that I am advocating the other extreme ie., a templating language that allows a lot of logic. I find a templating language that allows a lot of logic, especially those that allow the host programming languages to be used inside the template, to be hard to read, hard to maintain and simply a bad choice. A JSP template with Java code in it and an Underscore template with JavaScript both fall into the category of being a full-of-logic template. JSP and Underscore are not necessarily at fault here, but rather the developers who choose to abuse the additional freedom.

What I am for is “less-logic” templates in place of “logic-less” templates (thanks Veena Basavaraj(@vybs) for the term “less-logic templates”!).

A good templating language should offer, at a minimum, the following things:

  1. Clean and easy-to-read syntax (including freedom to use whitespace that will not show up in output)
  2. Structural logic like Conditionals, Iterations/Loops, Recursions etc.,
  3. Text/Token replacement
  4. Includes

A great templating language should ALSO offer the following features:

  1. Ability to be rendered on the server and the client
  2. Easy to learn with as few new concepts as possible
  3. Simple template inheritance
  4. Easily debuggable
  5. Great error reporting (line numbers, friendly messages, etc.)
  6. Extensible and customizable
  7. Localization support
  8. Resource URL management for images, scripts and CSS

I feel that a logic-less template is too rigid and hard to work with due to the imposed restrictions. Here is why I am not a big fan of logic-less templates:

  • If I am writing a logic-less template then I need to make my view model bloated with a ton of getters for the raw data. Therefore, a logic-less template is usually accompanied by a messy and difficult to maintain view model.
  • Every time I need to add a new variation to my view I need to then update both the view model and the template (even for simple variations)
  • Too much “massaging” of the data is required to get it ready for the template
  • A lot of helper methods must be added to offset the rules of a logic-less template

Regarding the argument of better performance with logic-less templates– while  logic-less templates might have a simpler implementation, you will still have to pay a price for the additional preprocessing/massaging of the data that is required before the data gets to template renderer. While a templating language that allows more logic might have a more complex implementation, if the compiler is done correctly then it can still produce very efficient compiled code. For those reasons, I would argue that a solution involving templates with more logic will often perform a lot better than a similar solution based on logic-less templates.

Conclusion

There is no doubt that there are advantages like simplicity, readability and possibly some performance gains associated with  logic-less templates like Mustache, but I do not think the tradeoffs are fully justified in practice.

Logic in templates isn’t really a bad thing as long as it doesn’t come in the way of readability and maintainability of the templates.

Love to hear your thoughts!

Credits: Many thanks to my colleague Patrick Steele-Idem(@psteeleidem) for helping me write this blog. He is working on some cool stuff like RaptorJS and a new templating language; be sure to check them out when they are open-sourced in the very near future.