<?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: Sean Walsh</title>
    <description>The latest articles on DEV Community by Sean Walsh (@seanwalsh).</description>
    <link>https://dev.to/seanwalsh</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%2F123359%2F5d522436-22e7-4391-b27e-1bb2771c70bb.png</url>
      <title>DEV Community: Sean Walsh</title>
      <link>https://dev.to/seanwalsh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seanwalsh"/>
    <language>en</language>
    <item>
      <title>Stuff I've Been Fiddling With Lately</title>
      <dc:creator>Sean Walsh</dc:creator>
      <pubDate>Sun, 10 Jun 2018 19:16:07 +0000</pubDate>
      <link>https://dev.to/seanwalsh/stuff-ive-been-fiddling-with-lately-1kpk</link>
      <guid>https://dev.to/seanwalsh/stuff-ive-been-fiddling-with-lately-1kpk</guid>
      <description>

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://swalsh.org/blog/stuff-ive-been-fiddling-with-lately"&gt;https://swalsh.org/blog/stuff-ive-been-fiddling-with-lately&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've been playing with a variety of languages and frameworks over the past month or two, but haven't had substantial enough experience with any of them to feel comfortable writing an in-depth blog post. However, I do have some opinions so I thought I'd gather some bite-sized pieces into one post. Hoping to write more on some of these technologies in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Native
&lt;/h2&gt;

&lt;p&gt;Big fan of &lt;a href="https://facebook.github.io/react-native/"&gt;React Native&lt;/a&gt;. I've done a bit of Objective-C/Swift/Java but have never enjoyed building UIs in any of them. React Native definitely gets me a lot closer to something I'm comfortable with. That being said, it's not all great. After a lot of trial-and-error I finally landed on &lt;a href="https://reactnavigation.org/"&gt;React Navigation&lt;/a&gt; as my routing solution. It's not perfect, but it works. The main contender, &lt;a href="https://github.com/wix/react-native-navigation"&gt;React Native Navigation&lt;/a&gt;, seems cool but it's an awful lot of setup without a real compelling argument to switch.&lt;/p&gt;

&lt;p&gt;My biggest beef with RN routing is probably a side effect of spending the majority of my career working on web apps, but it just feels &lt;em&gt;super&lt;/em&gt; inflexible. For example, the hobby app I'm working on uses drawer navigation but also wants a persistent header with some stack navigation, so basically a combination of two of the three routing options offered by React Navigation. I was unable to accomplish a persistent header with contextual back buttons without moving my routing state into Redux, which is something that React Navigation &lt;a href="https://reactnavigation.org/docs/en/redux-integration.html"&gt;recommends against&lt;/a&gt;. Overall, not a great experience but I made it work.&lt;/p&gt;

&lt;p&gt;I'm looking forward to exploring RN more in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  NativeScript
&lt;/h2&gt;

&lt;p&gt;Since we use Angular at DroneDeploy, I also wanted to give &lt;a href="https://www.nativescript.org/"&gt;NativeScript&lt;/a&gt; a fair shot. I'm no stranger to Angular and its idiosyncrasies, but I just didn't get the same rapid development vibe from NS as I did from RN. It felt like I did a lot more stumbling than I did with RN, even though I have far more experience with Angular. My biggest dislike is the wide variety of &lt;a href="https://docs.nativescript.org/ui/layouts#predefined-layouts"&gt;layout containers&lt;/a&gt;: FlexboxLayout, AbsoluteLayout, DockLayout, GridLayout, StackLayout, and WrapLayout. I get that the NS team is trying to give you solid options, but I felt like I spent the majority of my time with each component trying to decide which layout I wanted. RN's ubiquitous &lt;code&gt;&amp;lt;View /&amp;gt;&lt;/code&gt; made me feel a lot more productive.&lt;/p&gt;

&lt;p&gt;I'll definitely dig into NS more in the future, but if I was greenfielding an app I would lean strongly toward RN at this point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Realm Database
&lt;/h2&gt;

&lt;p&gt;The only database solution I've used for native apps in the past is sqlite, so I wanted to spread out a bit and try something new. I landed on &lt;a href="https://realm.io/products/realm-database/"&gt;Realm&lt;/a&gt;, which is a NoSQL database that was designed for native apps. I'm not a huge fan of NoSQL for large scale data, but I will admit that it's a great fit for a quick local database. I attempted to get Realm in sync with my Redux store via &lt;a href="https://github.com/redux-observable/redux-observable"&gt;redux-observable&lt;/a&gt;, but ended up causing more issues than I solved so I ultimately left it out of Redux. If I was working on a serious project, I'd likely spend a bit more time trying to get this working because it was a bit limiting.&lt;/p&gt;

&lt;p&gt;Biggest issue: No cascading deletes. Realm models support relationships (both 1:m and m:m), but it is insanely easy to leave orphaned records unless you're very diligent with your delete logic. I could see this becoming &lt;em&gt;very&lt;/em&gt; problematic with a complex data model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Elm
&lt;/h2&gt;

&lt;p&gt;After avoiding &lt;a href="http://elm-lang.org/"&gt;Elm&lt;/a&gt; for a long time (and for no good reason), I finally gave in and went through their excellent &lt;a href="https://www.elm-tutorial.org/en/"&gt;tutorial&lt;/a&gt;. The tutorial is phenomenal and gave me a solid understanding of both the language and the typical architecture of an Elm program. I think it's a neat language and I'd like to build something with it in the future, but I don't have any great ideas right now so it'll probably sit on my "one day" shelf for a while.&lt;/p&gt;

&lt;p&gt;Two nits to pick:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex business logic can get pretty verbose. This is probably in part due to my unfamiliarity with the language, but in general it felt like I did a &lt;em&gt;lot&lt;/em&gt; of typing.&lt;/li&gt;
&lt;li&gt;I don't really care for the view/template syntax. I think I've just gotten used to XML-esque syntax for views and this threw me off my game a bit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ReasonML
&lt;/h2&gt;

&lt;p&gt;I couldn't really get into &lt;a href="https://reasonml.github.io/"&gt;Reason&lt;/a&gt;. I think it's a cool project, but I just didn't see it giving me a strong edge over regular TypeScript + React. Also, I'm totally &lt;a href="https://twitter.com/marcelcutts/status/1002153230757978113?s=19"&gt;one of these people&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An oddly common exchange&lt;/p&gt;

&lt;p&gt;"So you get all this amazing stuff with @reasonml and ReasonReact that saves you time and lets you sleep soundly at night."&lt;/p&gt;

&lt;p&gt;"Yeah but you gotta write &lt;code&gt;ReasonReact.string&lt;/code&gt; to put text into components I'm out fam"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Rust
&lt;/h2&gt;

&lt;p&gt;I'm fully aware that I'm drinking the Kool-Aid, but I &lt;em&gt;really&lt;/em&gt; want to like &lt;a href="https://www.rust-lang.org/en-US/"&gt;Rust&lt;/a&gt;. I really like the syntax, but the language concepts just haven't clicked with me yet. It's a pretty big shift from web development so I think I just need to stick with it, but it's pretty tough to wrap my head around. There's an Elm-inspired UI crate called &lt;a href="https://github.com/antoyo/relm"&gt;Relm&lt;/a&gt; that looks really promising and I think I'll probably try to focus on that if I give Rust another shot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Stuff?
&lt;/h2&gt;

&lt;p&gt;Want to convince me I'm wrong about any of these? Or have something I should be playing with? Leave me a comment!&lt;/p&gt;


</description>
      <category>reactnative</category>
      <category>rust</category>
      <category>elm</category>
      <category>reason</category>
    </item>
  </channel>
</rss>
