<?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: timfong888</title>
    <description>The latest articles on DEV Community by timfong888 (@realquadrant).</description>
    <link>https://dev.to/realquadrant</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%2F172072%2F53d49d80-97e1-4e5c-9958-581744ddf709.jpg</url>
      <title>DEV Community: timfong888</title>
      <link>https://dev.to/realquadrant</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/realquadrant"/>
    <language>en</language>
    <item>
      <title>Suggestions on how to deep link and route using Flutter?</title>
      <dc:creator>timfong888</dc:creator>
      <pubDate>Mon, 11 Jul 2022 21:47:35 +0000</pubDate>
      <link>https://dev.to/realquadrant/suggestions-on-how-to-deep-link-and-route-using-flutter-4b7j</link>
      <guid>https://dev.to/realquadrant/suggestions-on-how-to-deep-link-and-route-using-flutter-4b7j</guid>
      <description>&lt;p&gt;Hello, I built an app using a third-party deep-linking service called GetSocial.&lt;/p&gt;

&lt;p&gt;Locally, on Xcode, I have been able to get the listener in main() to display the parameters that I pass through the deep link.&lt;/p&gt;

&lt;p&gt;However, I need to then route to a specific page and pass values to that page (ideally as a persisted local variable).&lt;/p&gt;

&lt;p&gt;But I am stuck.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReferralData globalReferralData;
    List&amp;lt;BuildContext&amp;gt; buildContextList = [];
    BuildContext context;


    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();

      FFAppState(); // Initialize FFAppState

      GetSocial.addOnInitializedListener(() =&amp;gt; {
            // GetSocial SDK is ready to use
          });

      runApp(MyApp());
      registerListeners();
    }

    void registerListeners() {
      Invites.setOnReferralDataReceivedListener((received) {
        globalReferralData = received;
        print(globalReferralData);
        print(globalReferralData.linkParams);
        print(globalReferralData.linkParams['referralID']);

        // pass value and open route -- this line failed to do anything

        Navigator.pushNamed(context, '/landingPage');

        // showAlert(buildContextList.last, 'Referral Data Received', '$received');
      });
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>flutter</category>
      <category>ios</category>
      <category>dart</category>
    </item>
    <item>
      <title>Newbie Tutorial to Smart Contract in Solidity</title>
      <dc:creator>timfong888</dc:creator>
      <pubDate>Fri, 03 Sep 2021 16:47:24 +0000</pubDate>
      <link>https://dev.to/realquadrant/newbie-tutorial-to-smart-contract-in-solidity-1ael</link>
      <guid>https://dev.to/realquadrant/newbie-tutorial-to-smart-contract-in-solidity-1ael</guid>
      <description>&lt;p&gt;I am basically rehashing tutorials found on YouTube but putting it into a format of learning and recall that helps me.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fat3g4j8mkbaviksctcsn.jpeg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fat3g4j8mkbaviksctcsn.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hopefully it will help you, too.&lt;/p&gt;

&lt;p&gt;I broke it down conceptually, into building blocks of what &lt;em&gt;I&lt;/em&gt; think are the basics to get up and running quickly.&lt;/p&gt;

&lt;p&gt;Going to do another one shortly with more details, but wanted to get feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  My approach
&lt;/h2&gt;

&lt;p&gt;I think about programming as one would with writing an essay.&lt;/p&gt;

&lt;p&gt;I am trying to come up with ways to organize the paragraph, subjects, verbs, objects.&lt;/p&gt;

&lt;p&gt;Please let me know what's not clear.&lt;/p&gt;

&lt;h2&gt;
  
  
  NOTE: How to start jamming right away!
&lt;/h2&gt;

&lt;p&gt;All of this can be done with this awesome IDE called Remix: &lt;a href="https://remix.ethereum.org" rel="noopener noreferrer"&gt;https://remix.ethereum.org&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Some syntax notes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Every standalone line should end in &lt;code&gt;;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;For functions, including constructor, no space before &lt;code&gt;()&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How do I define a contract?
&lt;/h2&gt;

&lt;p&gt;A contract is like a class.&lt;/p&gt;

&lt;p&gt;It looks 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;pragma solidity ^.0.8.0;

contract ContractName {
  //stuff goes here
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How do I set initial conditions?
&lt;/h2&gt;

&lt;p&gt;When the smart contract is first deployed, you may want a set of initial conditions.  &lt;/p&gt;

&lt;p&gt;This can be variables, like time, or a specific state.&lt;/p&gt;

&lt;p&gt;To do this, you use the constructor, which is run once and only once when running the smart contract.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract MyContract { 
  constructor() public {
     // initialized state goes here
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But what kinds of things can be set up in a constructor?&lt;/p&gt;

&lt;p&gt;There might be values you want to start with.  So this means understanding how to store values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concepts / Data Types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;address&lt;/strong&gt;: Ethereum address for sender, contract owner, or wallet for example&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;string&lt;/strong&gt;: string &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bytes32&lt;/strong&gt;: string, but smaller&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;address&lt;/strong&gt;: address&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bool:&lt;/strong&gt; boolean &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;enum:&lt;/strong&gt; a list&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;uint&lt;/strong&gt;: unsigned integer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;uint8&lt;/strong&gt;: unsigned integer where 8 is the "size"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;int:&lt;/strong&gt; integer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;struct:&lt;/strong&gt; custom data type, see more below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also create/initialize Array types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;string[]&lt;/strong&gt;: this is an Array of strings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;uint[]&lt;/strong&gt;: this is an Array of unsigned integers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, to set up a given variable of a data type, do something like this within the contract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Contract MyContract {
  uint count;

  constructor() public {
     count = 0;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice we I am using the constructor to set the initial conditions?&lt;/p&gt;

&lt;p&gt;The same count be done at the time the state variable &lt;code&gt;count&lt;/code&gt; is defined.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract MyContract {
  uint count = 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to store values
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Using structs
&lt;/h3&gt;

&lt;p&gt;Structs is a way to group different types of data into a single data object.&lt;/p&gt;

&lt;p&gt;You define it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;struct CustomStruct {
  uint id;
  string name;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you initialize your actual struct based on the struct you created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CustomStruct public person = CustomStruct("0","Tom Jones");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Using Arrays
&lt;/h3&gt;

&lt;p&gt;This goes into more depth of how to initialize, add elements, and retrieve values in an array.&lt;/p&gt;

&lt;p&gt;So this is how we can initialize an array as state variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract myContract {
  uint[] public unitArray = [1,2,3];
  string[] public stringArray = ["happy", "sad", "angry"];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mapping to an array with key-value
&lt;/h3&gt;

&lt;p&gt;So for the key and value, define the data types&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Mapping(key =&amp;gt; value) public ArrayName&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So &lt;code&gt;ArrayName(key) = value&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;An example is&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mapping(address =&amp;gt; uint256) public balances;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This means &lt;code&gt;balances[msg.sender] = 0&lt;/code&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  How to "do" stuff - functions
&lt;/h2&gt;

&lt;p&gt;The actual "doing" is through functions.&lt;/p&gt;

&lt;p&gt;These functions execute logic.  For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract MyContract {

  function getCount() public view returns(uint) {
    return count;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That first function has a bunch of things:&lt;/p&gt;

&lt;h3&gt;
  
  
  Elements in a Function
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;public&lt;/strong&gt;: this means it is accessible by any actor on the blockchain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;view&lt;/strong&gt;: means displaying but not changing it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;returns(uint)&lt;/strong&gt;: defines what is returned&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Making state variables public
&lt;/h3&gt;

&lt;p&gt;So while we have this cool function defined above which returns the value of the state variable &lt;code&gt;count&lt;/code&gt;, that could be done at the time it is defined.&lt;/p&gt;

&lt;p&gt;This is done by making the variable &lt;code&gt;public&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This means the value is available on the blockchain.  These variables are accessible by functions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract MyContract {
  uint public count = 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Making a local variable
&lt;/h3&gt;

&lt;p&gt;These are not stored on the blockchain, and only work within the function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract MyContract {
  function getValue() public view {
    uint public count = 0; 
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Operations in a Function
&lt;/h3&gt;

&lt;p&gt;The meat of the logic in a function is actually doing things, changing state, applying logic, stuff like that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract myContract {

  function increaseCount() {
    count = count + 1;
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=YJ-D1RMI0T0" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=YJ-D1RMI0T0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>blockchain</category>
      <category>tutorial</category>
      <category>solidity</category>
      <category>ethereum</category>
    </item>
    <item>
      <title>How to code better and faster: lessons from research into Google developers</title>
      <dc:creator>timfong888</dc:creator>
      <pubDate>Wed, 14 Jul 2021 20:38:35 +0000</pubDate>
      <link>https://dev.to/realquadrant/how-to-code-better-and-faster-lessons-from-research-into-google-developers-323d</link>
      <guid>https://dev.to/realquadrant/how-to-code-better-and-faster-lessons-from-research-into-google-developers-323d</guid>
      <description>&lt;p&gt;I stumbled upon a &lt;a href="https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf" rel="noopener noreferrer"&gt;research paper&lt;/a&gt; that used both surveys and log analysis to understand developer behavior at Google.&lt;/p&gt;

&lt;p&gt;This is intended to be a &lt;em&gt;collaborative&lt;/em&gt; post, meaning it's an open invitation to connect and discuss.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because I believe the results of the research point to an interesting way for you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to code faster&lt;/li&gt;
&lt;li&gt;Learn someone else's code faster&lt;/li&gt;
&lt;li&gt;Ship code faster&lt;/li&gt;
&lt;li&gt;Reduce errors&lt;/li&gt;
&lt;li&gt;Collaborate better&lt;/li&gt;
&lt;li&gt;Get out of refactor jail faster&lt;/li&gt;
&lt;li&gt;Reduce technical debt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What was interesting to me was the results from the logs (although the surveys helped to provide valuable qualitative coloring).&lt;/p&gt;

&lt;p&gt;The internal tool that they used was a "code search" tool.  Most devs use their IDE, Github, or &lt;em&gt;grep&lt;/em&gt; when doing code search.  So the concept of searching for code isn't new or breaking ground.&lt;/p&gt;

&lt;p&gt;However, the use-cases and frequency of code search made me realize that a purpose-built tool would enable new kinds of behavior for developers outside of Google.&lt;/p&gt;

&lt;p&gt;I recognize that Google would build their own code search because of their "Big Code."  And for those working on small code bases, the use cases and capabilities don't apply.&lt;/p&gt;

&lt;p&gt;However, I don't think having as much internal code as Google is the threshold for achieving "Big Code" and the associated problems.&lt;/p&gt;

&lt;p&gt;Not to belabor it since it's not the purpose of this post, but the top three reasons more and more developers should learn how Google devs leverage code search are because more developers will have environments that are similar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open source actually makes the code base big faster&lt;/li&gt;
&lt;li&gt;Micro-services and active M&amp;amp;A results in multi-repo environments&lt;/li&gt;
&lt;li&gt;Remote dev creates the same demands on context and collaboration as being in the belly of a massive corporation&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What were developers at Google trying to do?
&lt;/h2&gt;

&lt;p&gt;The list, below, is probably &lt;em&gt;not&lt;/em&gt; surprising.  You may have a similar list.&lt;/p&gt;

&lt;p&gt;But that's the point: if Google is using a special tool with their own course on how to do so, perhaps this is helpful for developers not at Google.&lt;/p&gt;

&lt;p&gt;Here are the major categories of what they are trying to do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looking for Example Code (How)&lt;/li&gt;
&lt;li&gt;Exploring or Reading Existing Code (What)&lt;/li&gt;
&lt;li&gt;Code Localization (Where)&lt;/li&gt;
&lt;li&gt;Determine Impact (Why)&lt;/li&gt;
&lt;li&gt;Metadata (Who and When)&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m6pf68mw4fogx66kuby.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m6pf68mw4fogx66kuby.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What helps you the most?
&lt;/h2&gt;

&lt;p&gt;The research was helpful at a high-level.&lt;/p&gt;

&lt;p&gt;But what is the problem to solve and outcome that &lt;em&gt;you&lt;/em&gt; would be most interested in help in?&lt;/p&gt;

&lt;p&gt;What saves you the most time and broadens your opportunities?&lt;/p&gt;

&lt;p&gt;I am honing in on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to understand new code (open source or new private code) faster&lt;/li&gt;
&lt;li&gt;How to refactor existing code in less time and fewer mistakes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Are there other things that would be helpful?&lt;/p&gt;

&lt;p&gt;What do you think of this concept?&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>refactorit</category>
      <category>opensource</category>
      <category>microservices</category>
      <category>learning</category>
    </item>
    <item>
      <title>Creating a course on DataOps / Data Engineering....</title>
      <dc:creator>timfong888</dc:creator>
      <pubDate>Thu, 27 Aug 2020 06:40:26 +0000</pubDate>
      <link>https://dev.to/realquadrant/creating-a-course-on-dataops-data-engineering-d06</link>
      <guid>https://dev.to/realquadrant/creating-a-course-on-dataops-data-engineering-d06</guid>
      <description>&lt;p&gt;Hello, I am creating a course that will launch through the Linux Foundation on &lt;em&gt;DataOps&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;DataOps is one of those new "categories" that continues to evolve.&lt;/p&gt;

&lt;p&gt;But if you work with Kafka, Spark, Presto, or Airflow (or any of a number of different open source technologies that are similar to those), then you're in the "data ops" field.&lt;/p&gt;

&lt;p&gt;If you are interested in learning &lt;em&gt;more about the field&lt;/em&gt; (meaning, you want to work as an engineer solving problems around data, data processing, analytics, data pipelines), this course is for you, and I'd love to share a preview of the outline (with some sample content).&lt;/p&gt;

&lt;p&gt;If you are already an experienced data engineer working in the space, then I would love some of your thoughts to help me to enable even more developers in this discipline by improving the course.&lt;/p&gt;

&lt;p&gt;As you can imagine, there are tons of paid courses out there which are already pretty beefy.  This course is going to be made available for free and delivered through EdX.&lt;/p&gt;

&lt;p&gt;As such, it is also likely to feel a little "light" compared to full-on courses taught at schools or even in online courses with tuition.&lt;/p&gt;

&lt;p&gt;After all, it's just been me in my spare time writing the course.&lt;/p&gt;

&lt;p&gt;Nevertheless, I think there's an opportunity for something solid out there that is free to provide an on-ramp.&lt;/p&gt;

&lt;p&gt;So...I've created the document in Google Docs, and am enabling anyone on the Internet to add a comment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/document/d/1briKNmTmZflC4Q4COXRu8E1tAf8yWqiO2Op-ALmXOio/edit?usp=sharing"&gt;Here is the outline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is designed for people new to the field to understand the core concepts, provide links to key technologies and blog posts, and just be a resource to developers and, from there, learn more by interacting with the open source community.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>database</category>
    </item>
    <item>
      <title>Open Source: The Key to Digital Transformation Success</title>
      <dc:creator>timfong888</dc:creator>
      <pubDate>Sat, 26 Oct 2019 00:52:03 +0000</pubDate>
      <link>https://dev.to/realquadrant/open-source-the-key-to-digital-transformation-success-4h3j</link>
      <guid>https://dev.to/realquadrant/open-source-the-key-to-digital-transformation-success-4h3j</guid>
      <description>&lt;p&gt;Open source software (OSS) has become hot with VC’s and entrepreneurs.  Peter’s Levine’s recent article &lt;a href="https://a16z.com/2019/10/04/commercializing-open-source/" rel="noopener noreferrer"&gt;“Open Source: From Community to Commercialization”&lt;/a&gt; includes a graph showing the increasingly large M&amp;amp;A and IPOs for open source companies.&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%2Fzanu5l5vw17c16rowelm.jpeg" 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%2Fzanu5l5vw17c16rowelm.jpeg" alt="Open Source Market Is Growing - Peter Levine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are a few reasons for OSS’s rapid adoption:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start-ups accelerate the time-to-market of their own products&lt;/li&gt;
&lt;li&gt;Cloud providers can offer in-demand products&lt;/li&gt;
&lt;li&gt;Traditional IT at larger companies can replace proprietary software&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But what’s missing from the discussion is how companies, especially Global 1000 companies, can leverage open source to achieve their digital transformation goals.&lt;/p&gt;

&lt;p&gt;Unfortunately, the phrase “digital transformation” is overused and ambiguous.  &lt;/p&gt;

&lt;p&gt;Yet it is perhaps the best buzzword to describe the actual benefit of open source to these larger companies.&lt;/p&gt;

&lt;p&gt;For this article, digital transformation primarily relates to the existential need for companies to recognize and embrace that “software eats the world.”  Whether you are a bank, retailer, hospital or oil company, you are also a software company.  &lt;/p&gt;

&lt;p&gt;Making this transition to execute a strategy to stay relevant in their market is the digital transformation.  The ways different companies undergo this change is as varied as weight-loss management techniques.&lt;/p&gt;

&lt;p&gt;Some believe this transformation can be achieved by outsourcing the software development of a proprietary process or workflow.  &lt;/p&gt;

&lt;p&gt;Some try to build from scratch a “digital” muscle by hiring developers.&lt;/p&gt;

&lt;p&gt;Some purchase new software to help them digitize and automate their business process.&lt;/p&gt;

&lt;p&gt;Some get high-level “change management” advice that they should re-invent the company culture to be more digital savvy with little actionable implementation.&lt;/p&gt;

&lt;p&gt;While all of these approaches can help a business, none are true digital transformations.  They are various forms of “digital cosmetic surgery” or, at best “digital fad diets.”&lt;/p&gt;

&lt;p&gt;They don’t get deep into the root of changing the business DNA to become “digitally native.”&lt;/p&gt;

&lt;p&gt;At the heart of true digital change is authentically attracting, developing, and retaining talent that can imagine, use and build digital solutions to advance the business strategy.  The actual strategies will vary from business to business, and can include introducing a new product, entering new market, streamlining an existing workflow to lower costs and prices for customers.&lt;/p&gt;

&lt;p&gt;Regardless of the strategy, attracting the right kind of technical talent to work for the company makes the difference.&lt;/p&gt;

&lt;p&gt;To that end, many companies anchor their digital transformation strategy in building a “developer community” as a way to both leverage external developers and attract high-quality developers to work within the company’s own four walls.&lt;/p&gt;

&lt;p&gt;As a result, many companies follow a standard “developer relations” or “developer marketing” playbook.  This includes many of these tactics&lt;sup id="fnref1"&gt;1&lt;/sup&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentation &amp;amp; sample code&lt;/li&gt;
&lt;li&gt;Development tools, integrations &amp;amp; libraries&lt;/li&gt;
&lt;li&gt;Tutorials &amp;amp; how-to videos&lt;/li&gt;
&lt;li&gt;Training courses &amp;amp; hands-on labs&lt;/li&gt;
&lt;li&gt;Answers in public forums&lt;/li&gt;
&lt;li&gt;Technical support&lt;/li&gt;
&lt;li&gt;Official forums&lt;/li&gt;
&lt;li&gt;Feedback channels&lt;/li&gt;
&lt;li&gt;Professional certification&lt;/li&gt;
&lt;li&gt;Internships &amp;amp; career support&lt;/li&gt;
&lt;li&gt;Webinars &amp;amp; online interactive coding events&lt;/li&gt;
&lt;li&gt;Mentoring&lt;/li&gt;
&lt;li&gt;Access to devices &amp;amp; hardware&lt;/li&gt;
&lt;li&gt;Hackathons &amp;amp; contests&lt;/li&gt;
&lt;li&gt;Meetups&lt;/li&gt;
&lt;li&gt;Early Access program&lt;/li&gt;
&lt;li&gt;Information via newsletters, blogs, and social media&lt;/li&gt;
&lt;li&gt;Conferences &amp;amp; trade shows&lt;/li&gt;
&lt;li&gt;Business assistance &amp;amp; funding&lt;/li&gt;
&lt;li&gt;Marketplaces for software or expertise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these add value to developers and the eco-systems — some more than others.  But can a &lt;a href="https://dev.cat.com/" rel="noopener noreferrer"&gt;non-technology farming equipment company&lt;/a&gt;, for example, use the same tactics that Google or Facebook does and still build a credible developer-facing brand and work-culture?&lt;/p&gt;

&lt;p&gt;The battle is likely to be an uphill one because, unlike software companies, the reality and perception is not that of a technically interesting place to work.  At the same time, pure play technology companies are offering more and more interesting work, tackling complex problems with innovative solutions.&lt;/p&gt;

&lt;p&gt;Against these headwinds, non-technology companies must to increase their investment and capability in the digital world.&lt;/p&gt;

&lt;p&gt;If a given company cannot clearly articulate that they can out “dev real” a company with an already highly valued tech brand, how will they be able to do so copying the same tactics?&lt;/p&gt;

&lt;p&gt;They need to develop a strategy that addresses what’s missing from that list of classic “developer relations” activities.&lt;/p&gt;

&lt;p&gt;The way to do so is through strategic investment and engagement in open source, but not in the way that most people imagine.&lt;/p&gt;

&lt;p&gt;As noted above, most people see open source as free and publicly available software.&lt;/p&gt;

&lt;p&gt;For a smaller subset, they recognize that, if there’s something you want to fix, you can now patch it yourself and contribute it back through a pull request.&lt;/p&gt;

&lt;p&gt;An even smaller subset think that they can take existing code, slap it on GitHub, and now they’ve given back to the open source community.&lt;/p&gt;

&lt;p&gt;This narrative relegates open source software to “free software” and frames the value for companies to be a cost-savings against proprietary license or potentially “free” labor from friendly external code-contributors.&lt;/p&gt;

&lt;p&gt;But these potential costs savings are almost immaterial to what’s at stake for companies to get their digital transformation working.  &lt;/p&gt;

&lt;p&gt;An alternative to either the do-it-yourself model or the change-management consulting model should have three components:&lt;/p&gt;

&lt;p&gt;1) Authentically and sustainably engage developers&lt;br&gt;
2) Advance a market position to tie outcomes to business results&lt;br&gt;
3) Create a fly-wheel effect to overcome inertia to change&lt;/p&gt;

&lt;p&gt;Engaging and investing in open source software, specifically those sponsored by healthy neutral consortia, provides that path.&lt;/p&gt;

&lt;p&gt;A healthy neutral consortia is one where there exist multiple open source projects that have strong developer engagement by several companies, especially industry leaders.  The IP doesn’t reside with any one company, and multiple companies who often compete with each other.&lt;/p&gt;

&lt;p&gt;Here’s what it takes for companies to really transform their companies through active open source engagement.&lt;/p&gt;

&lt;p&gt;(cont'd) here&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Future Developer 2019, Michael Carraz, “Latest data on developer program performance and other key insights.”  ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>How to write "four letter word" in regex?</title>
      <dc:creator>timfong888</dc:creator>
      <pubDate>Mon, 17 Jun 2019 16:52:04 +0000</pubDate>
      <link>https://dev.to/realquadrant/how-to-write-four-letter-word-in-regex-89p</link>
      <guid>https://dev.to/realquadrant/how-to-write-four-letter-word-in-regex-89p</guid>
      <description>&lt;p&gt;Hi, I am writing a blog post and thinking of adding some humor (dunno if it will fly), but basically referencing the typical "taking the s**t our of x" and replacing the four letter word with regex.&lt;/p&gt;

&lt;p&gt;Would this be clear, but also accurate (and bonus, even a little bit funny)?&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Taking the /s[a-z]t{4}/ Out of CLAs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I wasn't sure whether I should use {d} or use the \b for boundary beginning and end.&lt;/p&gt;

&lt;p&gt;Should it be more explicit and have it match where the first character is &lt;code&gt;s&lt;/code&gt; and last is &lt;code&gt;t&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Open to other suggestions!&lt;/p&gt;

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