Last week went pretty well, my goal was to get the Android application integrated with the new websocket API. By Thursday I was happy with the code and submitted it to Google for review.


- [x] Android: Resize Sylvia pictures
- [x] Android: Rename Sylvia pictures
- [x] Reply to Nadia
- [x] Ask Nadia to hire another voice actor
- [x] Audit: Generate invoices
- [x] Audit: Collect Receipts
- [x] Audit: Personal Bank Statements
- [x] Audit: Personal Credit Card Statements
- [x] Audit: Business Bank Statements
- [x] Audit: PayPal email #1
- [x] Audit: PayPal email #2
- [x] Audit: Give documents to accountant
- [x] Android: Sylvia picture message renders weirdly
- [x] Android: Scroll to the bottom when a new message comes in
- [x] Android: Delete unused proguard files
- [x] Android: "warning: Schema export directory is not provided"
- [x] Documents for Fanny
- [x] API: CreateBoughtStory message
- [x] API: WsClient message to change your name
- [x] Android: Payment code in SocketBiographyActivity
- [x] Android: "CreateBoughtStory" when a story has already been purchased?
- [x] Android: "CreateBoughtStory" when a story purchase succeeds?
- [x] Android: CreateBoughtStoryResponse, set the UIConversation StoryState
- [x] Android: BiographyActivity should listen for state changes
- [x] Android: Unlock menu button is disabled. LOL!
- [x] //TODO: Remove this storyId -> sku conflation
- [x] API: UIChatRoom needs a SKU on it.

I collected some annoying documents for my annoying accountant, supported some payment stuff and fixed up some data files.


- [x] Android: Payment code in SocketConversationFragment
- [x] Android: Verifying already owned from SockConAct works
- [x] Android: Verifying buying from SockConAct works.
- [x] Android: Timer seems to go away when it should be present. Bad!
- [x] Android: Handle TrialOver message
- [x] Android: Handle StoryOver message
- [x] API: Set Sylvia's delays to 1 second, run through the whole story.
- [x] Android: StoryOver behaviour should be the same as other scripts (STORY OVER THANKS FOR PLAYING)
- [x] Android: I suspect VIDEO, AUDIO and PICTURE message labels are rendering incorrectly in ConversationListActivity, when deltas come in
- [x] API: Run through the whole trial, verify trial over behaviour is correct.
- [x] Android: TrialOver bubble should be shown.
- [x] Android: Video messages are not rendering properly
- [x] Android: Verify videos messages render properly
- [x] Android: Sylvia story seems to have duplicate photos
- [x] Sylvia Story: Responses for "Can I call you tomorrow" seem wrong
- [x] Android: Sylvia images are not running on KitKat, must be HTTP stuff.
- [x] Android: Find duplicate photos
- [x] API: A ChatRoom can only have one decision
- [x] Android: Modify UIChatRoom so that it only have one Decision
- [x] API: Restart Conversation Socket Message
- [x] Android: Restart Conversation

Fixed more data files, refactored some models in the API and crushes a bunch of bugs in the Android client.


- [x] Reply to Sunny
- [x] BillingHandler lifecycle aware
- [x] BillingHandler startConnection() / endConnection() as private
- [x] Android: Change Sylvia's initial picture
- [x] Dedupe sylvia_photo_1.jpeg
- [x] Dedupe sylvia_photo_12.jpeg
- [x] Dedupe sylvia_photo_17.jpeg
- [x] Dedupe sylvia_photo_19.jpeg
- [x] Full paths for alexis.json
- [x] Full paths for andy.json
- [x] Full paths for brenda.json
- [x] Full paths for brett.json
- [x] Full paths for detective.json
- [x] Full paths for group_demo.json
- [x] Full paths for leilani.json
- [x] Full paths for lisa.json
- [x] Full paths for sofia.json
- [x] Full paths for starr.json
- [x] Full paths for sylvia.json
- [x] Unique photos, video and audio in a story in StoryValidator
- [x] Remove story-image-stats.js
- [x] Fix front end
- [x] Push to PROD
- [x] WebUI: Change the interfaces for the Story class
- [x] Handle RESTART_STORY
- [x] Android: Send socket errors to Crashlytics
- [x] API: Messages aren't scheduled when restarting a story.
- [x] Android: Messages don't come in when RestartStory
- [x] Android: Test against the PROD url.
- [x] API: Do not send the TrialOver message when the user has bought the story!
- [x] API: Create an endpoint to refresh characters
- [x] WebUI: Fix the Graph Story Editor to work with the new Story
- [x] Android: Verify TrialOver message does not appear after buying

Looks like quite a lot of work, but most of it was fixing up data files and repairing the Android and Web clients after I made API model changes. At this point the app seemed very close to ready.


- [x] API: Add in the Audio files
- [x] Conversation State is incorrect when restarting a story.
- [x] API: Make sure StoryCategory for SituationsPlus is correct
- [x] API: Sylvia should not appear in Boyfriend Plus's conversation list!
- [x] API: Sylvia should not appear in Situations Plus's conversation list!
- [x] Character refreshing should be triggered by CICD, should not happen on App start up.
- [x] Android: Verify Boyfriend Plus works
- [x] Android: Verify Situations Plus works
- [x] Sylvia's story freezes when buying.
- [x] Android: WebSocket should reconnect
- [x] Android: Change state when an UpdatePicture message comes in.
- [x] Android: Send up CHANGE_DISPLAY_NAME when user sets their name
- [x] Android: Request Conversations Snapshot on connection. Instead of in ConActivity.
- [x] Verify video messages are safe to use (audio copyright that sort of stuff)
- [x] Android: Verify audio files work
- [x] Fix video files
- [x] API: Merge some messages together? Nah
- [x] Android: Can you send Remote Notifications to users? Yes!
- [x] API: Accept displayName as a WS URL parameter
- [x] Android: Send up displayName when opening the socket
- [x] Android: Test it out on KitKat
- [x] Android: Run through the whole story.
- [x] Sylvia: Fix the Delays

This was the final haul, lots of small stuff with the Android clients and one big API bug fix. At the end of the day I submitted the APKs to Google and then went out to have beers with Kris.


- [x] DOC: Install and run tesseract with a file
- [X] Contact
- [x]
- [x] Janet
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x] DOC: Contact 10 accountants and ask if they'd be interested in PDF -> Excel File software
- [x] DOC: Read more of tesseract manual

Google Play takes a few days to review APKs. I still have more stuff to work on for Girlfriend Plus, but I decided to do some research on a bank statement parsing project I've been thinking of doing. I'll write a blog post about that project soon. On Friday I contacted a few accounting firms to ask if they'd be interested in parsing software. So far none of them have replied. Thanks guys!

I then tried out an optical character recognition project and tried out some PDF readers.


The apps were approved, and I sent out a remote notification telling users to try out the new character. It's quite cool to see a lot of people clicked the notification.