{"id":577,"date":"2014-10-30T12:01:04","date_gmt":"2014-10-30T11:01:04","guid":{"rendered":"http:\/\/blog.ansuz.nl\/?p=577"},"modified":"2014-10-31T12:14:08","modified_gmt":"2014-10-31T11:14:08","slug":"droidcon-uk-day-1-2","status":"publish","type":"post","link":"http:\/\/blog.ansuz.nl\/index.php\/2014\/10\/30\/droidcon-uk-day-1-2\/","title":{"rendered":"Droidcon UK &#8211; Day 1"},"content":{"rendered":"<p><strong>9.00 Barcamp planning<\/strong><\/p>\n<p>Getting all sessions in for the day&#8217;s talks. At the end of the day there will also be an &#8220;Appcamp&#8221; to demo applications to the audience.<\/p>\n<p><strong>10.30 AIDE &#8211; Android Wear app with AIDE<\/strong><\/p>\n<p>Company: appfour GmbH, Speakers: Hans Kratz, Dr. Dennis Strein, Website: <a href=\"http:\/\/www.android-ide.com\" target=\"_blank\">www.android-ide.com<\/a>.<\/p>\n<p>AIDE = Android Integrated Development Environment.<\/p>\n<p>Applications that are &#8220;Wear enabled&#8221; contain the Wear APK inside the phone APK.<\/p>\n<p>AIDE uses Gradle to package Wear. To enable Wear, add the following to your build dependencies:<\/p>\n<div id=\"ig-sh-1\" class=\"syntax_hilite\">\n\n\t\t<div class=\"toolbar\">\n\n\t\t<div class=\"view-different-container\">\n\t\t\t\t\t\t<a href=\"#\" class=\"view-different\">&lt; View <span>plain text<\/span> &gt;<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t<div class=\"language-name\">groovy<\/div>\n\n\t\t\n\t\t<br clear=\"both\">\n\n\t<\/div>\n\t\n\t<div class=\"code\">\n\t\t<ol class=\"groovy\" style=\"font-family:monospace\"><li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">wearApp project<span style=\"color: #66cc66\">&#040;<\/span><span style=\"color: #ff0000\">':wearable'<\/span><span style=\"color: #66cc66\">&#041;<\/span><\/div><\/li>\n<\/ol>\t<\/div>\n\n<\/div>\n\n<p>Google also has a lot of information on <a href=\"https:\/\/developer.android.com\/training\/building-wearables.html\" target=\"_blank\">how to create wearable apps<\/a>.<\/p>\n<p>The presentation was followed by a live demo of how to use AIDE on a device.<\/p>\n<p><strong>11.10\u00a0Modern Testing Technologies<\/strong><\/p>\n<p><em>(or how to avoid getting murdered in your sleep by a death goblin.)<\/em><\/p>\n<p>Speaker:\u00a0Mr Death Goblin a.k.a. Zan Markan<\/p>\n<p>Follow <a href=\"http:\/\/en.wikipedia.org\/wiki\/SOLID_(object-oriented_design)\" target=\"_blank\">SOLID<\/a> principles to increase your chances to catch a goblin.<\/p>\n<p>Good tools for this include: Dagger (DI\/IoC), Mockito (mocking), Calabash, Robotium, etc. Start using the tools before you write a single line of code.<\/p>\n<p>When your project grows, allow for refactoring. Split up too big methods, classes, etc. The tests should be there to help you achieve that and keep things working.<\/p>\n<p>Use CI tools, like Travis, to automatically test \/ build your project.<\/p>\n<p>How to deal with legacy projects? Start by covering new features with tests. Cover any code related to bug fixing with tests. Little by little the coverage will get better and better.<\/p>\n<p><strong>12.05 TDD Coverage<\/strong><\/p>\n<p>Tools: GUnit (Unit tests), Robolectric, Mockito (Mocking), Emma (for coverage).<\/p>\n<p>Performance testing with a monkey that visits every Activity, combine this with TraceView for profiling to measure memory usage, CPU, etc.<\/p>\n<p>Testing the manifest: Use Robolectric to get a shadow application, fetch the package manager, check what service, receivers, etc are registered and verify that they exist.<\/p>\n<p><strong>12.45 Simple persistence with cupboard<\/strong><\/p>\n<p>Company: LittleRobots, Speaker: Hugo Visser, Project home:\u00a0<a href=\"https:\/\/bitbucket.org\/qbusict\/cupboard\" target=\"_blank\">bitbucket.org\/qbusict\/cupboard<\/a><\/p>\n<p>SQLite powered, using field names (from Models) to match columns. Simple usage example\u00a0<\/p>\n<div id=\"ig-sh-2\" class=\"syntax_hilite\">\n\n\t\t<div class=\"toolbar\">\n\n\t\t<div class=\"view-different-container\">\n\t\t\t\t\t\t<a href=\"#\" class=\"view-different\">&lt; View <span>plain text<\/span> &gt;<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t<div class=\"language-name\">java<\/div>\n\n\t\t\n\t\t<br clear=\"both\">\n\n\t<\/div>\n\t\n\t<div class=\"code\">\n\t\t<ol class=\"java\" style=\"font-family:monospace\"><li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">cupboard<span style=\"color: #009900\">&#040;<\/span><span style=\"color: #009900\">&#041;<\/span>.<span style=\"color: #006633\">withDatabase<\/span><span style=\"color: #009900\">&#040;<\/span>db<span style=\"color: #009900\">&#041;<\/span>.<span style=\"color: #006633\">put<\/span><span style=\"color: #009900\">&#040;<\/span>person<span style=\"color: #009900\">&#041;<\/span><\/div><\/li>\n<\/ol>\t<\/div>\n\n<\/div>\n\n<p><strong>14.20\u00a0Calligraphy \u2013 Fonts in styling<\/strong><\/p>\n<p>Company: YoYo, Speaker:\u00a0Chris Jenkins, Project home:\u00a0<a href=\"https:\/\/github.com\/chrisjenx\/Calligraphy\" target=\"_blank\">github.com\/chrisjenx\/Calligraphy<\/a><\/p>\n<p>Simplifying using custom fonts on Android.<\/p>\n<p>Example usage: <\/p>\n<div id=\"ig-sh-3\" class=\"syntax_hilite\">\n\n\t\t<div class=\"toolbar\">\n\n\t\t<div class=\"view-different-container\">\n\t\t\t\t\t\t<a href=\"#\" class=\"view-different\">&lt; View <span>plain text<\/span> &gt;<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t<div class=\"language-name\">xml<\/div>\n\n\t\t\n\t\t<br clear=\"both\">\n\n\t<\/div>\n\t\n\t<div class=\"code\">\n\t\t<ol class=\"xml\" style=\"font-family:monospace\"><li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\"><span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;TextView<\/span> ... <span style=\"color: #000066\">fontPath<\/span>=<span style=\"color: #ff0000\">&quot;fonts\/your_font.ttf&quot;<\/span><span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/div><\/li>\n<\/ol>\t<\/div>\n\n<\/div>\n\n<p><strong>15.55 Y U No craftsman!?<\/strong><\/p>\n<p>Company: Novoda, Speakers:\u00a0Paul Blundell and Xavi Rieau<\/p>\n<p>Ways to create better code \/ be a better craftsman.<\/p>\n<p>Pair programming, best coding practices, code reviews. Care about CI, show build status (i.e. on a big screen in the office). Run static analysis reports. Test!<\/p>\n<p>To make things more fun: CI Game (Jenkins plugin), creates a monthly leaderboard.<\/p>\n<p>Use the latest tools with your work.<\/p>\n<p>Be &#8220;agile&#8221;, build features the way they make sense. Believe in YAGNI (you ain&#8217;t gonna need it), don&#8217;t over-engineer.<\/p>\n<p>Make your app awesome:<\/p>\n<ul>\n<li>Get off the main thread.<\/li>\n<li>Use Strict Mode (both in code and dev options).<\/li>\n<li>Use &#8220;GPU Profiling&#8221; (under dev options).<\/li>\n<li>Use &#8220;Show Overdraw&#8221;<\/li>\n<li>Polish the app. (Lots of tips in the Android docs.)<\/li>\n<li>Animate all the things.<\/li>\n<li>Listen to (user) feedback.<\/li>\n<li>Measure the data.<\/li>\n<li>Follow the guidelines.<\/li>\n<li>Add debug screen(s) for QA and yourself.<\/li>\n<li>Proper versioning.<\/li>\n<li>Hexagonal architecture.<\/li>\n<\/ul>\n<p><strong>16.30 Democamp<\/strong><\/p>\n<p>Showcasing the following applications<\/p>\n<ul>\n<li>SkyScanner<\/li>\n<li>DoneDeal<\/li>\n<li>VelociCaptor<\/li>\n<li>???<\/li>\n<li>Clue<\/li>\n<li>See Speak<\/li>\n<li>Hey Order<\/li>\n<li>Islamic prayer times<\/li>\n<li>Kites<\/li>\n<li>Stay.com<\/li>\n<li>???<\/li>\n<li>E-reader Open Source app<\/li>\n<\/ul>\n<p><strong>17.30\u00a0Practicing Practical Best Practices &#8211; for Software Development Practitioners<\/strong><\/p>\n<p>Company: Google, Speaker: Chet Haase &#8211; Process Methodologist<\/p>\n<blockquote><p>&#8220;Practices Make Perfection&#8221;<\/p><\/blockquote>\n<p>Traditional best practices: Code comments, Naming conventions, Simplicity, Portability. Continuous Integration, Testing, Process.<\/p>\n<p>Laws of software quality:<\/p>\n<ol>\n<li>errors = (more code)^2 = e = mc^2<\/li>\n<li>The more bugs, the less quality.<\/li>\n<\/ol>\n<p>The path to better quality software: higher quality, less bugs, fewer code.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>9.00 Barcamp planning Getting all sessions in for the day&#8217;s talks. At the end of the day there will also be an &#8220;Appcamp&#8221; to demo applications to the audience. 10.30 AIDE &#8211; Android Wear app with AIDE Company: appfour GmbH, &hellip; <a href=\"http:\/\/blog.ansuz.nl\/index.php\/2014\/10\/30\/droidcon-uk-day-1-2\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[112,52],"tags":[114,113],"class_list":["post-577","post","type-post","status-publish","format-standard","hentry","category-android","category-java","tag-droidcon","tag-droidconuk"],"_links":{"self":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts\/577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/comments?post=577"}],"version-history":[{"count":13,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts\/577\/revisions"}],"predecessor-version":[{"id":598,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts\/577\/revisions\/598"}],"wp:attachment":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/media?parent=577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/categories?post=577"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/tags?post=577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}