<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anita Singh</title>
    <description>The latest articles on DEV Community by Anita Singh (@anitas3791).</description>
    <link>https://dev.to/anitas3791</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F8981%2FhpBA33VP.jpg</url>
      <title>DEV Community: Anita Singh</title>
      <link>https://dev.to/anitas3791</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anitas3791"/>
    <language>en</language>
    <item>
      <title>Terrified of speaking at a conference? Submit anyway!</title>
      <dc:creator>Anita Singh</dc:creator>
      <pubDate>Sun, 30 Dec 2018 18:04:24 +0000</pubDate>
      <link>https://dev.to/anitas3791/terrified-of-speaking-at-a-conference-submitanyway-569c</link>
      <guid>https://dev.to/anitas3791/terrified-of-speaking-at-a-conference-submitanyway-569c</guid>
      <description>

&lt;p&gt;I never thought I'd face a room full of people and speak words out of my own free will, but here we are! This was my first year of submitting to tech conferences, and I had the pleasure of speaking at three of them - &lt;a href="https://androidmakers.fr/"&gt;&lt;strong&gt;Android Makers&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.de.droidcon.com/"&gt;&lt;strong&gt;Droidcon Berlin&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://360andev.com/"&gt;&lt;strong&gt;360AnDev&lt;/strong&gt;&lt;/a&gt; ❤.&lt;/p&gt;

&lt;p&gt;I was nervous throughout the process - from picking a topic, writing an abstract, to delivering the talk. So much so that when I got my first rejection, I was relieved and ready to throw in the towel!&lt;/p&gt;

&lt;p&gt;I'm glad I didn't, because sharing what I learned through speaking has been an incredible experience, even though 100% terrifying. In this post, I will share what worked for me in getting started:&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h3&gt;Finding a topic&lt;/h3&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I initially didn't feel like I was an "expert" on any one topic, so wasn't sure what I should speak about. But I was taking the wrong approach, &lt;a href="https://www.youtube.com/watch?v=PeKKzeAte30"&gt;&lt;strong&gt;as speaking is just about sharing what you know (or will learn)&lt;/strong&gt;&lt;/a&gt;, and that is it! &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No two people explain concepts the exact same way, so it absolutely worth sharing your knowledge even if it is something that has been spoken about before. People will come to your talk to hear about &lt;strong&gt;your&lt;/strong&gt; experience and perspective on a topic, so don't hold back!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If speaking is about sharing what you know…well, what do you know? To refresh your memory, &lt;strong&gt;I recommend making a list of ALL the projects you worked on in the last couple of years&lt;/strong&gt; and what you learned, spare no detail! Then proceed to summarise each point with a phrase, like "worked with Android gestures" to extract potential topics out of them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you feel unamused by the topics related to your past projects, &lt;strong&gt;make a second list of topics you wish you knew more about&lt;/strong&gt;. If you think you will be able to sufficiently explore a topic before the conference, then it is fair game!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My advice would be to pick up to three topics that you are either most excited or confident about (or both), and get started!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;h3&gt;Submitting abstracts to Call For Papers (CFP):&lt;/h3&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;First, read the conference's website where they post their CFP. Often they list topics or what they are looking for, which can help you brainstorm or tailor your abstract.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go through websites of conferences earlier in the year and read the topic proposals to get a sense of how to structure them. You will see that &lt;strong&gt;abstracts are a talk’s MVP (minimum viable product)&lt;/strong&gt; as it is the minimum amount of effort you need to make. You only have to write the talk once it gets accepted!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep your abstract succinct and &lt;strong&gt;focus on what the audience will learn from your talk&lt;/strong&gt;. The first two conferences I submitted to used language like "&lt;em&gt;I&lt;/em&gt; will share how I.." instead of saying "&lt;em&gt;you&lt;/em&gt; will leave this talk knowing how to..". Don't know if this is a coincidence, but once I changed the language, my talk got accepted!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rejections are part of the process&lt;/strong&gt;. As mentioned above, get feedback from the community as early as possible and don’t be like me and wait for rejections to do this. Don’t hesitate to ask for feedback from the conference committee either, but don’t feel down if you don’t get a response since they are busy people dedicating their free time for this.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;h3&gt;Tips on overcoming your nerves&lt;/h3&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Practice slowing down&lt;/strong&gt;. When you are in front of people, adrenaline kicks in and you will likely speak at a faster speed than anticipated. Record yourself if you are feeling brave to improve on your delivery (but don't obsess!).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give the first version of your talk at a &lt;strong&gt;safe space&lt;/strong&gt; like your friendly local meet-up or in front of your colleagues and ask for feedback. I recommend taking questions in these safe spaces as they can help you improve the content of your talk for next time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be mindful of your &lt;strong&gt;posture and body movements&lt;/strong&gt; when delivering the talk. Be 100% yourself, but the nerves can result in you playing with your hair (guilty!), sleeves, and so forth while giving the talk, which can be distracting for the audience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This might seem silly, but do the &lt;a href="https://www.ted.com/talks/amy_cuddy_your_body_language_shapes_who_you_are?language=en"&gt;power pose&lt;/a&gt; and give yourself a pep talk right before the talk! If possible, surround yourself with positive people leading up to it, this helped me the most.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The audience is on your side&lt;/strong&gt;, and if you &lt;em&gt;think&lt;/em&gt; you messed up during your talk, just keep going. Chances are nobody noticed, you are your biggest critic, and we are only human! I blanked out once and I internally panicked, but it looked like I was just taking a breath to everyone else :-).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You don't have to take questions on the big day, and it is perfectly acceptable to say you will get back to someone if you don't know the answer. The audience will not mind getting their time back.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, don't take yourself too seriously, you are not carrying the weight of world peace on your shoulders! That worst case scenario that you are dreading will NOT happen since you are so nervous about it. &lt;a href="https://www.youtube.com/watch?v=osVpqz10UP8"&gt;&lt;strong&gt;And besides, what is the worst that could happen?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have anxiety about this whole process, and what convinced me is if I don't enjoy speaking, I never have to do it again, but it is worth trying at least once. &lt;/p&gt;

&lt;p&gt;You don't have to do this alone, lean into your developer community and check out organizations that can support you, like &lt;a href="https://www.toastmasters.org/"&gt;Toastmasters&lt;/a&gt;, &lt;a href="https://www.writespeakcode.com/"&gt;Write/Speak/Code&lt;/a&gt;, &lt;a href="https://www.meetup.com/Women-Techmakers-Berlin/events/253677928/"&gt;Women Techmakers Berlin&lt;/a&gt; and so forth.&lt;/p&gt;

&lt;p&gt;I hope the above tips are helpful, would love to hear your thoughts in the comments below or on &lt;a href="https://twitter.com/anitas3791?lang=en"&gt;Twitter&lt;/a&gt;. Looking forward to hearing you speak, &lt;a href="https://androidstudygroup.github.io/conferences/"&gt;here&lt;/a&gt; are some conferences that you can submit to right now!&lt;/p&gt;


</description>
      <category>career</category>
      <category>conferences</category>
      <category>publicspeaking</category>
      <category>android</category>
    </item>
    <item>
      <title>Downloadable Fonts for Android </title>
      <dc:creator>Anita Singh</dc:creator>
      <pubDate>Wed, 20 Dec 2017 22:30:18 +0000</pubDate>
      <link>https://dev.to/anitas3791/downloadable-fonts-for-android-140j</link>
      <guid>https://dev.to/anitas3791/downloadable-fonts-for-android-140j</guid>
      <description>&lt;p&gt;I recently had the pleasure of using the newly supported &lt;a href="https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html" rel="noopener noreferrer"&gt;Downloadable Fonts&lt;/a&gt; feature that was introduced with Android Oreo, when changing &lt;a href="https://winnie.com/" rel="noopener noreferrer"&gt;Winnie’s&lt;/a&gt; font from Roboto to Lato.&lt;/p&gt;

&lt;p&gt;Along with &lt;a href="https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html#using-support-lib" rel="noopener noreferrer"&gt;Fonts in XML&lt;/a&gt;, Support Library 26 introduced support for Downloadable Fonts, with backwards compatibility till API 14. Historically, using custom fonts have usually required the use of third-party libraries, so it was nice to see more support from the Android framework itself.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h3&gt;What is Downloadable Fonts, and why use it?&lt;/h3&gt;
&lt;/h1&gt;

&lt;p&gt;Downloadable Fonts allow the ability for apps to request fonts from a font provider application instead of including font files in the apk or downloading it themselves. A font provider application retrieves fonts and caches them locally so that other apps can request and share fonts. How cool is that!&lt;/p&gt;

&lt;p&gt;Google Play Services (on devices with version 11+) is one such font provider, which I used for Lato as it is a &lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;Google Font&lt;/a&gt;. There isn’t documentation yet on how to implement your own font provider if you were to use a custom font not available through Google Play Services, however you can use fonts in XML which is still an improvement over what it used to be!&lt;/p&gt;

&lt;p&gt;Apps using Downloadable Fonts make a &lt;a href="https://developer.android.com/reference/android/support/v4/provider/FontRequest.html" rel="noopener noreferrer"&gt;FontRequest&lt;/a&gt; using the &lt;a href="https://developer.android.com/reference/android/provider/FontsContract.html" rel="noopener noreferrer"&gt;FontsContract API&lt;/a&gt; which retrieves the Typeface from the Font Provider. The Font Provider does not need to download fonts if it already exists in the Font cache.&lt;/p&gt;

&lt;p&gt;Developers don’t need to use these APIs directly if using Downloadable Fonts through XML, which is described more in the next section.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h4&gt;Advantages of using Downloadable Fonts:&lt;/h4&gt;
&lt;/h1&gt;

&lt;p&gt;1) Reduced APK size — which can significantly &lt;a href="https://medium.com/googleplaydev/shrinking-apks-growing-installs-5d3fcba23ce2" rel="noopener noreferrer"&gt;impact your app installs&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;2) Since the apps can share fonts from the same provider, this results in &lt;strong&gt;less usage of precious memory, disk space and cellular data&lt;/strong&gt;. Can you guess how many Roboto font files are in your phone’s storage right now? 🙀 (yes there are apps that have them in their APKs).&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h3&gt;Great, let’s get started!&lt;/h3&gt;
&lt;/h1&gt;

&lt;p&gt;There are three ways of implementing Downloadable Fonts in your app — using Android Studio &amp;amp; Google Play services, programmatically or via the Support Library. I used Android Studio to generate the required files, and used the Fonts in XML feature from the Support library to apply the downloaded fonts.&lt;/p&gt;

&lt;p&gt;I decided to do it via XML because then you can declare the required fonts in your app’s manifest file, which allows the framework to &lt;strong&gt;download them ahead of time&lt;/strong&gt;. If doing it programmatically, you can only request for fonts after the app is launched, which can cause a delay in the first layout time. Also, it is less work do it via XML!&lt;/p&gt;

&lt;p&gt;1) If you want to use Android Studio to generate the required files, then you’ll need version 3.0+. Add the following (version 26+) to your module’s build.gradle:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;implementation "com.android.support:support-compat:27.0.2"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2) Select a text view in your app that you want to apply the font to and click on the fontFamily attribute under Attributes in the graphical layout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgckmw1a82e1esr9h2qaj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgckmw1a82e1esr9h2qaj.png" alt="Click on font family under Attributes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the “More Fonts…” at the bottom, which will open the dialog below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpddy79jhzn99sbcs7r8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpddy79jhzn99sbcs7r8i.png" alt="Click on More Fonts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Make sure to have “Create downloadable font” selected. This results in three files being downloaded — lato.xml, font_certs.xml and preloaded_fonts.xml.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h4&gt;lato.xml&lt;/h4&gt;
&lt;/h1&gt;

&lt;p&gt;This file contains the font attributes for loading a Typeface from the Google Fonts Provider Application.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;
&amp;lt;font-family xmlns:app="http://schemas.android.com/apk/res-auto"&lt;br&gt;
        app:fontProviderAuthority="com.google.android.gms.fonts"&lt;br&gt;
        app:fontProviderPackage="com.google.android.gms"&lt;br&gt;
        app:fontProviderQuery="Lato"&lt;br&gt;
        app:fontProviderCerts="@array/com_google_android_gms_fonts_certs"&amp;gt;&lt;br&gt;
&amp;lt;/font-family&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h4&gt;font_certs.xml&lt;/h4&gt;
&lt;/h1&gt;

&lt;p&gt;The system uses these certificates to verify the font provider’s identity, to avoid getting fonts from an unknown source. If using the steps above, Android Studio should have automatically generated the string certificates for dev and prod in font_certs.xml below.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;
&amp;lt;resources&amp;gt;&lt;br&gt;
    &amp;lt;array name="com_google_android_gms_fonts_certs"&amp;gt;&lt;br&gt;
        &amp;lt;item&amp;gt;@array/com_google_android_gms_fonts_certs_dev&amp;lt;/item&amp;gt;&lt;br&gt;
        &amp;lt;item&amp;gt;@array/com_google_android_gms_fonts_certs_prod&amp;lt;/item&amp;gt;&lt;br&gt;
    &amp;lt;/array&amp;gt;&lt;br&gt;
    &amp;lt;string-array name="com_google_android_gms_fonts_certs_dev"&amp;gt;&lt;br&gt;
        &amp;lt;item&amp;gt;&lt;br&gt;
         &amp;lt;!-- string cert --&amp;gt;&lt;br&gt;
        &amp;lt;/item&amp;gt;&lt;br&gt;
    &amp;lt;/string-array&amp;gt;&lt;br&gt;
    &amp;lt;string-array name="com_google_android_gms_fonts_certs_prod"&amp;gt;&lt;br&gt;
        &amp;lt;item&amp;gt;&lt;br&gt;
         &amp;lt;!-- string cert--&amp;gt;   &lt;br&gt;
        &amp;lt;/item&amp;gt;&lt;br&gt;
    &amp;lt;/string-array&amp;gt;&lt;br&gt;
&amp;lt;/resources&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h4&gt;preloaded-fonts.xml&lt;/h4&gt;
&lt;/h1&gt;

&lt;p&gt;This file is referenced in the Android manifest which helps the framework pre-load fonts to avoid delays when the app is launched.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;
&amp;lt;resources&amp;gt;&lt;br&gt;
    &amp;lt;array name="preloaded_fonts" translatable="false"&amp;gt;&lt;br&gt;
        &amp;lt;item&amp;gt;@font/lato&amp;lt;/item&amp;gt;&lt;br&gt;
        &amp;lt;item&amp;gt;@font/lato_bold&amp;lt;/item&amp;gt;&lt;br&gt;
    &amp;lt;/array&amp;gt;&lt;br&gt;
&amp;lt;/resources&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;4) Make sure this line is added to your app’s Manifest file, Android Studio should have done this automatically:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;meta-data&lt;br&gt;
    android:name="preloaded_fonts"&lt;br&gt;
    android:resource="@array/preloaded_fonts"/&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h4&gt;5) Great, now you are ready to apply the fonts in XML!&lt;/h4&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&amp;gt;&lt;br&gt;
    &amp;lt;item name="colorPrimary"&amp;gt;@color/colorPrimary&amp;lt;/item&amp;gt;&lt;br&gt;
    ....&lt;br&gt;
    &amp;lt;item name="android:fontFamily"&amp;gt;@font/lato&amp;lt;/item&amp;gt;&lt;br&gt;
&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;All I had to do was set the &lt;strong&gt;font family in the app’s theme&lt;/strong&gt; to get TextViews throughout the app to change to Lato, including parts that were bold or italicized. However, if you want to configure the weights, you can follow the same steps to get Lato Bold using Android Studio, and change the weight manually in lato_bold.xml that you can then apply in XML layouts:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app:fontProviderQuery="name=Lato&amp;amp;amp;weight=700" //can modify the weight here&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The whole thing felt like magic! But…&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h3&gt;Gotchas&lt;/h3&gt;
&lt;/h1&gt;

&lt;p&gt;When using Support Library 26, I noticed that the toolbars throughout the app was still in Roboto, resulting in a hideous Roboto-Lato combination! Even explicitly setting the fontFamily of the toolbar in XML didn’t work. This is because Toolbar does not implement the fontFamily property, like a TextView does.&lt;/p&gt;

&lt;p&gt;Including the fontFamily in an XML style and setting that to be the toolbar’s app:titleTextAppearance worked — the toolbar titles were now in Lato! Good news is that this seems to be &lt;a href="https://issuetracker.google.com/issues/68308866" rel="noopener noreferrer"&gt;fixed in Support Library 27&lt;/a&gt;, so this workaround shouldn’t be needed.&lt;/p&gt;

&lt;p&gt;There were a couple of other places where Lato did not get applied — one where I was dynamically creating textviews with bold styling, and the bottom navigation view for which I used a third-party library. I initially thought that this would do the trick:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;val typeface = ResourcesCompat.getFont(this, R.font.lato)&lt;br&gt;
//for the third-party bottom navigation view&lt;br&gt;
bottomNavigationView.setDefaultTypeface(typeface)&lt;br&gt;
//for the bolded text view&lt;br&gt;
textView.setTypeface(textView.getTypeface(), Typeface.BOLD)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I used the &lt;a href="https://developer.android.com/reference/android/support/v4/content/res/ResourcesCompat.html#getFont%28android.content.Context,%20int%29" rel="noopener noreferrer"&gt;ResourcesCompat.getFont()&lt;/a&gt; method to load the Typeface and set it on both views, and voilà, there was no more Roboto! However, at one point I saw a &lt;strong&gt;ResourcesNotFound exception&lt;/strong&gt; when setting the Typeface for the BottomNavigation using this method.&lt;/p&gt;

&lt;p&gt;Essentially, if the font hasn’t been loaded by the time this method is called or the user doesn’t have the required version of Google Play Services, it will throw this exception. The safest way to avoid this is to load the font programmatically, if you are unable to set the style through XML. &lt;a href="https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html#via-support-lib" rel="noopener noreferrer"&gt;Here&lt;/a&gt; is the official documentation on how to do that.&lt;/p&gt;

&lt;p&gt;There is also &lt;a href="https://issuetracker.google.com/issues/69085400" rel="noopener noreferrer"&gt;this crash&lt;/a&gt; with FontsContractCompat in 27.0.2, it has been fixed for a future release of support library and doesn’t seem to be an issue in 26.1.0&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;h4&gt;Other requirements and limitations worth noting:&lt;/h4&gt;
&lt;/h1&gt;

&lt;p&gt;1) Your compileSDK should be at least SDK 26, and if you want to use Android Studio to generate the font files, it should be &lt;strong&gt;version 3.0+&lt;/strong&gt;. If programmatically or using Fonts in XML to apply Downloadable Fonts, you must use at least Support Library 26.&lt;/p&gt;

&lt;p&gt;2) Using Google Play Services as a font provider works on devices that have &lt;strong&gt;version 11&lt;/strong&gt; and above, otherwise it uses the default system font.&lt;/p&gt;

&lt;p&gt;3) As mentioned earlier, you may not be able to use Downloadable Fonts if you’re using a custom font that isn’t available through Google Play Services. You might have to write your &lt;strong&gt;own custom FontProvider&lt;/strong&gt; in this case which doesn’t have documentation yet.&lt;/p&gt;

&lt;p&gt;I (surprisingly) enjoyed transitioning our &lt;a href="https://winnie.com/android" rel="noopener noreferrer"&gt;app&lt;/a&gt; from Roboto to Lato thanks to Fonts in XML &amp;amp; Downloadable Fonts, hope you enjoy these features too! I’d love to hear from you in the comments or on Twitter, and don’t forget to 👏 the post :).&lt;/p&gt;

</description>
      <category>android</category>
      <category>typography</category>
      <category>devtips</category>
    </item>
    <item>
      <title>Flying Solo with Android Development</title>
      <dc:creator>Anita Singh</dc:creator>
      <pubDate>Wed, 22 Mar 2017 19:31:06 +0000</pubDate>
      <link>https://dev.to/anitas3791/flying-solo-with-android-development</link>
      <guid>https://dev.to/anitas3791/flying-solo-with-android-development</guid>
      <description>

&lt;p&gt;My Android career started two-and-a-half years ago, when I transitioned from back-end development to mobile development, along with the support of a four-person Android team. A year later, I joined a series-B startup, where I was one of two Android engineers for most of my time there. Working on small teams was a great way to have independence and also learn from other engineers.&lt;/p&gt;

&lt;p&gt;But then, five months ago, I took a leap from small team to no team when I joined a seed-funded startup of six employees as their only Android engineer. In my new role, I’ve been building the &lt;a href="https://winnie.com/"&gt;Winnie&lt;/a&gt; app from scratch, which just got &lt;a href="winnie.com/android"&gt;released&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;It turns out this was a big leap. Flying solo has been a challenge, but it’s also been extremely rewarding. I’ve learned along the way that there are pros and cons to working alone. Most importantly, there are things you can do to set yourself up for success. Here are some of the tactics that have helped me thus far.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt; Be connected with the community. Do your homework. &lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;One of my worries about going solo was not having Android teammates to discuss new ideas with or be a sounding board for their ideas, which I’ve thoroughly enjoyed in my previous roles.&lt;/p&gt;

&lt;p&gt;The good news is that there are tons of resources available online to expand your knowledge and perspectives. From online talks from various conferences such as DroidCon, 360|AnDev, etc to your timely dose from Fragmented Podcast, Android Dialogs and Android Weekly, there are many ways to broaden your thinking.&lt;/p&gt;

&lt;p&gt;My personal favorite is &lt;a href="https://caster.io/"&gt;Caster.io&lt;/a&gt; — the code samples with every bite-sized lecture keeps me on my toes! Local meet ups or virtual communities like the AndroidDev subreddit, Google+ communities, Slack groups and Twitter are great places to continue the conversation and ask questions when stuck!&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt; Review your own PR’s and maintain high standards. &lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;I highly encourage opening PR’s and then reviewing them yourself. It will feel silly commenting on your own PR’s, but I think it’s a healthy habit when working by yourself (also discussed in this relevant Android Dialogs episode).&lt;/p&gt;

&lt;p&gt;I do a first-pass using the preview feature of Github, and then let it sit for a while before I look at it again. I try my best to review my PR’s as I would review PR’s from a peer, and thus hold myself to the same standards. A second look at all your code also helps catch bugs and edge-cases, as well as keeps your code consistent and clean.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt; A “bad” pattern is often better than no clear pattern.&lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;You will have to make many decisions — should you use MVVM, MVP, Flux, and/or another architectural pattern? Fragments or custom ViewGroups? What should have abstractions and what shouldn’t?&lt;/p&gt;

&lt;p&gt;It’s not uncommon to start with one pattern and then realize another pattern is better when you’re at the beginning of a project, which leads to either some refactoring or diverging of patterns.&lt;/p&gt;

&lt;p&gt;While it makes sense to break your patterns for certain cases, it is best to be mindful of refactoring and changing it consistently everywhere when you’ve found something you like better. This might sound obvious but it’s easy to just use the new pattern for all the new code when you’re working by yourself, which can quickly result in a confusing and incoherent codebase before you know it! Even if the patterns aren’t great, consistency makes it easier to fix down the line.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt;Strongly consider using Kotlin.&lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;Especially if you are starting from scratch! If not, consider giving it a shot with the next class you’re going to write.&lt;/p&gt;

&lt;p&gt;I didn’t end up using &lt;a href="https://kotlinlang.org/"&gt;Kotlin&lt;/a&gt; because I wasn’t confident about pitching the idea, since I had zero experience with it at the time and didn’t want to discourage the back-end Java developers on the team from contributing to the codebase.&lt;/p&gt;

&lt;p&gt;However, after watching Christina’s &lt;a href="https://www.youtube.com/watch?v=mDpnc45WwlI"&gt;talk&lt;/a&gt; on Kotlin and doing more research, if I were to do it again, I’d have at least tried it. Kotlin has plenty of advantages — even just avoiding crashes because of null pointer exceptions and not dealing with Java boilerplate has me sold! This &lt;a href="https://realm.io/news/oredev-jake-wharton-kotlin-advancing-android-dev/"&gt;talk&lt;/a&gt; by Jake Wharton is also a great starting-point.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt; Try to keep control by not being too reliant on third-party libraries. &lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;I remember spending a bunch of time trying to decide on a library to use for MVP, as there are many of them. While being spoiled for choice is a great problem to have, I ended up implementing a simple version myself and have been very happy with it!&lt;/p&gt;

&lt;p&gt;When choosing what third-party libraries to use, I’d suggest considering whether you really need it and how it would restrict the development of the app in the future — does it make unit testing harder? Does it restrict using features that Android gives for free, like transition animations between screens? Is it actively under development and do many apps use it? This helped me make informed trade-offs and decisions.&lt;/p&gt;

&lt;p&gt;I’d recommend optimizing for retaining as much control as possible without reinventing the wheel. There is a library out there for pretty much everything, but you’re better off implementing some stuff yourself.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt; Have a testing and accessibility plan. &lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;If you are building from scratch, it is very exciting that you have a chance to do this right from day one! And if not, you can try doing it right with all the new code you write!&lt;/p&gt;

&lt;p&gt;It isn’t uncommon that testing and accessibility take the backseat when trying to hit aggressive deadlines — and when you’re solo, it can be harder to find time for it since you aren’t sharing the load with anyone else.&lt;/p&gt;

&lt;p&gt;I will admit that I am only in the beginning of this journey myself, however I wrote code with testing in mind by using dependency injection, Model View Presenter pattern, exposing only interfaces of my model objects to the UI, and so forth with the goal of making it easier to test. I also had CircleCI build after each commit from the beginning of the project, as a sanity check and to get closer to running tests.&lt;/p&gt;

&lt;p&gt;For accessibility, I add content descriptions whenever I can, and use the Accessibility Scanner before a release to figure out what I should focus on next. There is definitely more work to be done, but it is a start. Here is a great &lt;a href="https://realm.io/news/kelly-shuster-android-is-for-everyone/"&gt;talk&lt;/a&gt; by Kelly Schuster on actionable steps that developers can take to make their apps more accessible.&lt;/p&gt;

&lt;p&gt;If you aren’t able to spend time on writing tests, then have a manual testing plan handy. For example, write down different test cases (positive, negative) in a document for each feature and make sure to test those before every release! Set deadlines for yourself to start writing tests, and do the same for accessibility improvements, otherwise they’ll most likely never get done.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt; Tell your iOS designers that they are wrong and look for potential Android converts :-). &lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;Don’t be afraid to stand up for what is right for your platform! When you’re solo, you are responsible for bringing others up to speed with the latest Android UI patterns, as well as the codebase.&lt;/p&gt;

&lt;p&gt;I mostly worked off iOS screenshots but used the material design spec and well-designed Android apps as resources to help me convert those designs to Android. Also, there is nothing better than linking to the official material design documentation to make your point!&lt;/p&gt;

&lt;p&gt;Regarding the codebase, I helped bring my CEO up to speed with our architecture and concepts like MVP, Dagger2, RxJava2 and so forth when she helped out for a couple of months. I’d recommend keeping a lookout for potential Android converts, as explaining your decisions to someone or teaching them a new concept helps you really own it or alternatively, realize your mistake.&lt;/p&gt;

&lt;h1&gt;&lt;h3&gt;Go to beta as early as possible.&lt;/h3&gt;&lt;/h1&gt;

&lt;p&gt;This is applicable if you are working on app that hasn’t been launched yet or are making major changes to an existing app. Google play has an alpha and beta channel, and within the beta channel you can either have a closed or open beta.&lt;/p&gt;

&lt;p&gt;If you are working on an existing app, you can still have a beta run in parallel, so long as it’s version is higher than the production app. If it is an open-beta, users will be able to opt in on the playstore or by clicking on a link. If you are trying to test out changes of a smaller scale, then staged-rollouts might be better for that.&lt;/p&gt;

&lt;p&gt;If you are working on a new app, I’d suggest having a closed beta as soon as possible, and converting that to an open beta when it’s ready, before the launch. Our first closed beta had very few features, but it helped us iron out bugs early on, get onto a regular release train and receive valuable feedback throughout the process. This also resulted in a stress-free and smooth launch!&lt;/p&gt;

&lt;p&gt;Going solo for the first time is a great learning experience as you get to challenge yourself like never before, be more self-reliant, exercise total creative control over the codebase (for better or for worse), learn more about what you like, and deal with making mistakes that you only have yourself to blame (yay). I was nervous about going solo but it turned out to be a fun experience as the above suggestions worked for me. I hope they will be helpful for you too!&lt;/p&gt;

&lt;p&gt;Are you considering going solo or want to share your experience? I’d love to hear from you! Please comment on the post, or feel free to get in touch on Twitter.&lt;/p&gt;


</description>
      <category>androiddevelopment</category>
      <category>softwaredevelopment</category>
      <category>solo</category>
    </item>
    <item>
      <title>Nevertheless, Anita Singh Coded</title>
      <dc:creator>Anita Singh</dc:creator>
      <pubDate>Tue, 07 Mar 2017 07:34:46 +0000</pubDate>
      <link>https://dev.to/anitas3791/nevertheless-anita-singh-coded</link>
      <guid>https://dev.to/anitas3791/nevertheless-anita-singh-coded</guid>
      <description>&lt;h2&gt;
  
  
  I began coding because...
&lt;/h2&gt;

&lt;p&gt;I happened to take a class my freshman year of college where we programmed these little robots to navigate mazes and perform tasks - I became obsessed with my robot and subsequently decided to major in Computer Science!&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm currently hacking on...
&lt;/h2&gt;

&lt;p&gt;Building the Winnie Android app from scratch! Winnie connects you with your local network of parents and helps find great destinations for kids, anywhere you go.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm excited about...
&lt;/h2&gt;

&lt;p&gt;Building technology with a social purpose and awesome user experience! &lt;/p&gt;

&lt;h2&gt;
  
  
  My advice for other women who code is...
&lt;/h2&gt;

&lt;p&gt;Prioritize your health and happiness above all else. Persevere. People will try and box you into stereotypes - ignore them. It's okay to not be perfect and not have all the answers, you are NOT an impostor. &lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
  </channel>
</rss>
