DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

The Latest Software Design and Architecture Topics

article thumbnail
Replatform For Your Cloud Migration: Is it the Best Strategy?
Cloud migration is accelerating every day but every application you migrate is not configured for a cloud environment, that's where re-platform strategy comes into play.
August 28, 2021
by Hiren Dhaduk
· 5,768 Views · 2 Likes
article thumbnail
How Kafka Can Make Microservice Planet a Better Place
In this article, we want to focus on using Kafka in the microservice architecture, and we need an important concept named Kafka Topic for that.
August 28, 2021
by Reza Ganji DZone Core CORE
· 19,322 Views · 13 Likes
article thumbnail
Python and Low-Code Development: Smooth Sailing With Jupyter Notebooks
Editor's Note: The following is an article written for and published in DZone's 2021 Low-Code Development Trend Report. If you ride on a sailboat in a steady breeze, it glides through the water effortlessly. Few things can compare to crossing a bay without the noise and commotion of a thundering internal combustion engine. The dream of no-code and low-code development is to effortlessly glide from problem to solution. Back in the ‘80s, no-code/ low-code development was called “end-user computing.” Since the invention of the spreadsheet, we’ve had a kind of low-code computing. The technologies continue to evolve. Let’s take our boat out of the slip and sail around a little. We’ll look at two ways Python is commonly used to create no-code and low-code solutions to problems. The first thing we’ll look at is using JupyterLab to create solutions to problems with minimal code. I liken this to using winches to help lift the sails. It’s not an internal combustion engine, but it is a machine that helps us manipulate heavy, bulky items like sails and anchors. The second thing we’ll sail past is using Python as an integration framework to knit together tools and solutions that aren’t specifically written in Python themselves. In this case, we’re going to be writing integration code, not solution code. This is how sailboats work; given a hull and some masts, you’ll have to select and set the sails that will make the boat move. JupyterLab As a developer, and as a writer about Python, I rely on JupyterLab a lot. It’s often the tool I start with because I get handy, pleasant spreadsheet-like interaction. The “spreadsheet” feature that I’m talking about is the ability to change the value of one cell, and then recompute the remaining cells after that change. This lets me create elegant, interactive solutions where the bulk of the interaction is handled by the notebook’s internal model: a lattice of inter-dependent cells. In this picture, we can see the computation of cell 2 depends on prior results in cell 1. I consider this “low code” because there’s a vast amount of code we don’t need to write. The Jupyter Notebook provides us an interactive framework that’s robust and reliable. More important than that, the framework fits the way a lot of people have grown to use computers by putting values into some cells and checking results in other cells. The big difference between Jupyter and a spreadsheet is Jupyter lets us write extensions and expressions in Python. Recently, I had a boat-related problem crop up that was perfect for this kind of low-code processing. The tank under the pointy part of the boat (the “V-berth”) has a fairly complex shape. The question really is: “How big is it?” The problem is access; I have to make a series of approximations and models. I really need a spreadsheet-like calculator, but I need a lot more mathematical processing than is sensible in a spreadsheet. Consequently, let me apologize to any math-phobic readers. This example involves a lot of math. For folks who don’t like math, think of using a spreadsheet where you never looked at the formula in a given column. A notebook can (and often does) hide the details. This specific example doesn’t try to hide the details. Here’s an example: https://github.com/slott56/replacing-a-spreadsheet. I want to lift up a few key features of this low-code development approach. I created three notebooks, each of which had a common structure. They all have a collection of measurements as the input. As the output, it reports a computed volume. The rest of the cells provide some background to help me make sure the math is right. Here’s the input cell’s content in the “prism.ipynb” notebook. This is cell 8. Python measured = { # Forward triangle, in inches "h_f": 8, "w_f": 10 + Rational(1, 2), # Aft triangle, in inches "h_a": 27, "w_a": 48, # Overall length from forward to aft, in inches. "l_fa": 46, } This is a Python dictionary that has a number of input values. This is a bit more complex-looking than spreadsheet cells, making it solidly “low-code” not “no-code.” The output is computed in cell 10, providing a single numeric result with a format like the following: '50 85/88 gallons' This shows me that the volume of space, given the measurements, is just shy of 51 gallons. The best part about this data is there are two kinds of changes I can make. The most important change is to the measurements, which leads to recomputing the notebook. Anyone who can use a spreadsheet can alter the numbers to the “measured” dictionary to recompute the volume. The other change I can make is to adjust some of the underlying assumptions. This is a more nuanced change to the model that is also implemented in the notebook. I find that for a wide variety of problems, a notebook is the place to start. It lets me gather data, formulate alternative approaches to algorithms and data structures, and work out candidate solutions that are richly interactive. This is an excerpt from DZone's 2021 Low-Code Development Trend Report. For more: Read the Report The JupyterLab project is like a boat with three masts and dozens upon dozens of sails for all conditions and situations. There are a lot of features that can be used to create interactive solutions to problems. The idea is to write only the code that’s directly related to the problem domain and leverage the notebook’s capabilities to present the solution so that people can make decisions and take actions. In addition to the notebook for a low-code interactive user experience, we can look at Python as an engine for integrating disparate applications together. Python as Integration Engine Python’s standard library includes modules to help us work with OS resources, including other applications. Rather than build or modify existing code, we can treat applications as opaque boxes and combine them to create an integrated solution. To a limited extent, integration applications is what shell scripts do. There’s a world of difference, however, between integration with a shell script and integration with Python. Shell scripting involves the almost impossible-to-understand shell programming language. (See this article on replacing shell scripts with Python for more thoughts on this.) When we integrate applications with Python, we can easily introduce additional computations and transformations. This can help to smooth over gaps, remove manual operations, and prevent potential errors. I’m a fan of code like the following: Python command = [ "markdown_py", "-v", "-e", "utf-8" ] temp = options.input.with_suffix(".temp") output = options.input.with_suffix(".html") params = dict(CSS=str(options.style), TITLE=options.title) with temp.open('w') as temporary, options.input.open() as source: subprocess.run(command, stdout=temporary, stdin=source) This is part of a larger and more complex script to publish a complex document written in markdown. It has a lot of code examples, which are a lot easier to read in HTML format. I must do some pre-processing of the markdown and some post-processing of the HTML. It seems easiest to execute the markdown_py command from inside a Python script, avoiding a complex python-bash-python kind of process. Since I’m not modifying the underlying applications, I find this fits with a low-code approach. I’m using the source application (markdown_py) for the thing it does best — adjusting the inputs and outputs using Python. Conclusion We can use Python in a variety of ways. It’s a programming language, so we can build code. More importantly, we can use the vast number of pre-built Python libraries to create low-code solutions. We can use a Jupyter Notebook as a low-code way to create a sophisticated interactive experience for users, and we can use Python to integrate other applications. Sailing isn’t effortless. The boat glides only when the sails are set properly, and we keep the rudder in the right position. Just as skill and expertise are required to make a boat move, so too is careful attention needed to write the minimal Python code to solve an information processing problem. Steven Lott, Writer, Python Guru & Retiree @slott on DZone | @s_lott on Twitter | slott-softwarearchitect.blogspot.com Steven has been programming since the 70s, when computers were large, expensive, and rare. As a former contract software developer and architect, he worked on hundreds of projects from very small to very large. He’s been using Python to solve business problems for over 20 years. His titles with Packt Publishing include Python Essentials, Mastering Object-Oriented Python, Functional Python Programming, Python3 Object-Oriented Programming, and Python for Secret Agents. Steven is currently a technomad who lives in various places on the east coast of the US.
August 27, 2021
by Steven Lott
· 10,636 Views · 2 Likes
article thumbnail
Top 8 PostgreSQL GUI Software in 2021
What is PostgreSQL GUI? Why do you need it? How can it help you manage your PostgreSQL database? Learn about the best Postgre GUI software to try in 2021.
Updated August 27, 2021
by Ilon Adams
· 15,262 Views · 9 Likes
article thumbnail
Testcontainers: From Zero To Hero [Video]
Do you want to make the most out of your integration tests by using the popular Testcontainers library? Learn how to use it from the ground up.
August 27, 2021
by Marco Behler
· 8,270 Views · 4 Likes
article thumbnail
Token-Based Security, OAuth 2.0, OIDC and IdentityServer4
We'll learn the basics of token-based security, OAuth, OIDC basics, and set up an ASP .NET Core Web Application with IdentityServer4 package.
August 27, 2021
by Jawad Hasan Shani DZone Core CORE
· 6,674 Views · 2 Likes
article thumbnail
Microservice Architecture and Agile Teams
Learn how Microservice Architecture strategy drives the teams naturally Agile.
Updated August 26, 2021
by CHANDAN LAL PATARY
· 5,192 Views · 3 Likes
article thumbnail
Top 10 Low-Code Articles
See the 10 most popular articles on Low-Code with topics covering Low-Code introduction, building an application with Low-Code, comparison with Microservices, a smack-down with pro-code, and more!
August 25, 2021
by Bhagyashree Nigade
· 12,691 Views · 4 Likes
article thumbnail
How To Implement and Design Twitter Search Backend Systems using Java Microservices?
In this article, you’ll learn about implement and design Twitter search backend systems functionality how to work using Java microservices with explanations.
August 25, 2021
by James Warner
· 5,427 Views · 2 Likes
article thumbnail
How to Pivot and Join Time Series Data in Flux
In this InfluxDB tutorial, we will show you how to create an accurate overview of multiple time series with industrial data captured in consecutive production steps.
Updated August 23, 2021
by Jeroen Lavens
· 21,566 Views · 2 Likes
article thumbnail
Redis-Based Tomcat Session Management
Learn what Tomcat clustering is and what problems it can solve by working together with Redis.
Updated August 23, 2021
by Nikita Koksharov
· 60,069 Views · 20 Likes
article thumbnail
Popular APIs for the Internet of Things (IoT) Systems
A mobile app developer wishes to build IoT applications using APIs or programming interfaces which helps them a lot in their work.
August 23, 2021
by Rahul Panchal
· 27,282 Views · 4 Likes
article thumbnail
Top 6 Time Wastes as a Software Engineer
Increase your productivity and advance in your career by avoiding these 6 time wastes.
August 23, 2021
by Lipsa Das DZone Core CORE
· 100,109 Views · 32 Likes
article thumbnail
Why I Prefer Flutter Over React Native for App Development
One dev takes a look at the Flutter and React Native frameworks for cross-platform development and why he prefers to work in Flutter when creating applications.
Updated August 23, 2021
by Sanket Doshi
· 22,201 Views · 4 Likes
article thumbnail
Popular Tools Supporting YAML Data Format
Learning about YAML is very beneficial for today's software engineers. This article includes a list, and a description, of ten tools that support YAML.
Updated August 21, 2021
by Tarun Telang
· 23,014 Views · 4 Likes
article thumbnail
9 Best Free and Open Source Tools for Reporting
Using data reporting tools has its pros and cons but with such a variety of options, everyone can find one which covers all needs.
August 21, 2021
by Angelina Shevchuk
· 29,076 Views · 9 Likes
article thumbnail
Implementing JDBC Persistent Object Store With Anypoint Clustering | MySQL Database
Clustering is group of nodes that act as a single unit. With JDBC Persistent Object Store, data can be persisted in case of Mule Runtime failure, crashes or shutdown.
Updated August 21, 2021
by Jitendra Bafna
· 19,031 Views · 3 Likes
article thumbnail
Unleash the power of Anypoint DataGraph
With Anypoint DataGraph, you can reuse multiple APIs in a single request. Enterprise architects can easily unify APIs into one data service all without writing more code. Developers can consume multiple APIs from the data service in a single GraphQL request.
Updated August 21, 2021
by Jitendra Bafna
· 25,168 Views · 3 Likes
article thumbnail
Custom Annotations To Validate Input Requests in Spring Boot - Part I
In this article, we will discuss how we can implement custom annotations on input request for conditionally mandatory fields in Spring Boot.
August 21, 2021
by Trinadh Chakravarthi
· 8,311 Views · 3 Likes
article thumbnail
Getting Started With Protobuf Using C# Runtime Library for Protocol Buffers
In this post, take a look at how we can quickly get started with Protobuf using C# runtime library for Protocol Buffers with only a few steps.
August 20, 2021
by Kapil Khandelwal
· 19,421 Views · 2 Likes
  • Previous
  • ...
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • ...
  • Next
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook
×