Friday, August 24, 2018

Impressions on the Samsung Galaxy Note 9 after 2 days


It's been a while since I've posted anything, but I recently got a Note 9 and had a few thoughts about it. I moved from a Pixel 2, so that's what I'm comparing it again.

(I must preface that these are subjective opinions. If you disagree, that's fine. Everyone experiences tech/movies/life differently)

Things I Like
  • The Note 9 is easily the most beautiful phone hardware I've ever held. Saying it's elegant is an understatement.
  • I'm so happy to have a headphone jack again.
  • The sound that it produces from its speakers (especially with the Dolby Atmos turned on) is the best sound I've ever heard on a mobile device, iPad included.
  • The screen is divine. I watch a decent amount of stuff on my phone when I'm out and about and between the screen and the sound, I'm pretty happy about this.
  • I like the warmer colors in the camera compared to the Pixel 2.
  • The native weather app is gorgeous. Google's weather 'app' is informative but ugly.
  • Being able to open the phone by pressing the home button on the AOD is brilliant (I keep my phone 'Smart Unlock'-ed when it's paired to my watch).
  • Samsung Pay is awesome.
  • On the first day, I got 6 hours SOT with 19% left. I think that will improve over time.
  • The fast charging/Quick Charge 2.0 is faster than I expected.
Things I Didn't Like
  • I gave up on the native Samsung Experience launcher after about a day. It's not that I mind the UI, it's that when you open a folder it takes up a chunk of the screen and makes it hard to reach the apps in the upper corners of the folder. I have switched to Action Launcher, which I have used in the past with non-Pixel phones.
  • I guess I'm used to the Pixel lock screen, but I really don't care for their lock screen.
  • The Intelligent Scan is cool, but there are obvious scenarios where it won't work. I also think it significantly impacts battery life.
  • The navigation bar not changing to black or adapting its color is a bit annoying. This is a nit pick for sure, but it just feels half baked too. I was able to enable it, though.
  • The Always-On-Display clock moving around feels weird as well.
  • I feel like the quality is more even with the camera on the Pixel 2, however when the Note 9 is at its best it beats the Pixel 2 at its best. 
Overall it's a great phone. It's not worth what it's priced at, IMO. I was able to get it at a significant discount which made it worth it. 

Sunday, December 18, 2016

I switched to an iPhone. Here's why


As a long-time Apple hater, it was a hard to decision to make the switch to iOS.  I did it for a few personal reasons, but mostly because of its taking parental controls seriously.  In order to keep me and my family safe, the switch was requisite. 

Since its inception, iOS (the operating system that is on iPhones and iPads) has had parental controls available.  You can block access to the browser, the installing of apps, and lots of other things.  I use these parental controls for myself in order to keep myself safe.  I will probably get into the details of exactly how I do this in a later post, but suffice it to say that my family and I are now completely safe when using the phones.  My wife is the one who knows the PIN to keep this all in place.

Google/Android refuse to address issues of parental control, supposedly because it goes against the 'open' culture that they believe in.  I guess that's fine.  However, this refusal to deal with these things has lost a customer for life, or at least until they take it seriously.  Sure, there are third-party solutions that work, yet these solutions are only one update to the OS away from breaking and being unusable.  Also, the outside apps that solve this must block Google Now/Google Assistant, which makes the phone 'dumb.'  If Google built parental controls into Google Now/Google Assistant the same way Apple does, I would switch back.  I probably will never give my children an Android phone.

So I have turned in my membership card for the Apple-hate club.  I still despise how much they charge for their products and I will NEVER buy a MacBook or an iMac (unless I win the lottery or something).  I still loathe much of their philosophy in developing user experiences.  But to keep my family safe, I have made the switch. 

Thursday, November 12, 2015

Grails $getStaticMetaClass() hot class reloading error fix

I came across an error while testing some Grails changes AFTER upgrading my local Java version to Java 8. Basically any class that was a subclass that I tried to save while the app was up and running would throw a compiler error. One of the beauties of developing with Grails is that you don't have to redeploy every time you want to make a change, you can just save it while it's running and the change will be picked up instantaneously.

 The problem is that the spring-loaded 1.2.3 JAR doesn't play nice with Java 8 for some reason. The way hack to fix this is to download the spring-loaded 1.2.4 JAR (here), and then insert it into your Grails installation libs directory and then removing the 1.2.3 JAR(s).

Then perform a clean-all and then start the app.

Cheers.

Wednesday, May 8, 2013

Alternatives to SoapUI

I've found that although SoapUI is very useful, it can be extremely clunky. It takes up a dramatic amount of resources on either my Ubuntu or Windows boxes.  So, I found some great browser plugins that can do the exact same thing. I've fallen in love with Postman Rest Client. I mean who couldn't love a plugin named after an awful Kevin Costner film?!?!  Anyways, you can find many other plugins for both Firefox and Chrome.  Just Google chrome rest client OR firefox rest client do look at the many options available to you.  You're bound to find one that you like.  Cheers!

Friday, April 26, 2013

GWT 'the response could not be deserialized' in Dev Mode

My current job has me doing GWT for the front-end technologies and I ran across this error the other day and couldn't figure it out:

com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: The response could not be deserialized
I Googled it and found that the main solution was that this was a common problem and almost always happened because some of the classes in the shared package that you were sending to the client hadn't implemented IsSerializable or Serializable.

I was perplexed by this because I had made no code changes to these objects since the last time I ran it. I double checked that they did indeed implement one of the right interfaces, and they did.

Also, it was working fine when it wasn't in Dev Mode (i.e. adding the 'gwt.codesvr=127.0.0.1:9997' to the end of it and letting the GWT Plugin compile the front end stuff on the fly).  The only thing I'd changed is that I had an updated copy of our QA database.

So, I decided to do a 'printStackTrace' on the Throwable object it was returning, to get to the heart of the matter. At the bottom of the stack trace, I found this:

Caused by: java.lang.RuntimeException: FAILED ASSERTION
at com.google.gwt.dev.js.rhino.Context.codeBug(Context.java:769)
at com.google.gwt.dev.js.rhino.Parser.sourceAddString(Parser.java:1424)
at com.google.gwt.dev.js.rhino.Parser.primaryExpr(Parser.java:1342)
at com.google.gwt.dev.js.rhino.Parser.memberExpr(Parser.java:1163)
at com.google.gwt.dev.js.rhino.Parser.unaryExpr(Parser.java:1079)

I put a break point in there and found that one of the Strings that was being passed from the server to the client was too big!  I shorted the String (it was a field in the database) and it worked!

It's strange that this only happens in Dev-Mode.  I think that GWT uses different libraries to compile on-the-fly than it does to actually compile for the end product.  

Wednesday, November 28, 2012

How to Root the T-Mobile Galaxy S3 AFTER JellyBean update

So, I found myself wanting a change to my phone after a friend rooted his phone and put CynaogenMod 10 on it.  It was so lightning quick that I was really jealous.  I tried a few different tutorials but to no avail.  It turns out that there are a few different things that you have to do in order to root it AFTER the Samsung Jelly Bean update.  Here we go:


  1. Make sure you have installed the updated Samsung drivers here (There is usually just one driver for all Samsung devices, but you need the updated ones that support the Galaxy S3)
  2. Download Odin here (Odin is a program that will push the modified recovery software to your phone)
  3. Download ClockworkMod Recovery here (custom recovery software that will allow you to give you root access and put a custom version of Android on it)
  4. Download the Superuser app for Android here
  5. Unzip Odin and double click the Odin3 v3.04 file
  6. Put the superuser zip in the root of the sd card
  7. Turn off your phone
  8. Once the phone is off, HOLD Volume Up + Home Button + Power Button until you see a warning that you are in download mode.  Press Volume Up to continue.
  9. Plug phone into computer via USB; You should see a message in Odin on the left lower corner saying Added
  10. Uncheck the Auto Reboot and F. Reset Time
  11. Click PDA and find the downloaded Recovery .tar file
  12. Click Start.
  13. After it says Successful, unplug the phone and take out the battery.  
  14. Put battery back in, and then HOLD Volume Down + Home Button + Power Button until you see some blue letters on the top of the phone screen.
  15. Now use the volume buttons to select install zip from sd card, then press the power button to select it
  16. now find the superuser zip and select it, and then confirm it
  17. now go back to the main screen of the recovery software and reboot
That should do it.  Cheers.

Friday, May 4, 2012

How to do a 'hover' with Webdriver in Java....

I had a crazy time trying to recreate our hover functionality, and was having troubles.  But then I found this code:


Element item = webDriver.findElement(By.id("superman");
Actions builder = new Actions(webDriver);    
builder.clickAndHold(item);


It works like a charm!