<?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: Tom Markiewicz</title>
    <description>The latest articles on DEV Community by Tom Markiewicz (@tmarkiewicz).</description>
    <link>https://dev.to/tmarkiewicz</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%2F143432%2Fed6a5dba-5431-44fc-a74c-6d9337209641.jpg</url>
      <title>DEV Community: Tom Markiewicz</title>
      <link>https://dev.to/tmarkiewicz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tmarkiewicz"/>
    <language>en</language>
    <item>
      <title>How to use Weather Company Data and Netatmo with Ruby</title>
      <dc:creator>Tom Markiewicz</dc:creator>
      <pubDate>Fri, 15 Mar 2019 17:08:26 +0000</pubDate>
      <link>https://dev.to/ibmdeveloper/how-to-use-weather-company-data-and-netatmo-with-ruby-2igj</link>
      <guid>https://dev.to/ibmdeveloper/how-to-use-weather-company-data-and-netatmo-with-ruby-2igj</guid>
      <description>&lt;p&gt;While weather insights are critical to many businesses, local weather data on a more personal and practical level can be important as well. Since I recently moved to an area with some pretty extreme weather, I find myself monitoring and measuring the local conditions much more than I used to. And with wind gusts that regularly exceed 50mph in the winter, this isn’t just an academic interest. Safety (both personal and property) is a significant concern.&lt;/p&gt;

&lt;p&gt;In addition to the wind, I’m a skier, so I’m always interested in the amount of snow in the forecast. For some reason, this isn’t often displayed in most popular weather apps at a glance, so I was interested in building something simple to track my local weather as well as the forecast tailored to my interests.&lt;/p&gt;

&lt;p&gt;To monitor the weather, a recent addition to my home was the &lt;a href="https://www.netatmo.com/en-us/weather" rel="noopener noreferrer"&gt;Netatmo Smart Home Weather Station&lt;/a&gt; with a &lt;a href="https://www.netatmo.com/en-us/weather/weatherstation/accessories#windgauge" rel="noopener noreferrer"&gt;wind gauge module&lt;/a&gt;. While Netatmo provides an app and web dashboard to view all your data, it’s a bit much at times, especially when there are only a couple measurements I’m interested in monitoring. You can see a demo app of their dashboard &lt;a href="https://my.netatmo.com/app/station?demomode=true" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Additionally, they offer excellent integration with &lt;a href="https://www.netatmo.com/en-us/helpcenter/weather/1/how-do-i-set-up-amazon-alexa-to-control-netatmo-products/331" rel="noopener noreferrer"&gt;Alexa&lt;/a&gt; and &lt;a href="https://ifttt.com/services/netatmo" rel="noopener noreferrer"&gt;IFTTT&lt;/a&gt; so that you can incorporate your weather monitoring into a home automation system.&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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2Fnetatmo-dashboard-1024x653.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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2Fnetatmo-dashboard-1024x653.png" alt="Netatmo Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As my neighbor regularly texts me to find out what the station is measuring for the wind gusts on particularly bad evenings (hey, get your own!), I thought it would be interesting to explore my recorded data using the &lt;a href="https://dev.netatmo.com/en-US/resources/technical/reference/weatherapi" rel="noopener noreferrer"&gt;Netatmo API&lt;/a&gt; as well as examining at how it corresponds to an accurate weather API with a forecast.&lt;/p&gt;

&lt;p&gt;There are numerous popular weather data APIs available for free or low cost, but since IBM owns the &lt;a href="https://www.ibm.com/weather" rel="noopener noreferrer"&gt;Weather Company&lt;/a&gt;, I figured this would be a logical place to start and be an interesting way to experiment with their weather data.&lt;/p&gt;

&lt;p&gt;IBM bought the Weather Company in 2016 and offers its weather data as an API available through the IBM Cloud. From IBM:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Weather Company, an IBM Business, delivers personalized, actionable insights to consumers and businesses across the globe by combining the world’s most accurate weather data with industry-leading AI, Internet of Things (IoT) and analytics technologies.&lt;/p&gt;

&lt;p&gt;Our solutions provide newscasters, pilots, energy traders, insurance agents, state employees, retail managers and more with insight into weather’s impact on their businesses, helping them make smarter decisions to improve safety, reduce costs and drive revenue.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href="https://twcservice.mybluemix.net/rest-api/" rel="noopener noreferrer"&gt;Weather Company API&lt;/a&gt; provides a ton of data including an hourly forecast, daily forecast, intraday forecast, current conditions, historical data, weather alerts, location services, and almanac services.&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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2FIBM-Weather-Company.jpg" 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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2FIBM-Weather-Company.jpg" alt="IBM Weather Company Data"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, I’ll only be using the 3-day forecast, but the API offers a daily forecast for each of the next 3, 5, 7, or 10 days starting from the current day, including forecasts for the daytime and nighttime segments.&lt;/p&gt;

&lt;p&gt;As far as &lt;a href="https://cloud.ibm.com/catalog/services/weather-company-data" rel="noopener noreferrer"&gt;pricing&lt;/a&gt;, on a free plan you get 10 API calls per minute and then 10,000 calls total per account. So the free plan isn’t free forever, and once you hit the 10,000 call limit, you’ll have to start paying. But this is more than enough for testing, prototypes, and hobby projects.&lt;/p&gt;

&lt;p&gt;For this article, I’ll be illustrating how to use &lt;a href="https://www.ruby-lang.org/en/" rel="noopener noreferrer"&gt;Ruby&lt;/a&gt; to make access and parse the data from both APIs. In a future article, I’ll examine building a basic dashboard to monitor the data you’re interested in on the web (and in my case stop my neighbor from asking me!).&lt;/p&gt;

&lt;p&gt;To follow along with the entire demo though, you’ll need an actual Netatmo device and account as they don’t offer any &lt;a href="https://dev.netatmo.com/resources/technical/support/helpcenter" rel="noopener noreferrer"&gt;demo keys, products, or a sandbox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The full tutorial walkthrough and repo can be found on Github here: &lt;a href="https://github.com/tmarkiewicz/weather-ruby" rel="noopener noreferrer"&gt;https://github.com/tmarkiewicz/weather-ruby&lt;/a&gt; and I’ll highlight some of the key steps below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Initial setup
&lt;/h3&gt;

&lt;p&gt;As you can see from the tutorial repo, I’m using Ruby on a Mac. OS X comes installed with Ruby, but you can check your version using this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ruby -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to upgrade (or install multiple versions of Ruby), I recommend using the &lt;a href="https://rvm.io/" rel="noopener noreferrer"&gt;Ruby Version Manager (RVM)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next step is to clone the repo from Github and then run the bundler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone https://github.com/tmarkiewicz/weather-ruby
$ cd weather-ruby

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

&lt;/div&gt;



&lt;p&gt;Then you’ll need to install the required Ruby gems using the &lt;a href="https://bundler.io/" rel="noopener noreferrer"&gt;Bundler&lt;/a&gt; Ruby gem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ gem install bundler
$ bundle install

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

&lt;/div&gt;



&lt;p&gt;The tutorial code samples in Ruby can be run from the command line via this syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ruby filename.rb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next two sections outline how to use the tutorial for both Weather Company Data and then Netatmo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Weather Company
&lt;/h3&gt;

&lt;p&gt;To access the Weather Company Data API, you’ll need an account on the IBM Cloud. My &lt;a href="https://github.com/tmarkiewicz/weather-ruby" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; outlines the process in detail, but the necessary steps are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sign up (or sign in) for the &lt;a href="https://cloud.ibm.com" rel="noopener noreferrer"&gt;IBM Cloud&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;add the &lt;a href="https://cloud.ibm.com/catalog/services/weather-company-data" rel="noopener noreferrer"&gt;Weather Company Data&lt;/a&gt; as a new service&lt;/li&gt;
&lt;li&gt;select the free plan&lt;/li&gt;
&lt;li&gt;select add credentials, then view the credentials’ JSON&lt;/li&gt;
&lt;li&gt;add these credentials to a .env file in the app directory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a side note, there’s a great guide to using environment variables in Ruby &lt;a href="https://blog.honeybadger.io/ruby-guide-environment-variables/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. In the tutorial, I also use this Ruby gem: &lt;a href="https://github.com/bkeepers/dotenv" rel="noopener noreferrer"&gt;https://github.com/bkeepers/dotenv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is to make a test API call. I like to always start with curl or the &lt;a href="https://www.getpostman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt; app to test any API credentials, the construction of the API endpoint, and of course the results:&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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2Fpostman-weather-company-data-api-1024x653.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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2Fpostman-weather-company-data-api-1024x653.png" alt="Postman with Weather Company Data API"&gt;&lt;/a&gt;From the &lt;a href="https://twcservice.mybluemix.net/rest-api/" rel="noopener noreferrer"&gt;Weather Company Data API docs&lt;/a&gt;, we can build the URL to make a request to retrieve the 3-day forecast for a specific latitude and longitude like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://twcservice.mybluemix.net/api/weather/v1/geocode/40.014984/-105.270546/forecast/daily/3day.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the URL above, replace the latitude/longitude with those of the location you’d like to retrieve weather data. An excellent site to find your latitude and longitude can be found at &lt;a href="https://www.latlong.net/" rel="noopener noreferrer"&gt;LatLong.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now that we have all the requirements, we can run the main file from the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ruby weather-company.rb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the output will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Forecast for Friday, February 22, 2019:
Periods of snow. Lows overnight in the upper teens.
1 to 3 inches of snow expected.
Snow this evening will give way to lingering snow showers late. Low 19F. Winds light and variable. Chance of snow 80%. Snow accumulating 1 to 3 inches.

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Netatmo
&lt;/h3&gt;

&lt;p&gt;As I mentioned above, this part of the tutorial is only available if you already have one or more Netatmo devices. If you’re looking at a full featured weather station with API access, I highly recommend their system as it’s pretty affordable for all the features provided.&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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2FWeather_Station_iPhone_6-FR_WEB-1-1024x691.jpg" 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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2FWeather_Station_iPhone_6-FR_WEB-1-1024x691.jpg" alt="Netatmo Weather Station and iOS app"&gt;&lt;/a&gt;Photo via Netatmo: Masaki Okumura, Marion Leflour, and Fred Raynaud&lt;/p&gt;

&lt;p&gt;That said, you can still follow along with the remainder of this demo and if/when you get a Netatmo device you’ll know where to go for some step-by-step instructions.&lt;/p&gt;

&lt;p&gt;One caveat on the data from Netatmo devices: they unfortunately only send measurements to the servers &lt;a href="https://dev.netatmo.com/resources/technical/guides/ratelimits" rel="noopener noreferrer"&gt;every ten minutes&lt;/a&gt;. From the Netatmo API docs:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not try to pull data every minute. Netatmo Weather Station sends its measures to the server every ten minutes. Get the last measures from all the devices of one user with the Getstationsdata method.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So while I’d much rather have some data much more frequently (wind speed and gusts come to mind), we have to work with what the company gives us in this case. Inconvenient for building a weather app, but not a dealbreaker.&lt;/p&gt;

&lt;p&gt;As with the Weather Company section, the full steps for setting up the Netatmo API are in the Github repo, but the basic steps are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if you already haven’t, create a user account with Netatmo&lt;/li&gt;
&lt;li&gt;sign up for a developer account&lt;/li&gt;
&lt;li&gt;create a new application&lt;/li&gt;
&lt;li&gt;copy the credentials for the new app&lt;/li&gt;
&lt;/ul&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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2Fnetatmo-connect-dashboard-3-1024x653.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%2Ftmarkiewicz.com%2Fwp-content%2Fuploads%2F2019%2F03%2Fnetatmo-connect-dashboard-3-1024x653.png" alt="Netatmo Connect developer dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve added the client id and client secret credentials to the .env file, you can then run the Netatmo file from the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ruby netatmo.rb

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

&lt;/div&gt;



&lt;p&gt;The output will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Time: 2019-03-12 14:19:50 -0600
Temperature: 50 deg F
Humidity: 45%

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

&lt;/div&gt;



&lt;p&gt;And that’s it! A quick and easy to way get access to local weather data and forecasts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;While this is an introductory tutorial on to how to access weather data via the Weather Company and Netatmo, it’s not accessible outside running locally on your machine. In a future article, I’ll show how to quickly take this data and deploy it to an actual application. Once that’s done, my neighbor will be happy and possibly stop texting me for wind updates!&lt;/p&gt;

&lt;p&gt;And if you're interested in using weather data with a mobile app, take a look at this tutorial on how to &lt;a href="https://ibm.biz/BdzFna" rel="noopener noreferrer"&gt;create a mobile app with weather forecasting&lt;/a&gt;. Additionally, take a look at using a &lt;a href="https://ibm.biz/BdzFnL" rel="noopener noreferrer"&gt;serverless approach to Weather Underground&lt;/a&gt; data.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>ibm</category>
      <category>netatmo</category>
      <category>weather</category>
    </item>
    <item>
      <title>Build a cross-platform mobile app using React Native</title>
      <dc:creator>Tom Markiewicz</dc:creator>
      <pubDate>Tue, 05 Mar 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ibmdeveloper/build-a-cross-platform-mobile-app-using-react-native-2h7p</link>
      <guid>https://dev.to/ibmdeveloper/build-a-cross-platform-mobile-app-using-react-native-2h7p</guid>
      <description>

&lt;p&gt;As part of my developer advocacy efforts at IBM, I often build and share demos to showcase our products and how developers can integrate them into their own applications.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://developer.ibm.com/"&gt;IBM Developer&lt;/a&gt; site provides a wealth of resources for developers with a focus on code, content, and community. And code patterns are our way of providing full solutions to common problems that developers regularly face in their work. These &lt;a href="https://developer.ibm.com/patterns/"&gt;code patterns&lt;/a&gt; “leverage multiple technologies to solve issues that our developer advocates have recognized as common use cases across multiple industries.”&lt;/p&gt;

&lt;p&gt;I recently finished a new code pattern that shows how to &lt;a href="https://ibm.biz/BdzRGW"&gt;create a cross-platform mobile application using React Native&lt;/a&gt; framework.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dIVObrk2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/974/0%2ALlyOdKvLfQzefBqV.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dIVObrk2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/974/0%2ALlyOdKvLfQzefBqV.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pattern I built uses &lt;a href="https://www.ibm.com/watson/services/discovery-news/"&gt;Watson Discovery News&lt;/a&gt; and &lt;a href="https://facebook.github.io/react-native/"&gt;React Native&lt;/a&gt; to build a cross-platform mobile app that fetches recent news for a specific company. React Native is a JavaScript framework that lets you write mobile apps for iOS and Android. The application uses Watson Discovery News to fetch recent and relevant news articles along with sentiment, keywords, and related concepts. Easily customizable, this demo app provides a convenient starting point to use Watson Discovery in your own React Native applications. Instead of learning Swift, Java, or Kotlin to build native mobile applications, you can quickly create apps using your JavaScript knowledge.&lt;/p&gt;

&lt;p&gt;React Native uses the same design as &lt;a href="https://reactjs.org/"&gt;React&lt;/a&gt;, letting you compose a rich mobile UI from declarative components. For an excellent overview on React Native and building mobile apps using only JavaScript, take a look at the article &lt;a href="https://ibm.biz/BdzRnc"&gt;Dissecting React Native&lt;/a&gt;. If you’re interested in diving deeper into React Native, I highly recommend the Udemy course &lt;a href="https://www.udemy.com/the-complete-react-native-and-redux-course/"&gt;The Complete React Native and Redux Course&lt;/a&gt; by Stephen Grider.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kMNDKnaY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AhBTM4lTtdm8FXRWD.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kMNDKnaY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AhBTM4lTtdm8FXRWD.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re unfamiliar with the service, &lt;a href="https://www.ibm.com/watson/developercloud/discovery.html"&gt;IBM Watson Discovery&lt;/a&gt; is a cognitive search and content analytics engine for applications to identify patterns, trends, and actionable insights. Using Discovery, developers can extract meta-data from returned content such as concepts, keywords, and sentiment using natural language understanding. &lt;a href="https://console.bluemix.net/docs/services/discovery/watson-discovery-news.html#watson-discovery-news"&gt;Watson Discovery News&lt;/a&gt; is an indexed dataset that is pre-enriched with natural language processing (NLP) features such as keywords, entities, semantic roles, sentiment, relations, and category classification. So instead of using two products (Watson Discovery and &lt;a href="https://www.ibm.com/watson/services/natural-language-understanding/"&gt;Natural Language Understanding&lt;/a&gt;), a developer can make a single API to get combined results.&lt;/p&gt;

&lt;p&gt;It’s easy to get started and try the application, even if you have no JavaScript expertise. Just clone the repo, sign up for a free IBM Cloud account, and then update the Discovery credentials with your own. You can have your own cross-platform mobile news app running in minutes.&lt;/p&gt;

&lt;p&gt;You can find the full repo on Github &lt;a href="https://github.com/IBM/build-react-native-app-for-watson-discovery"&gt;here&lt;/a&gt;. If you use this as a starting point for your application, please let me know!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://tmarkiewicz.com/build-a-cross-platform-mobile-app-using-react-native/"&gt;&lt;em&gt;tmarkiewicz.com&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on March 5, 2019.&lt;/em&gt;&lt;/p&gt;


</description>
      <category>javascript</category>
      <category>mobile</category>
      <category>reactnative</category>
      <category>mobileappdevelopment</category>
    </item>
    <item>
      <title>RubyMotion versus Swift for iOS Development</title>
      <dc:creator>Tom Markiewicz</dc:creator>
      <pubDate>Mon, 26 Nov 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/ibmdeveloper/rubymotion-versus-swift-for-ios-development-lno</link>
      <guid>https://dev.to/ibmdeveloper/rubymotion-versus-swift-for-ios-development-lno</guid>
      <description>

&lt;p&gt;As I worked on the &lt;a href="https://tmarkiewicz.com/video-machine-learning-on-ios-integrating-ibm-watson-with-core-ml-at-altconf/"&gt;IBM Watson and Apple Core ML&lt;/a&gt; partnership, I was inspired to explore more ways to showcase machine learning for developers in different ways. One of my ideas was to look into using RubyMotion with &lt;a href="https://www.ibm.com/watson/"&gt;IBM Watson&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you’re not familiar, &lt;a href="http://www.rubymotion.com/"&gt;RubyMotion&lt;/a&gt; lets developers quickly write cross-platform native apps for iOS, Android, and OS X using the &lt;a href="https://www.ruby-lang.org/en/"&gt;Ruby programming language&lt;/a&gt;. The applications are statically compiled and then call into the native platform APIs.&lt;/p&gt;

&lt;p&gt;As a Rubyist, when RubyMotion was first released in 2012, I was pretty excited. I had wanted to explore developing apps for iOS, but &lt;a href="https://en.wikipedia.org/wiki/Objective-C"&gt;Objective-C&lt;/a&gt; was not clicking for me, and it can be a challenging language to learn. So when Swift arrived, this fundamentally changed the equation as it was now much easier to get started developing for iOS. Swift for many developers was much easier to use while still as powerful.&lt;/p&gt;

&lt;p&gt;The rapid advancement of &lt;a href="https://developer.apple.com/swift/"&gt;Swift&lt;/a&gt; as the primary language for iOS development has significantly reduced the need as well as the appeal to write iOS applications in Ruby. At this point, it seems the main benefit would be a write-once approach to get iOS and Android support. However, at this point, there are much more popular and widely supported cross-platform mobile development options such as &lt;a href="https://facebook.github.io/react-native/"&gt;React Native&lt;/a&gt; (using JavaScript).&lt;/p&gt;

&lt;p&gt;However, the biggest issue I saw from the beginning is that to use the various APIs for each operating system, the developer still had to read and understand the APIs (written in the respective languages of Objective-C, Swift, or Java). So while you could write most of your code in Ruby, you’re not insulated from learning and understanding the APIs in their native language. Thus I’ve never been convinced of the actual overall savings at that point for RubyMotion other than a technological curiosity.&lt;/p&gt;

&lt;p&gt;Also, if you do a Google search for RubyMotion, you’re not going to find many recent results returned. So while this may look like it’s an opportunity to create tutorials and other content, I think the more significant reason is that RubyMotion was built when only Objective-C was an option for iOS development. Now that that Swift is becoming the primary iOS development language, the need for alternatives is significantly diminished.&lt;/p&gt;

&lt;p&gt;Unless there are some significant changes to RubyMotion (it did come under new ownership relatively recently), I’m not optimistic about its gaining any popularity among Ruby developers.&lt;/p&gt;

&lt;p&gt;I hope I’m wrong as I enjoy programming in Ruby, but I’ll be looking more to React Native for cross-platform mobile development.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://tmarkiewicz.com/rubymotion-versus-swift-for-ios-development/"&gt;&lt;em&gt;tmarkiewicz.com&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on November 26, 2018.&lt;/em&gt;&lt;/p&gt;


</description>
      <category>ruby</category>
      <category>ios</category>
      <category>mobileappdevelopment</category>
      <category>swift</category>
    </item>
  </channel>
</rss>
