When I had an iphone there were at least 10 game review sites that I could hit up on a daily basis to find a good game to buy, but that’s not true for android. There are a couple, but two good websites is not enough for me to form an opinion on what to buy next.
So instead of waiting for someone to launch their own version, I’ve made one myself.
This works if you want your page numbers to start anywhere after page 1. In my example I want to start numbering on page 3, but this would work even if you wanted page numbering to start on page 57 (for example).
We do this by breaking the document into sections. In this example I am using the following structure:
Page 1 - title page
Page 2 - contents page
Page 3 - real document starts <= I want this to be labelled page 1
Step 1: Insert a section break at the end of the title page, and the end of the contents page.
Put your cursor at the END of your title page, then click Insert => Break => Section Break (next page)
Do the same thing for the contents page. Now your document has 3 sections and when we insert page numbering it will only number that section.
Step 2: Insert the Page Numbers
Navigate to the first page you want numbered (page 3 in my example).
Click Insert => Page Numbers
Ensure ‘show number on first page’ is checked
Click Format…
Under ‘page numbering’, select Start At and enter “1”
That’s it!
You can now update your contents page and it will refer to your shiny new page number format.
This took me a long time to work out. I’m writing this primarily for my awesome wife who writes way more essays than I do. :-)
I’ve always found download statistics articles by other app developers extremely interesting and useful when trying to get insight into download and revenue rates for mobile applications. I thought I’d share the love with some stats on my very first android game GeoPop.
GeoPop
The game is very simple: tap shapes in the order specified as fast as you can within the time limit. The more shapes you match, the higher your score will be. The challenge comes from beating your own high-score and placing top of the leader-board.
The simplicity of the game mechanic was ideal for learning android development, and the mechanics of game development in general. Being a server-side developer by trade, it was a big leap having to work with UI vs game threads and handling time based animation, rendering and object movement in a frame rate independent way.
Equally, because the mechanic is fairly simple, and the game has only a single game mode, my expectations as to download numbers are very conservative.
Stats
I released the game on November 26th.
Today (December 4th). I have a total of 183 installs.
Here is my google analytics chart for the number of app launches per day:
This represents a total of 108 absolute unique users.
My total revenue from admob so far is $0.06, so any dreams of a giant money vault are still a long way from fruition.
Take Away
I’m happy at my 180 downloads so far, its more than I expected (0) from my first android project.
Interestingly, I released a bug-fix on December 3rd along with a new application icon, and this increased both downloads and active sessions drastically (about 70 downloads happened on that day). The same was not true for a bug fix released 2 days after launch.
Hope this is interesting to the internetz in the same way other posts were useful to me.
Shout Out
I’ve found the following blogs very interesting in this regard:
Last weekend I found myself drawing Christmas characters, so to capitalize on the idea I built a game:
Santa Says? is a simon-says style memory game where the goal is to repeat the pattern shown to you on screen. It gets really hard (my highscore is 19), and it’s really fun.
To go along with the hand-drawn graphics I also added funny voices to each of the characters (it’s more fun than a *beep* noise!).
I just clicked publish on ‘GeoPop’, my first Android project.
GeoPop is a puzzle game where you have to pop geometric shapes as fast as possible before the timer runs out. It gets pretty frantic pretty quickly, so you need to have quick fingers to reach that elusive high-score :-).
I totally recommend this book, which I read over the weekend. I went from fumbling around without being able to accomplish anything, to approaching game development in a totally new way (which is much better).
Say you’ve built some library you want to use in Hive, or even in Hadoop. If this library is a UDF for use in hive queries you can load it like this:
ADD JAR ‘s3n://matthewsbucket/superudf.jar’;
CREATE TEMPORARY FUNCTION super as ‘com.matthewrathbone.SuperFunction’;
If you’re creating a bunch of these you don’t want to have to ‘ADD JAR’ _every_single_time_ you want the function, you want it to be in the library already.
To do that either put it in hive/lib, or hadoop/lib on all the nodes. If you’re using Elastic Mapreduce you can do this in a bootstrap script:
I’m a long-time fan of The Master Theorem. The puzzle-master (M) posts pretty difficult to solve puzzles on a weekly basis, but lately something interesting has happened, user submitted puzzles have started being posted.
Is it just me, or does this look like the start of a really interesting (and self-regulating) community for puzzle fanatics (makers AND solvers)?
If you’re running Hadoop 0.20 with Hive 0.7 here are a couple of bugs that it’s useful to know about:
NullPointerException
If you have an external partitioned table, this could mean you forgot to recover the partitions before running the query:
ALTER TABLE sample RECOVER PARTITIONS;
MR jobs hanging on 0/0 completed map tasks
Creating an external table that points to an empty location will cause hive to generate mapreduce jobs that hang *forever*. It’s because the map tasks stay at 0% complete (0/0 completed).
There is a Hadoop patch for this (so long as you have the ability to patch your cluster), and it should already be integrated into hadoop version 0.21.
Bonus:
If you have some sort of delimited data (eg, tab delimited) in a Hive external table, and you want to find all records where a particular string field is non-existent, you need to test for empty string and not NULL:
select * from events where venue IS NULL <= Won’t work
select * from events where venue = “” <= Will work
regular expressions are “WYSIWYG” - the language described is the language that gets matched—whereas parser-generators are WYSIWYGIYULR(k) - “what you see is what you get if you understand LR(k).
By default if you use the asynchronous client for thrift it will be using a FRAMED transport layer, even though there is no mention of this in the code / docs.
You’ll know this is happening because your server will give you the following error message when it receives an rpc:
org.apache.thrift.protocol.TProtocolException: Missing version in readMessageBegin, old client?
If you have no control over the server code (eg, if you’re using flume), then you’ll have to fall back to the synchronous client, sorry.
Am I the only one who thinks the kindle store ui (on the kindle) should have the book prices next to the books when you search? How else do I know what snap purchases to make?