User:DBrant (WMF)/Goodies

Apps team pages

 * Mobile team portal: https://www.mediawiki.org/wiki/Wikimedia_mobile_engineering
 * Apps team page: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team
 * Release process: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Release_process
 * Why apps: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Why_apps
 * Release history (update with every release): https://www.mediawiki.org/wiki/Mobile/Release_history#Apps
 * Roles, responsibilities: https://www.mediawiki.org/wiki/Reading/Web/Team/Roles_and_responsibilities
 * Development cycle: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Development_cycle
 * Feedback for old app: https://www.mediawiki.org/wiki/Wikimedia_Apps/Wikipedia/Feedback
 * All subpages under mobile apps: https://www.mediawiki.org/wiki/Special:PrefixIndex/Wikimedia_Apps/
 * App readme: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Wikipedia_Android_app_hacking
 * Apps/Desktop feature matrix: https://www.mediawiki.org/wiki/Reading/Features

Goals

 * 2015-2016 road map for android and ios.
 * 2015-Q1: https://www.mediawiki.org/wiki/Wikimedia_Engineering/2015-16_Q1_Goals#Reading

Phabricator boards

 * Mobile app goals: https://phabricator.wikimedia.org/tag/mobile-app-goals/
 * Android app: https://phabricator.wikimedia.org/tag/wikipedia-app-android-app/
 * General/unknown app: https://phabricator.wikimedia.org/tag/wikipedia-app-general-or-unknown/
 * iOS app development and backlog.
 * Content service: https://phabricator.wikimedia.org/tag/mobile_content_service/
 * Roadmap board: https://phabricator.wikimedia.org/project/sprint/board/1109/
 * Reading admin board: https://phabricator.wikimedia.org/tag/reading-admin/
 * Project creators: https://phabricator.wikimedia.org/project/profile/835/
 * https://www.mediawiki.org/wiki/Phabricator/Creating_and_renaming_projects#New_projects
 * Older mobile apps board: https://phabricator.wikimedia.org/tag/mobile-apps/
 * Calendar board (for marking vacation): https://phabricator.wikimedia.org/calendar/

Android
$ brew install jd-gui $ brew install dex2jar $ d2j-dex2jar  -o  $ adb tcpip 5555 $ adb connect :5555 $ adb -s :5555 usb $ adb shell $ netcfg $ adb shell $ am broadcast -a android.intent.action.BOOT_COMPLETED The above may actually cause your device to reboot, in which case you'll get the event when the device finished booting! ;) $ adb shell $ am broadcast -a com.android.vending.INSTALL_REFERRER -n org.wikipedia/org.wikipedia.analytics.InstallReceiver --es "referrer" "referrer_url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWombat&campaign_id=foo&install_id=bar" In the above, make sure you set the package name ("org.wikipedia") to the correct flavor that you're testing, and optionally change the "referrer_url" to something else.
 * Screen sharing: Android Screen Monitor (ASM) -- https://code.google.com/p/android-screen-monitor/
 * Memory profiling: Eclipse MAT -- https://eclipse.org/mat/downloads.php
 * Decompile: APKtool, dex2jar
 * Material Design icons: https://www.google.com/design/icons/
 * Asset studio: http://romannurik.github.io/AndroidAssetStudio/
 * Activity lifecycle: https://github.com/xxv/android-lifecycle
 * Porter/Duff modes: http://ssp.impulsetrain.com/porterduff.html
 * ImageView scaleTypes: http://bon-app-etit.blogspot.com/2014/01/imageview-scaletypes.html
 * Annotations: http://developer.android.com/reference/android/support/annotation/package-summary.html
 * Device metrics: http://www.google.com/design/tool/devices/
 * Install Google apps in Genymotion.
 * To do ADB over the network:
 * To switch back to ADB over USB:
 * To get the IP address of the device:
 * To simulate a BOOT_COMPLETED event:
 * To simulate an INSTALL_REFERRER event:

MySQL

 * Linux/Windows/Mac: MySQL Workbench -- https://dev.mysql.com/downloads/workbench/
 * Note, when installing on Windows, and you find that Workbench fails to connect to Wikimedia's stat1003 over the Bastion tunnel, try using this fork of paramiko: https://github.com/zamiam69/paramiko/tree/add_sha2_support
 * Also, to make text fields appear properly, go to Edit -> Preferences, SQL Editor -> SQL Execution, and check the box "Treat BINARY/VARBINARY as nonbinary character string."
 * Mac only: Sequel Pro -- https://sequelpro.com

Gerrit

 * all open patches in Android app: https://gerrit.wikimedia.org/r/#/q/status:open+project:apps/android/wikipedia+branch:master,n,z
 * all open patches in java-mwapi: https://gerrit.wikimedia.org/r/#/q/status:open+project:apps/android/java-mwapi+branch:master,n,z
 * all patches by me: https://gerrit.wikimedia.org/r/#/q/owner:Dbrant,n,z
 * Gerrit reviewer bot: https://www.mediawiki.org/wiki/Git/Reviewers

Git
$ git fetch upstream $ git checkout master $ git merge upstream/master
 * To sync a fork with the upstream repo:

API

 * Documentation: https://en.wikipedia.org/w/api.php
 * Api Sandbox: https://en.wikipedia.org/wiki/Special:ApiSandbox
 * Parsoid DOM spec: https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec
 * CirrusSearch: http://www.mediawiki.org/wiki/Help:CirrusSearch

Services

 * RESTBase for apps: https://www.mediawiki.org/wiki/RESTBase_services_for_apps
 * Documentation: https://en.wikipedia.org/api/rest_v1/?doc#!/Mobile/page_mobile_text__title__get
 * Content service in gerrit: https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/services/mobileapps
 * URL shortener: http://urlshortener.wmflabs.org/

Jenkins/Zuul issues
Remember to always !log in #wikimedia-qa when performing manual commands via Jenkins control panel.
 * Jenkins admin: https://integration.wikimedia.org/ci/
 * Add a comment of "recheck" to force Jenkins to reevaluate a patch.
 * https://www.mediawiki.org/wiki/Continuous_integration/Zuul#Known_issues
 * https://www.mediawiki.org/wiki/Continuous_integration/Zuul#Gearman_deadlock

Event logging
ssh deployment-eventlogging03.eqiad.wmflabs tail -f /srv/log/eventlogging/all-events.log | grep "MobileWikiApp"
 * Event logging:, Hive:
 * Event logging schema list: https://meta.wikimedia.org/wiki/Special:PrefixIndex/Schema:MobileWikiApp
 * Event logging help: https://wikitech.wikimedia.org/wiki/EventLogging, https://wikitech.wikimedia.org/wiki/EventLogging/Testing/BetaLabs
 * Event logging testing on labs:
 * Hive help: https://wikitech.wikimedia.org/wiki/Analytics/Cluster/Hive
 * Hue: https://hue.wikimedia.org/
 * Refinery source code for daily/monthly uniques: https://github.com/wikimedia/analytics-refinery/tree/master/oozie/mobile_apps

Bromine (releases) (formerly Caesium)
To copy stuff over: $ scp [file] bromine.eqiad.wmnet:~/[file] $ scp app.apk bromine.eqiad.wmnet:/srv/org/wikimedia/releases/mobile/android/wikipedia/alphas/app.apk
 * https://releases.wikimedia.org/mobile/android/wikipedia/

Android builds
$ ssh android-build.eqiad.wmflabs $ sudo -s $ sudo -u android-build /bin/bash $ cd /srv/builds
 * New: http://android-builds.wmflabs.org/
 * Gerrit: https://gerrit.wikimedia.org/r/#/admin/projects/labs/tools/wikipedia-android-builds

$ ssh dbrant@tools-login.wmflabs.org $ OR: ssh dbrant@tools-dev.wmflabs.org $ become wikipedia-android-builds $ webservice [start|stop]
 * Old: http://tools.wmflabs.org/wikipedia-android-builds/, http://tools.wmflabs.org/?tool=wikipedia-android-builds

Partners

 * List of partners and apk builds.
 * List of Global South/North countries: https://meta.wikimedia.org/wiki/List_of_countries_by_regional_classification
 * Zero: https://zero.wikimedia.org/wiki/Special:ZeroPortal
 * Testing: https://zero.wikimedia.org/wiki/Zero:TEST

TranslateWiki

 * https://www.mediawiki.org/wiki/Translation_of_app_string_resources

Wikidata

 * autodesc: https://github.com/dbrant/wikidata-autodesc
 * WDQ: http://wdq.wmflabs.org/wdq/
 * Documentation: http://wdq.wmflabs.org/api_documentation.html

Maven repo
$ ssh dbrant@tools-login.wmflabs.org $ cd /data/project/android-maven-repo/public_html
 * https://tools.wmflabs.org/android-maven-repo

.ssh config
Host bastlabs HostName bastion-eqiad.wmflabs.org User dbrant Host *.eqiad.wmflabs !bastion-eqiad.wmflabs.org User dbrant IdentityFile ~/.ssh/id_rsa ProxyCommand ssh -a -W %h:%p bastlabs Host bastprod HostName bast1001.wikimedia.org User dbrant Host *.eqiad.wmnet *.wikimedia.org !bast1001.wikimedia.org User dbrant IdentityFile ~/.ssh/id_rsa ProxyCommand ssh -a -W %h:%p bastprod
 * 1) Use bastion-eqiad.wmflabs.org as proxy to labs
 * 1) Production bastion host

Onboarding/Fundamentals

 * Gerrit: https://www.mediawiki.org/wiki/Gerrit
 * Vagrant: https://www.mediawiki.org/wiki/MediaWiki-Vagrant
 * Bash git prompt: https://github.com/magicmonty/bash-git-prompt
 * Git completion: https://github.com/bobthecow/git-flow-completion
 * Dotfiles: https://github.com/mathiasbynens/dotfiles
 * Mobile Web dev sessions: https://www.mediawiki.org/wiki/Reading/Web/Team/Dev_sessions

Administrative

 * NOC: https://noc.wikimedia.org/
 * Labs mobile instances: https://wikitech.wikimedia.org/wiki/Nova_Resource:Mobile
 * Help: https://wikitech.wikimedia.org/wiki/Help:Tool_Labs
 * Deployments: https://wikitech.wikimedia.org/wiki/Deployments
 * Test Wiki
 * Block: https://test.wikipedia.org/wiki/Special:Block
 * Unblock: https://test.wikipedia.org/wiki/Special:Unblock
 * Mobile report card (limn): http://mobile-reportcard.wmflabs.org/#
 * Search metrics: http://searchdata.wmflabs.org/metrics/
 * Wikipedia manual of style: http://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style
 * Wikimedia blog: https://meta.wikimedia.org/wiki/Wikimedia_Blog
 * JetBrains licenses: https://office.wikimedia.org/wiki/JetBrains

Miscellaneous
exiftool -AllDates-= -AllDates="2008:01:01 12:00:00" -overwrite_original -r.
 * Typographical symbols
 * Emoji cheat sheet
 * FIT file tools
 * Encode an Exif date tag into photos (recursively, in a whole directory):
 * Manage a website using git.