running out of bandwidth on a 4g chromebook

My mother has had her new 4G Chromebook for a few weeks now. I subscribed to the same $20 for 1GB plan as before. (Well technically there was a 100MB bonus on the old 3G plan.)

The first month was fine of the plan was me playing with it at home (mostly on wifi) and my vacation to visit her. This month was the first real month of her using it. She never ran out of bandwidth with the laptop and did the first month with the new one. How suspicious. I called Verizon and learned:

  1. Verizon offers text/email alerts on usage thresholds, but not for Chromebook pre-paid plans. In other words, useless to me.
  2. There were two days where she “used” over 200MB. And was online for over two hours. I’m not sure I believe Verizon on that, but I have no evidence to the contrary.

Here’s what we are doing to fix/troubleshoot.

Keep a log

I asked my mother to track her internet usage for a month or two so we can gather more data. She is to track the time she goes on/offline and what she does when online.

Turn off the Chromebook when not in use

I’m not sure if I’m right to be worried about someone piggybacking off her signal, but I told her to turn off (shut down, not sleep) the laptop when not online. This way we can get an accurate pictures of when she is online.

Turn off Flash

Since videos are large, I’m wondering if a website she went to uses Flash for video ads. I asked her to turn off Flash. She never watches videos so this won’t impede her experience.
  1. Type chrome:plugins in the address bar
  2. Scroll down and find the entry for Adobe Flash
  3. Click the disable link
Turn off extra bandwidth “helpers”
I’m concerned that the pre-fetching/pre-loading pages is wasting too much bandwidth. So turning that off. I don’t think the URL completion is significant, but just in case…
  1. Chrome Settings
  2. Show advanced settings
  3. Scroll down to the privacy section and uncheck
    1. “Use a prediction service to help complete searches and URLs typed in the address bar or the app launcher search book
    2. Predict network actions to improve page load performance

What do you think?

Any other ideas for what to do? She’s using a 4G plan exclusively (only going to visit a wifi connection once a month or two when an update comes out). She doesn’t watch videos and has never been a bandwidth intensive user before.

I will say that I’m glad this is a pre-paid plan where they cut you off rather than simply charging for overages.

Eclipse – easily looking at Java bytecode

A fellow moderator asked me to weigh in on this question at CodeRanch. The gist is whether this code creates one String or two:

String s = " " + 3;

How to find out the answer

The most definitive way to verify this is to check the bytecode. I had downloaded the bytecode plugin when working on our Java 8 OCA Study Guide because sometimes you just have to know what actually goes on behind the scenes to be accurate.

Using the plugin is easy. You go to Window -> Show View -> Other -> Java -> Bytecode. Then every time you save the Java file, the bytecode window is automatically updated. Great for lots of iterations.

The test

I wrote a simple Java class:

package jb;
public class PlayTest {
  public static void main(String[] args) {
    String s = "" + 3;
  }
}

The generated bytecode is:

// class version 52.0 (52)
// access flags 0x21
public class jb/PlayTest {

  // compiled from: PlayTest.java

  // access flags 0x1
  public <init>()V
   L0
    LINENUMBER 4 L0
    ALOAD 0
    INVOKESPECIAL java/lang/Object.<init> ()V
    RETURN
   L1
    LOCALVARIABLE this Ljb/PlayTest; L0 L1 0
    MAXSTACK = 1
    MAXLOCALS = 1

  // access flags 0x9
  public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 8 L0
    LDC "3"
    ASTORE 1
   L1
    LINENUMBER 14 L1
    RETURN
   L2
    LOCALVARIABLE args [Ljava/lang/String; L0 L2 0
    LOCALVARIABLE s Ljava/lang/String; L1 L2 1
    MAXSTACK = 1
    MAXLOCALS = 2
}

external motivation on unpleasant tasks

I’m usually good at being intrinsically motivated. Once in a while I hit a scenario where I know I have to do something and don’t really want to.  I was talking to a co-worker about how I handle this and realized I use a similar technique for the rare occasions this happens at work and when working on the book.

I’ve only needed to do this a handful of times over the years. But it has really helped when I did need to.

Step 1 – Pick someone technical that I respect a lot

For work, I picked a co-worker that I work very closely with. For the book, I obviously picked my co-author Scott. It would have worked with our tech editor Ernest as well though.

The key is to pick someone who I’ll be embarrassed to tell that I didn’t do what I said I was going to do. It can’t be a manager. Because the point isn’t really to be accountable to the person. It’s to feel accountable. (I’ve only done this in advance of the due date so I don’t procrastinate. IF I waited for the deadline, I’d actually be accountable, but then I’d be more stressed.)

Step 2 – Figure out a way to feel accountable

The next step is to figure out a way that I would be embarrassed if I didn’t do the work. Sometimes this is just mentioning it. When I was really stressed, I asked my co-worker to send me an email reminding me to work on it. That way I could look at the email as a reminder. I haven’t needed this in a while. Lately, I’ve been able to just imagine it.

Step 3 – Do the work

The whole point is to do the work before it is due so it is off my plate. And strangely this approach has worked for me.