Why Low Code?

TL:DR; How one long-time .NET developer came to discover and embrace low code as another tool in his toolbelt, and why you might want to consider taking a look, too

Where I Came From

For those who don’t know me, I’ve been in the software industry for more than 25 years. My start in software on a professional level came in using Visual Basic, but in what was at the time a little unusual way, using VB to create server components. Which is a bit ironic, as one of the things I found most appealing about Visual Basic was its visual nature, and being able to create application UIs by simply dragging controls onto a form, and linking them up with code.

Visual Basic IDE
Visual Basic IDE – Image credit: Diomidis Spinellis – Creative Commons Attribution-Share Alike 3.0 Greece License

Around the same time, Microsoft was experimenting with bringing similar paradigms to web development, with a new tool called Visual InterDev, which provided similar drag and drop, control-based web UI development. Visual InterDev opened up a new world of data-bound, rapid development for web applications, and I loved it (and eventually wrote a book about it). Paul Thurrott has more thoughts on Visual InterDev here, so I’ll spare the reader too much detail here. The important takeaway is that while it had some downsides, including a pretty heavy load of client-side code to implement its controls, Visual InderDev was a significant leap in web development for those of us in the Microsoft camp.

In my view, the true promise of InterDev’s control-based development scheme came with the release of ASP.NET and its Web Forms development paradigm. Web Forms took the heavyweight, cumbersome, and sometimes finicky client code for Visual InterDev’s code, and replaced it with server controls that rendered HTML and more limited script to the client. Since at the time, servers were generally more robust and powerful than the average client machine, removing processing to the server had a number of benefits, including lighter client code and better performance.

ASP.NET was also a closer match to the programming paradigm of Visual Basic, in that each page in an ASP.NET application had the page itself, which contained the information for the UI of the application, and an associated “code behind” file, which contained the code (VB, or Microsoft’s new language at the time, C#) that responded to button clicks, and otherwise connected the controls on the page together to handle interaction with the user and similar tasks.

From the ASP.NET days (and a couple more books), I made my way through a variety of phases of web development using subsequent versions of ASP.NET (MVC, Web API, etc.), as well as various JavaScript frameworks.

Why the background? Because it informed my decision when I was presented with the opportunity to explore a role at OutSystems, a leading low code platform provider. When this opportunity arrived, I was doing satisfying, if somewhat vanilla, development work using Angular and ASP.NET Web API, so I was under no real pressure to find something new.

Discovering Low Code

When I initially talked to OutSystems, it was via a “friend of a friend” referral, and the conversation was interesting enough that when my interviewer recommended downloading and trying the OutSystems platform, I was happy to do so. What I found brought me back to the things I loved about Visual Basic, Visual InterDev, and ASP.NET in the early days…a visually-focused development environment that made building applications faster and easier.

But OutSystems as a platform took things even further than Visual Basic. In OutSystems, you can develop your entire application, from UI, to logic, to data model, and even workflows, in a single unified development environment, and all using visual tools. So where a developer using Visual Basic would drag and drop a button onto a Form, and double-click the button to add a button click handler, and then be dropped into a code editor, the OutSystems developer following a similar path remains in the visual metaphor with a flow editor instead.

OutSystems Visual Logic Flow
OutSystems Visual Logic Flow

I was sufficiently intrigued by the capabilities of this platform that I continued interviewing with OutSystems, and eventually took on a role as a Solution Architect there. I later returned to my roots in teaching and moved to a role as a Developer Advocate, and stayed with OutSystems until early 2023, when I took a role as a Senior Technical Architect with Xebia, an OutSystems partner.

So…Why Low Code?

Getting back to the title of this post…why have I chosen to explore, and ultimately stay with, low code?

I find that low code provides a good level of abstraction, while still (at least with OutSystems, though I assume other low code platforms have similar capabilities) allowing me to use JavaScript, CSS, C#, and related “high code” functionality where needed to expand or enhance the native capabilities of the platform.

Low code in the OutSystems world also still allows me to choose whether I want to go for raw speed, for example, using scaffolding to build out a simple forms over data app in a matter of minutes, or using codified architecture principles to build a robust, maintainable, and high-performance application that is more suitable for an enterprise.

And in the case of OutSystems, low code is opinionated, in a good way. While the underlying technologies are based on .NET and ReactJS, which means they’re well-understood and mature, the platform itself is designed to be very turnkey. When a customer signs up with OutSystems (or a developer creates a free Personal Edition), the server infrastructure is set up for them, and developers need only download a single tool, Service Studio, to get started with developing their apps. No need to figure out which JavaScript framework, source control, JS loader, etc., etc. to set up your developer machine with. Just one download, log in, and go. Having dealt with the madness of JS framework versions and related technologies, I love how simple it is for me to set up a new machine to develop OutSystems apps.

Low code is not perfect. And like any programming abstraction, there are places where the abstraction breaks down, and those times can be a pain to deal with. But with few exceptions, low code allows me to produce applications that solve important business problems faster than any other platform I’ve used, and also makes it faster for me to keep those applications up to date. That’s a winner in my book, and whether it’s OutSystems, or any of the other players in the low code space, I would encourage my fellow developers to check out low code, and see whether it might just merit a spot on your developer tool belt.

With that background, look for more posts on how OutSystems works, and how you can take advantage of low code to solve problems for your clients faster.

20 Years of Blogging

Apparently, I missed it by a couple of days, but the 22nd of February, 2023 was the 20th anniversary of my very first blog post. I was fortunate enough to be one of the first set of folks with a blog on weblogs.asp.net, which ran on the .TEXT blogging software written and operated by Scott Watermasysk.

The post itself is unremarkable, just an introductory musing. What is remarkable is that 20 years later, that blog is still online, thanks to the folks at Microsoft keeping it up and running. It has been transitioned to Orchard in the meantime, but given how many blogs and sites have long since disappeared from the web, it’s amazing to see things I wrote 20 years ago still online.

Over the subsequent 2 decades, I’ve moved my blog to different places, first moving to blogs.msdn.com when I joined Microsoft as a Developer Evangelist (that site now redirects to https://learn.microsoft.com/en-us/archive/blogs/gduthie/, but the content is still online), and eventually stood up my own independent blog here on devhammer.net.

My thanks to Scott for his role in helping me get started in the blogging world, and kudos to Microsoft for keeping this resource alive. If you’re interested in seeing all the blogs from weblogs.asp.net, here is a list of all the bloggers on that site:

https://weblogs.asp.net/blogs/bloggers

I should note that I was reminded of my 20th anniversary by a post from my friend Frank La Vigne on the 19th anniversary of his blog FranksWorld.com. 19 years of blogging on the same domain is an impressive feat!

Resources for my OSDC Talk

OSDC Banner

Recently, I gave a talk at the OutSystems Developer Conference (OSDC) on integrating external code and services in an OutSystems application, entitled “A Little Help From My Friends: Integrating External Code in OutSystems”.

Here are some relevant resources that I discussed during the talk:

OutSystems Forge

The Forge is the first stop for OutSystems developers looking for additional functionality for their apps, and you can access it online at: https://www.outsystems.com/forge/, or via the Forge tab in Service Studio.

The Forge offers thousands of components, ranging from full demo apps, reusable UI widgets, to connectors to popular services from Microsoft (Azure Cognitive Services, etc.), AWS (S3, Lex, etc.), and more.

Integration Builder

Integration Builder is a web-based interface for easily connecting to logic and data from a variety of sources, including Salesforce, SAP oData, SharePoint Online, and more. Learn more about getting started with Integration Builder.

I also mentioned that my colleague Cristiana Umbelino did a Decoded: Quick Hits video covering Integration Builder:

I’ll also add a link to the Integration Builder deep dive session from this year’s OSDC, once the recording is available.

Using JavaScript

During the discussion of custom JavaScript, I mentioned a couple of videos I did on using JavaScript in an OutSystems app. I have videos for both Traditional Web (“Dude, Where’s My JavaScript?”), as well as for Reactive Web Apps, both of which you can see below.

Using JavaScript in OutSystems Traditional Web Apps
Using External JS Code in an OutSystems Reactive Web App

Integrating C# Code

Finally, I mentioned in the section on integrating C# code that I had created a simple .NET extension for reversing a string, and I have a video demonstrating that component, and how you can (in a self-managed OutSystems environment) debug that code using Visual Studio. You can view that video below:

Debug a .NET Component in OutSystems

Wrap-up

My thanks to all who attended my talk. If you’d like to see all of the OutSystems content my team produces, check out our playlists:

Windows 8: Making VirtualBox and Hyper-V Play Nice

I got a new shiny this week (actually arrived on Friday, but since I was heading to Roanoke Code Camp over the weekend, I did not have time to set it up before I left). As an aside, pictures don’t do this machine justice…I’ve always thought that ThinkPad was synonymous with chunky business laptops with squared edges, and a look only a CPA could love (sorry CPAs, no offense meant). The Lenovo X1 Carbon Touch is flat gorgeous. And fast.

X1Touch_2

After getting home from the code camp, I started the process of migrating data from my current day-to-day machine (thankfully, data migration is pretty automated and painless these days), and installing the various bits and pieces I need.

Continue reading Windows 8: Making VirtualBox and Hyper-V Play Nice

So You Wanna Make a Game?

WindowsCyan_Web_2There’s a new kid in town, maybe you’ve heard of him…Windows 8? Or maybe you’ve heard about his sibling, Windows RT. Maybe you’ve heard that over 60 million licenses for Windows 8 have been sold as of January, and recognize what that means in terms of a large and growing potential customer base.

Or maybe you’ve heard about the Keep the Cash offer, which provides $100 per eligible app published to either the Windows Store or the Windows Phone Store between March 8th and June 30th, 2013 (for up to $2000 per developer), and want to take advantage.

Or maybe you’re a student, and you’ve heard about the Windows 8 App Madness Challenge, in which students can receive $100 per app (up to 5) they successfully submit to the Windows Store.

However you got here, you may have the question…how do I get started? I’m here to walk you through, step-by-step.

Continue reading So You Wanna Make a Game?

Quick Hits Issue #5: Resources for App Developers and User Groups

In this issue, I’ve got some great resources for app developers, as well as for user groups:

Get up to Speed on HTML, CSS3, and JavaScript

If you’ve done some web development, but want to kick your skills up a notch, check out Learn HTML5 with JavaScript & CSS3 Jump Start Training, a course from Microsoft Virtual Academy. The course covers HTML Semantic Markup, CSS3 Selectors, Layout and Animation, JavaScript Core and DOM Interaction, and more.

Continue reading Quick Hits Issue #5: Resources for App Developers and User Groups

Quick Hits Issue #3: New Meetups, Game Development, and more!

New Meetup Group

I’m pleased to announce a new Meetup group for Windows App Developers in the DC area. The group will focus on local workshops, hackathons, office hours, and other events featuring myself and other local technical evangelists.

If you’re not in the DC Area, check out these other meetups, featuring some of my peers in the east region:

Continue reading Quick Hits Issue #3: New Meetups, Game Development, and more!

Quick Hits Issue 2: Privacy is Paramount (and easy)

In this second issue of Quick Hits, I want to share a couple of good posts on the topic of privacy policies for Windows Store apps. You may have heard already that if your app connects to the internet (and many, if not most, apps do), you are required to provide a privacy policy for your app, one that is accessible both from within the app (via the Settings charm) and from the app’s store listing.

Continue reading Quick Hits Issue 2: Privacy is Paramount (and easy)

Building Back-end Data and Services for Windows 8 Apps: ASP.NET Web API

In this series, I’m exploring a variety of ways to build back-end data storage and services for Windows 8 apps (many of which, BTW, can also be used for other mobile and web apps as well). Here are the posts so far:

Continue reading Building Back-end Data and Services for Windows 8 Apps: ASP.NET Web API