<?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: jan-wagenaar</title>
    <description>The latest articles on DEV Community by jan-wagenaar (@janwagenaar).</description>
    <link>https://dev.to/janwagenaar</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%2F689435%2F637338b9-a858-4424-8170-1637f4bb3798.png</url>
      <title>DEV Community: jan-wagenaar</title>
      <link>https://dev.to/janwagenaar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/janwagenaar"/>
    <language>en</language>
    <item>
      <title>Outsystems NextStep 2022 – what you need to know</title>
      <dc:creator>jan-wagenaar</dc:creator>
      <pubDate>Sun, 20 Nov 2022 14:21:05 +0000</pubDate>
      <link>https://dev.to/janwagenaar/outsystems-nextstep-2022-what-you-need-to-know-5bi2</link>
      <guid>https://dev.to/janwagenaar/outsystems-nextstep-2022-what-you-need-to-know-5bi2</guid>
      <description>&lt;p&gt;&lt;strong&gt;This week Outsystems held its annual conference, NextStep. It’s that moment that new features are revealed and best practices are showcased. I have attended the hybrid viewing party in Utrecht, the Netherlands. In the case you missed it, I’m happy to give you a recap of the highlights.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This post originally featured at my &lt;a href="https://jan-wagenaar.nl/blog/outsystems-next-step-2022-what-you-need-to-know"&gt;own blog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Neo starts to become reality
&lt;/h3&gt;

&lt;p&gt;Last year, Outsystems announced Project Neo, which was said to “redefine developer productivity”. However, the details remained scarce. This year Outsystems finally shared more. First of all, Project Neo will now be called &lt;a href="https://www.outsystems.com/low-code-platform/developer-cloud/"&gt;Outsystems Developer Cloud (ODC)&lt;/a&gt;. It will be build on an AWS cloud infrastructure. Apps will run in their own container, which is based on Kubernetes. This enables scalability. If demand increases, Kubernetes is able to spin up new instances. It makes it also faster for instances to deployed. It’s hard to draw conclusions from the demo’s on NextStep, but deployments seemed faster. One-Click Publish however seemed to take longer. But then again, Outsystems may still be optimizing this part. Containerisation also helps to improve the security. It helps to isolate parts of the infrastructure, as apps run in their own sandbox.&lt;/p&gt;

&lt;h3&gt;
  
  
  ODC – familiar, but different
&lt;/h3&gt;

&lt;p&gt;The new ODC takes most of the concepts of Outsystems 11. Outsystems showed the new IDE, ODC Portal, which looked very familiar. As they stated, Outsystems wanted to make it easy for developers to make the jump. But there is something to look forward to. Outsystems added functionality from Service Center. For example deployments, monitoring and user access management can now be done from the ODC Portal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved AI
&lt;/h3&gt;

&lt;p&gt;Like last year, Outsystems is improving its AI which helps building and validating apps. Formerly known as Architecture dashboard, it will now be called by the &lt;a href="https://www.outsystems.com/low-code-platform/architecture-dashboard/"&gt;AI Mentor Systems&lt;/a&gt;. As we’ve seen in the last year, Outsystems is including more and more types of validation in this tool. It makes sense to change it’s name since the scope is much larger now. &lt;/p&gt;

&lt;h3&gt;
  
  
  More platform extensibility
&lt;/h3&gt;

&lt;p&gt;Following on the trend of more platform extensibility, Outsystems will now be exposing monitoring and logs through the &lt;a href="https://opentelemetry.io/"&gt;OpenTelemetry API&lt;/a&gt;. This enables the use of third-party monitoring tools such as &lt;a href="https://www.datadoghq.com/"&gt;Datadog&lt;/a&gt;, &lt;a href="https://newrelic.com/"&gt;New Relic&lt;/a&gt;, and {Dynatrace](&lt;a href="https://www.dynatrace.com/"&gt;https://www.dynatrace.com/&lt;/a&gt;). Besides logging, Outsystems promises that ODC will be API-first. That will enabling customers and suppliers to build tools that will enhance productivity. I welcome this open approach for tinkering with the platform. It shows that Outsystems is not aiming to be the magic black box, but rather part of a larger infrastructure.&lt;/p&gt;

</description>
      <category>outsystems</category>
      <category>nextstep</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Things I learned at the Outsystems Advanced bootcamp</title>
      <dc:creator>jan-wagenaar</dc:creator>
      <pubDate>Thu, 31 Mar 2022 17:48:31 +0000</pubDate>
      <link>https://dev.to/janwagenaar/things-i-learned-at-the-outsystems-advanced-bootcamp-270b</link>
      <guid>https://dev.to/janwagenaar/things-i-learned-at-the-outsystems-advanced-bootcamp-270b</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Outsystems Advanced bootcamp is a deep dive in the entire Outsystems ecosystem. In the past week I attended it at &lt;a href="https://www.transfer-solutions.com/"&gt;Transfer Solutions&lt;/a&gt;. It has been a great learning experience, ranging from small tips to best practices and more conceptual topics. I’m happy to share a few with you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was originally posted at my &lt;a href="https://jan-wagenaar.nl/blog/things-i-learned-at-the-outsystems-advanced-bootcamp"&gt;own blog&lt;/a&gt;. Feel free to check it :).&lt;/p&gt;

&lt;h3&gt;
  
  
  Avoid monolithic architectures
&lt;/h3&gt;

&lt;p&gt;A great deal of the bootcamp deals with the architecture of Outsystems environments. Makes sense, since a good architecture will help keep your development pace on par. As your environment grows, you might be able to group common subjects into domains. For example, we can group our sales related applications into a Commercial domain. In Lifetime you can group applications, and assign them to different teams. If you’re developing in a common core or foundation module, splitting your environment into parts will avoid impacting your whole factory. On the flipside, this type of architecture may lead to duplicate data and logic. When working with dependencies across domains, you can use &lt;a href="https://success.outsystems.com/Documentation/11/Developing_an_Application/Reuse_and_Refactor/Use_Services_to_Expose_Functionality"&gt;service actions&lt;/a&gt;. This is similar to an server action, but uses an REST interface. This means you won’t have to refresh your dependencies when making a non-breaking change. I like that, but it can be a fallacy too. You won’t be alerted for outdated dependencies, so you will have to figure this out yourselves. &lt;/p&gt;

&lt;h3&gt;
  
  
  An aggregate may be better than a reusable action
&lt;/h3&gt;

&lt;p&gt;As with your factory architecture, it’s best to consider between reusability and performance on a screen level. When working with aggregates, Outsystems only retrieves the columns you’re using from the database. But when you’re assigning the full list as output of a server action, it will retrieve everything from the database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aVr_XU6l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dqwogyxqp/image/upload/v1648404129/Agregate_list_as_output_aff4a4f5b4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aVr_XU6l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dqwogyxqp/image/upload/v1648404129/Agregate_list_as_output_aff4a4f5b4.png" alt="Agregate list as output.png" width="565" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So avoid using a server action to retrieve your data on a screen, since you rarely use everything. I’m using scaffolding often, so the extra work is neglectable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrate using Integration Studio
&lt;/h3&gt;

&lt;p&gt;Service Studio offers a lot of functionality when consuming and exposing REST / SOAP API’s. But if not adequate, you can write your own integration plugin in .NET. Use cases might include custom cyphering and authentication. This is something that’s entirely new to me, but probably something I won’t need to do since the Forge is offering plugins to handle most use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Avoid timeouts in timers
&lt;/h3&gt;

&lt;p&gt;Timers are a great way to handle batch processing. This is one of the biggest subjects at the Outsystems Traditional Professional exam, the exam that is following up on the bootcamp. So naturally we did get a few best practices for timers. I’m sharing one of the best patterns with you, &lt;a href="https://www.outsystems.com/forums/discussion/60880/best-practices-timer-example-of-shown-code/"&gt;the self-restarting timer&lt;/a&gt;. This timer pattern sets a timeout and checks it within the loop. This timeout will often be 10 minutes, which is safely below the standard 20 minute timeout of timers. After exceeding the time limit, the time will restart itself using the WakeTimer node. You will need to implement functionality to keep track of the processed batches, but this way you’ll never run in a timeout. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7nAwCM5j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dqwogyxqp/image/upload/v1648404130/Timer_best_practice_89b8c62c08.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7nAwCM5j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dqwogyxqp/image/upload/v1648404130/Timer_best_practice_89b8c62c08.png" alt="Timer best practice.png" width="880" height="1198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The coming two weeks I’ll be busy reading documentation for the &lt;a href="https://www.outsystems.com/Certifications/"&gt;Professional Traditional &lt;/a&gt;&lt;a href="https://www.outsystems.com/Certifications/"&gt;Web Developer exam&lt;/a&gt;. This exam is said to be quite difficult, so hopefully I will have some time left to enjoy the beautiful spring weather in the Netherlands now!&lt;/p&gt;

</description>
      <category>outsystems</category>
      <category>lowcode</category>
      <category>learn</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
