<?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>Forem: Jacob Hunsaker</title>
    <description>The latest articles on Forem by Jacob Hunsaker (@mimanjh).</description>
    <link>https://forem.com/mimanjh</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%2F600025%2F1477db7c-cd30-4f72-817e-50b1c0a543b3.jpg</url>
      <title>Forem: Jacob Hunsaker</title>
      <link>https://forem.com/mimanjh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mimanjh"/>
    <language>en</language>
    <item>
      <title>Flutter - deploying your app to Play Store</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Thu, 29 Jul 2021 06:12:26 +0000</pubDate>
      <link>https://forem.com/mimanjh/flutter-deploying-your-app-to-play-store-2nnc</link>
      <guid>https://forem.com/mimanjh/flutter-deploying-your-app-to-play-store-2nnc</guid>
      <description>&lt;p&gt;I've had some luck to study and work with flutter these days. Flutter is a Google's UI kit, made for cross-platforms, meaning that with just one set of codes, it can be used to run in Android, iOS, and Web. Pretty neat, right?&lt;/p&gt;

&lt;p&gt;Anyways, I've been hitting my keyboard here and there, and was lucky enough to create two simple apps and deploy it on both Play Store and App Store. Flutter has a pretty nice documentation, so you can follow &lt;a href="https://flutter.dev/docs/deployment/android" rel="noopener noreferrer"&gt;that&lt;/a&gt; directly. However, if you're like me, who understands better by reading/watching at somebody who does it then this post will do. Today, I'll be sharing my experience on how I did it with some tips alongside (assuming you know the basics of flutter).&lt;/p&gt;

&lt;p&gt;This post will discuss how to deploy an app to Play Store. If you're interested in how to publish an app on App Store, follow this &lt;a href="https://dev.to/mimanjh/flutter-deploying-your-app-to-app-store-3afp"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've used Android Studio to develop in flutter, and Visual Studio should be work the same. You should create a Play Console account and pay a one-time $25 to activate the account for publishing to work.&lt;/p&gt;




&lt;h1&gt;
  
  
  Android
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Add a launcher icon.
&lt;/h2&gt;

&lt;p&gt;Let's first start off by setting a launcher icon. This can be done, thanks to romannurik, at this &lt;a href="https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html#foreground.type=clipart&amp;amp;foreground.clipart=android&amp;amp;foreground.space.trim=1&amp;amp;foreground.space.pad=0.25&amp;amp;foreColor=rgba(96%2C%20125%2C%20139%2C%200)&amp;amp;backColor=rgb(68%2C%20138%2C%20255)&amp;amp;crop=0&amp;amp;backgroundShape=square&amp;amp;effects=none&amp;amp;name=ic_launcher" rel="noopener noreferrer"&gt;site&lt;/a&gt;. I'll name the icon, "icon_logo.png". Once you've created what the launcher icon, create an assets folder in your project directory and put your icon in it. &lt;br&gt;
Now let's be more technical. We'll be using one of flutter packages called &lt;a href="https://pub.dev/packages/flutter_launcher_icons" rel="noopener noreferrer"&gt;flutter_launcher_icons&lt;/a&gt; to change the app icon. In your pubspec.yaml file, add/update the following lines appropriately. The latest version for flutter_launcher_icons was 0.9.0 in my case. Remember that indentation is very important for yaml files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="nl"&gt;dev_dependencies:&lt;/span&gt;
  &lt;span class="nl"&gt;flutter_launcher_icons:&lt;/span&gt; &lt;span class="s"&gt;"^0.9.0"&lt;/span&gt;

&lt;span class="nl"&gt;flutter_icons:&lt;/span&gt;
  &lt;span class="nl"&gt;android:&lt;/span&gt; &lt;span class="s"&gt;"launcher_icon"&lt;/span&gt;
  &lt;span class="nl"&gt;ios:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="nl"&gt;image_path:&lt;/span&gt; &lt;span class="s"&gt;"assets/icon_logo.png"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then, run this command in terminal at your project directory and your app launcher icon will change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter pub clean &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; flutter pub get &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; flutter pub run flutter_launcher_icons:main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Change the name of the App &amp;amp; Bundle.
&lt;/h2&gt;

&lt;p&gt;We'll be running some terminal commands to make this happen, using a flutter package called &lt;a href="https://pub.dev/packages/rename" rel="noopener noreferrer"&gt;rename&lt;/a&gt;. You can set your app name to whatever you want, with any language. your bundleId can also be anything, but the typical format is com.companyname.appname.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter pub global activate rename
flutter pub global run rename &lt;span class="nt"&gt;--appname&lt;/span&gt; YourAppName
flutter pub global rename &lt;span class="nt"&gt;--bundleId&lt;/span&gt; com.company.appname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. key.properties
&lt;/h2&gt;

&lt;p&gt;Now let's create a file called key.properties in the android directory, in the same level as local.properties. Inside, copy and paste the following four lines of code and adjust according to your wants. storePassword and keyPassword are usually the same. the value for storeFile can change to wherever you put your keystore in the next step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;storePassword=pw
keyPassword=pw
keyAlias=upload
storeFile=../app/upload-keystore.jks 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Generating key.
&lt;/h2&gt;

&lt;p&gt;This section is divided into two, depending on whether your developing device is Windows or Mac.&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows
&lt;/h3&gt;

&lt;p&gt;Copy and adjust the following code to your appropriate directories. Run it on cmd. First address is where your java keytool lies, and the second address after -keystore is where you want to download the key, as well as its name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;C:&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;"Program Files"&lt;/span&gt;&lt;span class="se"&gt;\A&lt;/span&gt;ndroid&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;"Android Studio"&lt;/span&gt;&lt;span class="se"&gt;\j&lt;/span&gt;re&lt;span class="se"&gt;\b&lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="se"&gt;\k&lt;/span&gt;eytool &lt;span class="nt"&gt;-genkeypair&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nt"&gt;-keystore&lt;/span&gt; C:&lt;span class="se"&gt;\U&lt;/span&gt;sers&lt;span class="se"&gt;\A&lt;/span&gt;dministrator&lt;span class="se"&gt;\u&lt;/span&gt;pload-keystore.jks &lt;span class="nt"&gt;-storetype&lt;/span&gt; JKS &lt;span class="nt"&gt;-keyalg&lt;/span&gt; RSA &lt;span class="nt"&gt;-keysize&lt;/span&gt; 2048 &lt;span class="nt"&gt;-validity&lt;/span&gt; 10000 &lt;span class="nt"&gt;-alias&lt;/span&gt; upload

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mac
&lt;/h3&gt;

&lt;p&gt;It's easier for Mac users, since you can simply just copy and paste the following code to the terminal and you're set.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;keytool &lt;span class="nt"&gt;-genkey&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nt"&gt;-keystore&lt;/span&gt; ~/upload-keystore.jks &lt;span class="nt"&gt;-keyalg&lt;/span&gt; RSA &lt;span class="nt"&gt;-keysize&lt;/span&gt; 2048 &lt;span class="nt"&gt;-validity&lt;/span&gt; 10000 &lt;span class="nt"&gt;-alias&lt;/span&gt; upload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next thing I would suggest you do is to move the key to where your app resides: inside android/app.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Update .gitignore
&lt;/h2&gt;

&lt;p&gt;Since we've now added key.properties and our key into the app, we don't want those to be uploaded into GitHub. In our .gitignore file inside the android directory, you can simply add key.properties and app/upload-keystore.jks to prevent that from happening.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Update AndroidManifest and build.gradle
&lt;/h2&gt;

&lt;p&gt;In your android/src directory, there are three AndroidManifest.xml files. In the one in main, make sure that the following codes are added. Remember that indentations are very important in xml files.&lt;br&gt;
Add the following before the android block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

   android {
         ...
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find and replace the buildTypes block with the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One thing I've noticed is, when you leave the buildType to release, debugging won't work. Hence, when you're done with releasing, return it back to signingConfigs.debug so that you can debug and develop.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Review your app.
&lt;/h2&gt;

&lt;p&gt;Read through the &lt;a href="https://flutter.dev/docs/deployment/android#reviewing-the-app-manifest" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to see if you didn't miss any app-breaking mistakes to be fixed.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Create app bundle.
&lt;/h2&gt;

&lt;p&gt;We are almost done! Now that our app is ready to be deployed, we will create an app bundle to upload to Play Console. Remember to run the following code in the project directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter build appbundle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your app bundle will now be located at [project]/build/app/outputs/bundle/release/app.aab.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Play Console.
&lt;/h2&gt;

&lt;p&gt;At the &lt;a href="https://play.google.com" rel="noopener noreferrer"&gt;Play Console&lt;/a&gt;, create a developer account and create a new app. Upload your app bundle you've created above at the Production tab. Once you do that, Play Store is great in telling what needs to be done to successfully publish an app. Fill in all of the information until you can submit for approval. Once it is approved, your app will be deployed to Play Store.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Updating your app.
&lt;/h2&gt;

&lt;p&gt;After editing or adding functionalities to your app, you'll have to update the version of the app. Play Store won't accept the same version number to be uploaded. Therefore, we have to go to pubspec.yaml and update the version of your app. &lt;a href="https://flutter.dev/docs/deployment/android#updating-the-apps-version-number" rel="noopener noreferrer"&gt;Flutter documentation for version control&lt;/a&gt; is somewhat confusing. Basically, 1.0.0 is the version number and the number after + is the build number. Whenever there is a minor update, you should update the version as the following: 1.0.1+2. The next iteration will be 1.0.2+3, and so forth. Then, you'll build the app again and create another app bundle to post on Play Console. You can now add another version there.&lt;/p&gt;




&lt;p&gt;That sums up on how to publish an app on Play Store for flutter apps. If you're also interested in how to publish an app on App Store, follow this &lt;a href="https://dev.to/mimanjh/flutter-deploying-your-app-to-app-store-3afp"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If there are things I could improve on, please don't hesitate to let me know! I'm all ears :)&lt;/p&gt;

&lt;p&gt;-JH&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jacobjhunsaker/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/mimanjh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>flutter</category>
      <category>tutorial</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Flutter - deploying your app to App Store</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Thu, 29 Jul 2021 06:12:13 +0000</pubDate>
      <link>https://forem.com/mimanjh/flutter-deploying-your-app-to-app-store-3afp</link>
      <guid>https://forem.com/mimanjh/flutter-deploying-your-app-to-app-store-3afp</guid>
      <description>&lt;p&gt;I've had some luck to study and work with flutter these days. Flutter is a Google's UI kit, made for cross-platforms, meaning that with just one set of codes, it can be used to run in Android, iOS, and Web. Pretty neat, right?&lt;/p&gt;

&lt;p&gt;Anyways, I've been hitting my keyboard here and there, and was lucky enough to create two simple apps and deploy it on both Play Store and App Store. Flutter has a pretty nice documentation, so you can follow &lt;a href="https://flutter.dev/docs/deployment/ios" rel="noopener noreferrer"&gt;that&lt;/a&gt; directly. However, if you're like me who understands better by reading/watching at somebody who does it, then this post will do. Today, I'll be sharing my experience on how I did it with some tips alongside (assuming you know the basics of flutter).&lt;/p&gt;

&lt;p&gt;This post will discuss how to deploy an app to App Store as iOS. If you're interested in how to publish an app on Play Store, follow this &lt;a href="https://dev.to/mimanjh/flutter-deploying-your-app-to-play-store-2nnc"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Publishing an app to App Store requires Xcode, so you need to use a Mac device. You should also create an Apple Developer account and enroll in the Apple Developer Enrollment Program, which costs $99/year, for publishing to work.&lt;/p&gt;




&lt;h1&gt;
  
  
  iOS
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. App &amp;amp; BundleId Naming.
&lt;/h2&gt;

&lt;p&gt;We'll be running some terminal commands to change the name of the app, using a flutter package called &lt;a href="https://pub.dev/packages/rename" rel="noopener noreferrer"&gt;rename&lt;/a&gt;. You can set your app name to whatever you want, with any language. your bundleId can also be anything, but the typical format is com.companyname.appname.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter pub global activate rename
flutter pub global run rename &lt;span class="nt"&gt;--appname&lt;/span&gt; YourAppName
flutter pub global rename &lt;span class="nt"&gt;--bundleId&lt;/span&gt; com.company.appname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Podfile.
&lt;/h2&gt;

&lt;p&gt;In the flutter project/ios directory, open a file named Podfile. Uncomment line 2, and change the iOS platform target to whichever is required for your app. '9.0' should be sufficient for most cases.&lt;br&gt;
At the bottom of podfile, update the block for post_install to the following and match the 'IPHONEOS_DEPLOYMENT_TARGET' to the version you chose for the line 2.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then click on 'Open iOS module in Xcode' to open the project in Xcode. If you're opening the project from Xcode, open project/ios directory to open Runner.xcworkspace file.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Runner configuration.
&lt;/h2&gt;

&lt;p&gt;In the general tab, make sure all of the values are correct. We've changed the name and bundleId at step 1, so the Display Name, Bundle ID should have changed accordingly. Make sure the Version and Build is same as found in pubspec.yaml. Version would be the first three numbers (i.e. 1.0.0) and the build would be the number after the '+' sign. Set the iOS Version in Deployment Info to the one you set on step 2. &lt;br&gt;
In the Signing &amp;amp; Capabilities tab, make sure 'Automatically manage signing' is marked, and select your team. If you already have an App Store Developer Account, it will automatically show.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Info.plist configuration.
&lt;/h2&gt;

&lt;p&gt;This section is quite simple, just make sure the Bundle display name and Bundle name is correct.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Update the launcher icon.
&lt;/h2&gt;

&lt;p&gt;Thanks to romannurik, at this &lt;a href="https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html#foreground.type=clipart&amp;amp;foreground.clipart=android&amp;amp;foreground.space.trim=1&amp;amp;foreground.space.pad=0.25&amp;amp;foreColor=rgba(96%2C%20125%2C%20139%2C%200)&amp;amp;backColor=rgb(68%2C%20138%2C%20255)&amp;amp;crop=0&amp;amp;backgroundShape=square&amp;amp;effects=none&amp;amp;name=ic_launcher" rel="noopener noreferrer"&gt;site&lt;/a&gt;, you can create an icon of your design. Once you do create one, Apple requires an iconset, so go to &lt;a href="https://appicon.co/" rel="noopener noreferrer"&gt;link&lt;/a&gt; and create an iconset with the icon you've created. Once you download the iconset, there should be a folder named Assets.xcassets, which contains another folder, but with the name AppIcon.appiconset.&lt;br&gt;
Now go back to Xcode and on the left panel, you should be able to find a folder named Assets.xcassets. It contains two files: AppIcon and LaunchImage. Delete AppIcon and drag/drop the Appicon.appiconset you downloaded. Now you have an iconset of your icon!&lt;/p&gt;
&lt;h2&gt;
  
  
  6. Identifier.
&lt;/h2&gt;

&lt;p&gt;Now let's head to &lt;a href="https://developer.apple.com/account/resources/identifiers/list" rel="noopener noreferrer"&gt;identifiers&lt;/a&gt;. In the identifiers tab, you should be able to see a number of identifiers that you've created (none, if you haven't). We'll create a new identifier for our app. Since flutter only supports iOS and macOS, do not check tvOS, and fill in the rest as you've created in the previous steps. Make sure that the Bundle ID is the same as you've set in the previous steps.&lt;/p&gt;
&lt;h2&gt;
  
  
  7. App Store Connect
&lt;/h2&gt;

&lt;p&gt;Let's now actually create an app in App Store by adding it in (App Store Connect)[&lt;a href="https://appstoreconnect.apple.com/apps" rel="noopener noreferrer"&gt;https://appstoreconnect.apple.com/apps&lt;/a&gt;]. Name and BundleID should match the Runner's information and SKU can be anything, but many just use their display name in one word.&lt;br&gt;
Fill in all of the information that you can, including the ones on the left panel.&lt;/p&gt;
&lt;h2&gt;
  
  
  8. Build ipa and upload.
&lt;/h2&gt;

&lt;p&gt;Open terminal and use the following command at the project directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter build ipa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the process, you'll be asked to type your password a lot. This password is simply your device's password. Since it will constantly pop up, a neat trick is to click 'Always Allow' :)&lt;br&gt;
Now in Xcode, open a new file named Runner.xcarchive in the project/build/ios/archive directory.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkxmxoskw9uhjq504h98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkxmxoskw9uhjq504h98.png" alt="Alt Text" width="800" height="143"&gt;&lt;/a&gt;&lt;br&gt;
(Look at all my failed attempts..)&lt;br&gt;
Before you distribute it, validate the app first to make sure it runs safely and correctly. If it runs smoothly, then distribute it. Since we set automatic signing, there's not much for us to do then to wait until it is pushed to Apple server. Once it is finished, go back to App Store Connect and you should be able to select the build. Remember to submit it so that Apple can approve your app. Within 24-48 hours, your app will be approved and searchable in App Store!&lt;/p&gt;

&lt;h2&gt;
  
  
  9. iOS Screenshot dimensions.
&lt;/h2&gt;

&lt;p&gt;When deploying, App Store Connect will require you to put in some screenshots of your app with several dimensions: 5.5, 6.5, 12.9. Capturing screenshots of the following devices will suffice. From my experience, the required screenshots for iPad Pro 2nd generation can be used for iPad Pro 3rd generation, and vice versa.&lt;/p&gt;

&lt;p&gt;5.5 - iPhone 6S Plus, iPhone 7 Plus, iPhone 8 Plus&lt;br&gt;
6.5 - iPhone XS Pro Max, iPhone 11 Max&lt;br&gt;
12.9 - iPad 12.9 inch 5th generation&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Updating your app.
&lt;/h2&gt;

&lt;p&gt;Remember that this still is a flutter app and all of the edits will be done in flutter itself. Therefore, we have to go to pubspec.yaml and update the version of your app. &lt;a href="https://flutter.dev/docs/deployment/android#updating-the-apps-version-number" rel="noopener noreferrer"&gt;Flutter documentation for version control&lt;/a&gt; is somewhat confusing. Basically, 1.0.0 is the version number and the number after + is the build number. Whenever there is a minor update, you should update the version as the following: 1.0.1+2. The next iteration will be 1.0.2+3, and so forth. Then, you'll build again, validate the app, distribute it, and update your build at App Store Connect.&lt;/p&gt;




&lt;p&gt;That sums up on how to publish an app on App Store for flutter apps. If you're also interested in how to publish an app on Play Store, follow this &lt;a href="https://dev.to/mimanjh/flutter-deploying-your-app-to-play-store-2nnc"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If there are things I could improve on, please don't hesitate to let me know! I'm all ears :)&lt;/p&gt;

&lt;p&gt;-JH&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jacobjhunsaker/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/mimanjh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>flutter</category>
      <category>tutorial</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Dev.to and Grammarly?</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Sat, 22 May 2021 02:44:13 +0000</pubDate>
      <link>https://forem.com/mimanjh/dev-to-and-grammarly-b63</link>
      <guid>https://forem.com/mimanjh/dev-to-and-grammarly-b63</guid>
      <description>&lt;p&gt;As I was trying to create/edit a post the other day, I noticed something really odd. It might just be an issue with my pc or Chrome, but I was able to click on any buttons, but was not able to click on the text field, which is a BIG problem if I'm trying to write a post. As a developer, I did my usual and went into Chrome console by inspecting if there are any console errors and found this.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjbm9urb24atgqbczbkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjbm9urb24atgqbczbkb.png" alt="Console error from Grammarly" width="800" height="254"&gt;&lt;/a&gt;&lt;br&gt;
An easy solution I found was to go to the Chrome Extensions and turn off Grammarly while I'm in Dev.to.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq2ndanjnkru3jt9f5bqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq2ndanjnkru3jt9f5bqt.png" alt="Alt Text" width="680" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this helps someone with the same problem!&lt;/p&gt;

&lt;p&gt;If there are things I could improve on, please don't hesitate to let me know! I'm all ears :)&lt;/p&gt;

&lt;p&gt;-JH&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jacobjhunsaker/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/mimanjh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>troubleshooting</category>
      <category>unexpected</category>
      <category>consoleerror</category>
    </item>
    <item>
      <title>Vue CLI</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Thu, 20 May 2021 06:49:19 +0000</pubDate>
      <link>https://forem.com/mimanjh/vue-cli-4gea</link>
      <guid>https://forem.com/mimanjh/vue-cli-4gea</guid>
      <description>&lt;p&gt;Today, I want to talk a little bit about the basics. &lt;/p&gt;

&lt;p&gt;When starting a project in Vue, the easiest and fastest way is to utilize something called Vue CLI, standing for Command-line Interface. Simply put, it scaffolds a basic website in Vue for developers to start on. For those who are more familiar with React, this would be in the same category as "create-react-app", but better. Let's get into finding out what it is in more detail, how to install/use it, and some plugins that can be used to make it even better.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is Vue CLI?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://cli.vuejs.org/" rel="noopener noreferrer"&gt;Vue CLI&lt;/a&gt; is the node installable Command-line Interface, providing a full system for rapid Vue.js development. With Vue CLI, developers can have a pre-built project they can easily adjust to their needs. It is nicely built, so that you do not have to spend unnecessary time on configurations, dependencies, webpack, etc. It also provides instant prototyping, allowing us to easily debug and visualize what's going on. What I like the most about Vue CLI is its collection of plugins. With just a simple line of code, you can add plugins to your project and utilize them accordingly. &lt;/p&gt;

&lt;h1&gt;
  
  
  Installing Vue CLI
&lt;/h1&gt;

&lt;p&gt;Before we install Vue CLI, let's make sure we have Vue installed. Assuming everyone has &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; installed, we will be using npm to install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;vue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To test whether we were successful in downloading it, we can check its version.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we have Vue installed, let's install Vue CLI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;vue&lt;/span&gt;&lt;span class="sr"&gt;/cl&lt;/span&gt;&lt;span class="err"&gt;i
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Build an APP
&lt;/h1&gt;

&lt;p&gt;It's no good if we don't use what we have just installed. Let's go on and create an app using Vue CLI, and implement some plugins that I recommend.&lt;br&gt;
On the command line, once you navigate to the directory, this code will allow you to create a folder called app at your current repository, with everything you need for a Vue project set inside. Replace 'app' with the name of your project/folder. You will be prompted with many given presets. Unless required, you will most likely use the default configurations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// you can replace 'app' with a name of your choice&lt;/span&gt;
&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;
&lt;span class="c1"&gt;// or&lt;/span&gt;
&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the command line, cd into the directory you've just created, and check our instant-prototyping.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;
&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;serve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you open your browser to localhost:8080, Voila! You will see the app running, and any changes you make will be applied to your site instantly.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fychrep1hurynurrpwfg5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fychrep1hurynurrpwfg5.png" title="Vue CLI example page" alt="Vue CLI example page" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Now that you have the basic CLI set up, you can add plugins to enhance your programming experience with Vue. These plugins have helped me become a better developer, guiding me through each step on how to use it. The plugins I recommend you to install, or at least tryout, are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://vuex.vuejs.org/" rel="noopener noreferrer"&gt;vuex&lt;/a&gt; : A State Management Pattern + library for Vue.js apps, meaning it helps us control the states of our nested components.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vuetifyjs.com/en/" rel="noopener noreferrer"&gt;vuetify&lt;/a&gt; : A plugin that utilizes the Material Design Framework. It helps developers with UI components, with absolutely incredible documentation. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://quasar.dev/" rel="noopener noreferrer"&gt;quasar&lt;/a&gt; : A plugin that enhances the Vue.js user interface in a very user-friendly way. For starters, you can set up all of the interfaces in advance and get the code for you to adjust.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;vuex&lt;/span&gt;
&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;vuetify&lt;/span&gt;
&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;quasar&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Today, I've shared some information about the Vue CLI and some useful plugins/user interfaces. Once you get to know how to use it, starting a project becomes a smoother process. Of course, having a more configured and defined project for implementing other plugins, or components, is another strength that follows.&lt;/p&gt;

&lt;p&gt;If there are things I could improve on, please don't hesitate to let me know! I'm all ears :)&lt;/p&gt;

&lt;p&gt;-JH&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jacobjhunsaker/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/mimanjh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Using json-server for quick databases</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Tue, 30 Mar 2021 23:43:50 +0000</pubDate>
      <link>https://forem.com/mimanjh/using-json-server-for-quick-databases-529o</link>
      <guid>https://forem.com/mimanjh/using-json-server-for-quick-databases-529o</guid>
      <description>&lt;p&gt;This time, I would like to introduce a very handy npm package for creating &amp;amp; using a simple JSON database called json-server. For the official documentation from the developer, you can check this &lt;a href="https://www.npmjs.com/package/json-server" rel="noopener noreferrer"&gt;site&lt;/a&gt; out. &lt;/p&gt;




&lt;p&gt;To start off, let's install the package, first! Just like any other npm packages, you can simply install it using npm.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g json-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you have the package installed, the next step is creating a json file with the name db.json with some data in it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"address"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Jacob Hunsaker"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"address"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Somewhere in United States"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"phone_num"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123-456-7890"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"email"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"jacobjhunsaker@gmail.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"id"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you have everything set up, you can now actually use json-server. You can start json-server by going to the directory that has db.json and typing the following in the console.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;json-server --watch db.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if you go to &lt;a href="http://localhost:3000/address/1" rel="noopener noreferrer"&gt;http://localhost:3000/address/1&lt;/a&gt;, you'll get the following in JSON.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"name": "Jacob Hunsaker",
"address": "Somewhere in United States",
"phone_num": "123-456-7890",
"email": "jacobjhunsaker@gmail.com",
"id": 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now in your front-end (Vue.js &amp;amp; axios in my case), you'll just need to GET/POST/PUT/PATCH/DELETE the data into &lt;a href="http://localhost:3000/address" rel="noopener noreferrer"&gt;http://localhost:3000/address&lt;/a&gt;. Since we're using json, we'll also have to add the headers to your PUT/PATCH request.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
               &lt;span class="s2"&gt;`http://localhost:3000/address/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
               &lt;span class="p"&gt;{&lt;/span&gt;
                  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;PATCH&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updatedContact&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json; charset=UTF-8&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                  &lt;span class="p"&gt;},&lt;/span&gt;
               &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a sample page, please check this simple &lt;a href="https://github.com/mimanjh/addressbook" rel="noopener noreferrer"&gt;Github&lt;/a&gt; repository using Vue.js.&lt;/p&gt;

&lt;p&gt;If there are things I could improve on, please don't hesitate to let me know! I'm all ears :)&lt;/p&gt;

&lt;p&gt;-JH&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jacobjhunsaker/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/mimanjh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Javascript: Adjusting time-zone differences</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Wed, 24 Mar 2021 02:06:15 +0000</pubDate>
      <link>https://forem.com/mimanjh/javascript-adjusting-time-zone-differences-2af6</link>
      <guid>https://forem.com/mimanjh/javascript-adjusting-time-zone-differences-2af6</guid>
      <description>&lt;p&gt;Using DateTime in JS is sometimes very annoying. When we're trying to manipulate Date objects, many times, we end up with time-zone differences, maximum days differences in months, wrong format, etc. This post will be mainly talking about a handy function I keep for adjusting timezone differences.&lt;/p&gt;




&lt;p&gt;Unless we're using other JS packages such as moment.js, we are stuck with the basic JS Datetime object. Here is the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;. The documentation is very well-written with great examples to understand. What I would like to use from the documentation today is Date.prototype.getTimezoneOffset(). This built-in Datetime function returns the time-zone offset in minutes for the current location to UTC. For example, if you're in MST, the time-zone offset would be -7, since it is 7 hours behind UCT.&lt;/p&gt;

&lt;p&gt;So, now let's get into the function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;adjustForTimezone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;timeOffsetInMS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getTimezoneOffset&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;timeOffsetInMS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function takes in a date parameter and changes the offset to Milliseconds. Date.setTime() gathers a millisecond value and outputs a Datetime value into the given parameter in the format (Day Mon dd yyyy hh:mm:ss Timezone).&lt;/p&gt;




&lt;p&gt;Once we get the correct date, now we're up to changing the format to match the requirements package we're using needs or to simply make it more visually appealing. &lt;/p&gt;

&lt;p&gt;For a sample page using this function, please check this simple &lt;a href="https://github.com/mimanjh/adjustForTimeZone" rel="noopener noreferrer"&gt;Github&lt;/a&gt; repository using Vue.js.&lt;/p&gt;

&lt;p&gt;If there are things I could improve on, please don't hesitate to let me know! I'm all ears :)&lt;/p&gt;

&lt;p&gt;-JH&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jacobjhunsaker/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/mimanjh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>What I learned from Stack Overflow Developer Survey 2020</title>
      <dc:creator>Jacob Hunsaker</dc:creator>
      <pubDate>Fri, 19 Mar 2021 20:28:48 +0000</pubDate>
      <link>https://forem.com/mimanjh/what-i-learned-from-stack-overflow-developer-survey-2020-3ma2</link>
      <guid>https://forem.com/mimanjh/what-i-learned-from-stack-overflow-developer-survey-2020-3ma2</guid>
      <description>&lt;p&gt;As someone about to graduate from university and start my career, I have much interest in what's trending at the moment. Luckily, Stack Overflow has done me a favor in not only explaining what's up but with visualization. Stack Overflow takes &lt;a href="https://insights.stackoverflow.com/survey/2020" rel="noopener noreferrer"&gt;surveys&lt;/a&gt; every year from their users to see who their viewers are, where they reside, and what they do. Being one of the most visited sites for software developers, the census from this site can be of great use for people like me. With this in mind, I want to share what I, a beginner of the web-dev community, learned from the survey.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://insights.stackoverflow.com/survey/2020#experience" rel="noopener noreferrer"&gt;1.&lt;/a&gt; Many have started their coding-life when they were 14-15 years old. &lt;br&gt;
As for someone from South Korea, this was very shocking and discouraging on some points, since most mandatory-level school students in Korea don't get to even see a single line of "code" unless they attend an IT school. I got to think whether my life would have been easier/changed if I learned to code earlier in my life? &lt;del&gt;Probably not&lt;/del&gt;, but might have had an advantage when I really started to learn the language. This information made me realize that I am at a somewhat disadvantage, and to make up for it, I should do more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved" rel="noopener noreferrer"&gt;2.&lt;/a&gt; Approximately 50% of people using JavaScript/HTML/CSS love their languages.&lt;br&gt;
This is encouraging! I already know the gist of JavaScript, HTML, and CSS, and getting to know the fact that at least 50% of the people are satisfied with it helps with the effort I put in and will be putting in, in the future. What is Rust, by the way?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://insights.stackoverflow.com/survey/2020#technology-collaboration-tools" rel="noopener noreferrer"&gt;3.&lt;/a&gt; Of many collaboration tools, I HAVE TO know GitHub. &lt;br&gt;
GitHub, Slack, and Jira are the top three collaboration tools, but for developers, GitHub seems to be essential. Slack and Jira, from my experience, are basically a way to communicate with the team, while GitHub is more of a way to collaborate your projects with. Using Visual Studio, GitHub was really easy: just a few clicks then you're good! However, I do not know, confidently, how to manually change branches, init, commit, push, and pull. This is also something I should work on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://insights.stackoverflow.com/survey/2020#technology-what-do-you-do-when-you-get-stuck" rel="noopener noreferrer"&gt;4.&lt;/a&gt; Trying to solve problems in one go might not be the best way to approach problems. &lt;br&gt;
Of course, it is good to be able to solve a problem right away. What I mean by this is trying to solve the problem in one go when I've been stuck with it for a little while. I have a tendency to focus on one thing when until I'm satisfied with what I got. Sometimes solving one error leads to ten more, and trying to solve it until it is complete might not be in the next 30 minutes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://insights.stackoverflow.com/survey/2020#work-salary-by-developer-type-united-states" rel="noopener noreferrer"&gt;5.&lt;/a&gt; Full-Stack Developer makes good money. &lt;br&gt;
Considering that majority of the survey was done to developers in the field for 5-10 years, a yearly salary of $112k is very good, in my opinion. What that pointed out the most, tho, was the salary difference in front-end ($110k), full-stack ($112k), and back-end ($120k). From my experiences in web development, I'm more inclined to work in the front-end. Would the salary and preference difference be worth it? We'll see.&lt;/p&gt;




&lt;p&gt;I think a Full-Stack Developer is currently in a great spot. Depending on education in the next few months/years, I would be able to decide whether to pursue a career in Full-Stack, Front-end, or even Back-end. I should continue doing what I like. It's time for me to go create some more sites.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
