AndroidCode cuisine: A recipes app built using the latest Android architecture (2024)This project aims to showcase many of the latest tools and best coding practices recently introduced by Google for Android development.
AdobeAdobe Experience Manager authoring capabilities in 2024In this article, we’ll take a look at everything AEM has to offer to an enthusiastic content author with a penchant for productivity.
AIHow to break away from the standard ChatGPT interfaceHow can we have a stylized and easily readable UI from ChatGPT? What we originally thought was simple turned out to be more challenging.
ProcessDiagrams as code: Making documentation more usefulDiscover a solution to the challenge of maintaining up-to-date documentation, by creating diagrams using code. This approach makes it easier for engineers to create and update documentation, and helps new team members develop mental models based on accurate information.
ProcessManaging risk in software projects - Six lessons learned from a recent MVPThese are my six picks of lessons learned and challenges we overcame from a recent software project. As Mike Tyson once said, "Everyone has a plan until they get punched in the mouth."
DevOpsActual portable scripting with NixSolving the challenge of scripting in DevOps: Introducing Nix for consistent environments.
AdobeAchieving agility and flexibility with a hybrid approach in Adobe Experience ManagerImplementing AEM with a hybrid approach offers benefits like agility, scalability, and flexibility. Yet, it requires careful planning, design, and execution, considering technical and organizational factors to ensure robustness and scalability.
Using dynamic components in your MPASo you need to introduce some dynamic components to your MPA code-base. What should you do? This article aims to discuss different scenarios and how they can be handled.
Django front-end simplified"Front-end" in web development refers to the visual appearance of an application or website. In Django, a web development framework, the front-end is created in DTL (Django Template Language), which is a superset of HTML (Hypertext Markup Language). DTL represents the "what" of the page - the actual contents. The "how" of the page - how the page appears - is defined by CSS (Cascading Style Sheets). Django template language (DTL) files Here's an example of a DTL file: stats-pane.html {% lo
PlatformsPrisma vs KyselyWe decided to give Prisma a try recently to see how well it performed. Prisma impressed us with its developer experience (DX) and abstractions. Yet, we encountered challenges and performance issues. It even forced us to shape the database schema based on its limitations.
PlatformsFlexible UI components made easy with Jetpack ComposeLearn how to create reusable UI components with Google's new modern UI toolkit for Android.
How to implement KYC/AML protocols for an NFT marketplaceLearn how to implement KYC/AML protocols for an NFT marketplace.
Prop drilling in React: Solutions and trade-offsProp Drilling is the act of passing data, in this case, react props, through several nested layers of components before it reaches the component that needs the data. Is this a problem in and of itself? It depends (which is the best answer for a question). Props are part of the “React way” of managing state, so using them, even passing them through nested components, isn’t necessarily bad. It depends on the scale. For small applications, this is not an issue. You can use either of the approache
javaConvert GET to POST Inline with Java and Spring GatewayYou have a third-party provider that you need to obtain news information from and the only API they have for this is a POST with a request body, yet this clearly should be a GET process since the API is simply retrieving data and nothing transactional is happening.
ProcessA comprehensive guide to understanding the SOLID principlesThrough each of these sections, we’ll focus on various design principles, with particular attention to the five SOLID principles, which will be illustrated through examples.
PeopleWhy software development estimates are so often wrongWhy are software development estimations so hard to get right? Here are some ways to get more accurate.
ModelonWriting a Modelica interpreter: How complexity forced us to use simple design patternsAnyone who's written a Domain-specific language (DSL) or found themselves accidentally entrenched in a shotgun parser knows the pains involved in processing a grammar. We found ourselves needing to take a predefined Abstract Syntax Tree (AST) and generate a UI from it. The pain we experienced along the way forced us into a disciplined simplicity from which some pretty useful design patterns emerged. In this blog post, we share the lessons we learned from situations where complexity led us into a
ChatgptHow & why I used chat GPT to convert templatesHow we bridged Backend with Frontend by converting template syntax and how AI helped. What is templating? In web templating, a template acts as a blueprint or a skeleton for the web page. It contains the static parts of the page layout and defines placeholders or variables where dynamic content can be inserted. I believe every developer is familiar with it, as it comes from the ‘ancient’ web development times and has been around for decades. The ISML templating ISML stands for “Intershop
ProcessCustom Shapes in Jetpack ComposeLearn how Jetpack Compose makes creating custom shapes in your UI with some basic trigonometry.
PlatformsHeadless HTML: A light speed content migration approachThis article outlines a strategy for migrating content from a traditional CMS to a Headless CMS, focusing on HTML-to-rich-text conversion challenges. It suggests migrating raw HTML and applying scoped CSS during rendering for old articles, allowing gradual updates to maintain content integrity.
PlatformsRapid Enterprise Development with RedwoodJSGet an overview of the RedwoodJS framework by following this quick tutorial and building a sample application.
DevOpsDevOps Quick Fix: GCP outgoing connection issuesQuick Fix when GCP outgoing HTTPS connections to third-party REST APIs are slow or dropping.
dockerHow to speed up Docker builds in GitHub ActionsAre your Docker builds slow in GitHub Actions? Here's how to speed it up with the built-in GitHub Actions cache.
c#Creating a Unity animated character controller with C# best practices in mindGet started and apply some general C# coding best practices to help you create something that’s scalable from the very beginning and minimizes spaghetti code.
TerraformTerragrunt vs TerraformIn this article, I detail the benefits of using Terragrunt. At the end, I list the reasons why sometimes Terragrunt may not be the right choice for your project.
DevOpsDevOps Quick Fix: intermittent yum and apt errors on new EC2DevOps Quick Fix are solutions to common DevOps problems, usually encountered during client engagements Problem When creating a new AWS EC2 (either via Packer for AMI or via Terraform for EC2), the usual next immediate step is to install Unix packages via yum or apt. You may get intermittent errors like: "Package has no installation candidate" "Unable to locate package" "Error: Unable to find a match" "No package available" Solution Running yum or apt before EC2 finishes initialization is
QAPicture this: Using visual testing in quality assuranceIn this article we will discuss visual testing in detail, including its importance, how it works, its benefits, and challenges.
architectureMicro-frontends 101: When a composable frontend architecture makes sense for your applicationAt a high level, micro-frontends are a software development approach that breaks down a monolithic frontend application into smaller, individual mini applications.
ChatgptDeploying GPT4 in the enterprise: How I created a NetSuite/Slack support botSee how I attempted to revolutionize our Tier 1 NetSuite support using ChatGPT.
CSSMaking a dynamically-expanding video in CSSHow I used clip-path to help achieve a dynamically-expanding video in CSS.
ProcessHow to add Disqus to your site with a custom look and feelA recent client had a requirement to add comment sections to articles on their site. The ask was to have the sections maintain the site's branding for a nice, unified digital experience. Could it be done?
SDKBeware the outdated SDK: A cautionary tale of broken websitesYour site has gone down. Users are contacting you for support, but you have no idea what could be causing the issue. Mild panic sets in. This scenario is all too common, and recently, I also encountered this issue. It turned out that the problem was not in the code I had recently written; but in my failure to realize the software development kit (SDK) I was using was deprecated. This article will explore the risks of using an outdated SDK and provide tips to avoid its pitfalls. So, what exa
reactUnleashing the Plumbing Superhero: Fixing a Memory Leak caused by Emotion, Chakra-UI, and Dynamic Props!This blog post explores a memory leak caused by Emotion, Chakra-UI, SSR, and dynamic props in web development. It covers their significance, impact, detective work, solution, and impressive results.
ProcessComposable architecture - How is this any different from microservices?What’s the buzz all about Composable Architecture? Isn’t that just microservices?
web3Demystifying Layer 2 solutions: Why you should consider them when building on EthereumWith over one million transactions being processed per day, a new block is created every 12 to 14 seconds and Ethereum has now reached its present capacity on the network. This is where layer-2s jump in.
AIWhich jobs are the AIs coming for?I want to walk through a framework I use to understand how the AI work I've done and supported over the years impacts my coworkers.
QAComparison of Web Accessibility ToolsAutomated web accessibility testing tools can help you find and fix accessibility issues in your website, ensuring that it's accessible to everyone. In this guide, we'll explore some popular tools for automated web accessibility testing.
javascriptHow to Build an Arcade Style Video Game in JavaScriptI built a game in JavaScript. Here's how I did it.
javascriptIn Praise Of Logging (A Node.js/Javascript Logging Guide)In this post, I'm going to outline some good practices I've learned along the way and (hopefully) convince you why you should consider using a logging framework immediately instead of console.log statements.
KotlinWhat I learned about network programming with Kotlin/NativeA note to preface: you can find the project repository here. The origin story After a while developing software in Java, I was intrigued by all the praise of Kotlin and also interested in Kotlin/Native as a way to develop applications that don't require a VM to run. Inspired by this Golang implementation of traceroute, I settled on trying my hand at implementing traceroute with Kotlin/Native. tracerte is already available on every operating system, so why the hell would I rewrite it? Good qu
ChatgptWe asked ChatGPT to architect our application and this is what happenedI asked ChatGPT to help us get started with our app architecture. This is what happened.
PlatformsSetting up PostGIS with Rails and ActiveRecord on Fly.ioHow to get Ruby on Rails working with PostGIS and PostgreSQL on Fly.io
AIBuilding an NLP Image: Amazon AMI for NVIDIA NeMoNeMo is a toolkit provided by NVIDIA that allows you to use modules (reusable components) for a variety of AI tasks. Components like encoders, decoders, loss functions and more.
PlatformsI believe I can Fly [A Fly.io review]Very soon Fly will become a contender to fully replace Heroku and will be much more simple and easy to use than something like Kubernetes or any of AWS's offerings. Right now, it's great for hobbyists or a team with one or two developers.
ChatgptStrengths & Weaknesses of GPT-3 for Enhancing Developer EfficiencyIn this article, we will explore the usefulness of GPT-3 for developers by examining its performance in handling three common challenges that they may encounter in their work. These challenges include generating new code, explaining unfamiliar code constructs, and deciphering unusual error messages.
KotlinKotlin Multiplatform Mobile (KMM) Adoption: Insights and Lessons LearnedAt DEPT® we believe that Kotlin Multiplatform is a true game-changer. By sharing business logic between platforms, we had the opportunity to shift our focus to the UI aspects of an app.
PeopleWhy and how to create your own Mastodon server on AWS with TerraformWe've updated and open-sourced Terraform scripts to bootstrap your own Mastodon server using AWS, Elastic Container Service and Fargate.
KotlinKotlin Multiplatform Mobile: The Whats and WhysThe what could be described as a cross-platform solution for mobile development. But, there is a big difference between a cross-platform solution and Kotlin Multiplatform Mobile.
TypeScriptT3: Rise of the MonorepoBuilding full-stack monorepo's doesn't have to be a headache. With the T3 stack we can quickly spin up full-stack, typesafe Next.js projects.
javaPublishing to Maven Central, a retrospectivePackage management can be something of a headache, but it doesn't have to be that way. Here's some tips to get you on your way with Maven Central.
pythonSetting up Integration Tests for a Django backend & React frontendWith a React frontend, Django isn't responsible for the frontend and doesn't know how to start the frontend process. This causes the tests to fail due to there being no frontend to interact with. To fix the failing tests we need to have the frontend running when running the integration tests.
javaFinding Database Issues Fast with Java and Spring BootWhat if you could catch badly performing queries during your local development process? The Spring Boot SQL Explain library does this for you.
PlatformsIntegration Testing NestJS APIs with a Test DatabaseUnit tests for APIs can sometimes provide little to no value, so the next logical step is often to write integration tests. You don’t want to touch live data though, and want tests to make assertions against actual (un-mocked) service logic. The following is an approach to do just that.
Risk ManagementA risk management framework for software projectsThe goal of risk management is to minimize risk in a technical project by minimizing the probability of failure and minimizing the impact of failure.
PlatformsUnion and Intersection Typeguards in TSIf you’ve ever been interested in complex typings in TypeScript, particularly when it comes to typeguards, this is the article for you!
PlatformsWhy I built a new state management libraryI know what you're thinking because that's my reaction when I hear something like this, so I get it. But it's not like that, I swear.
ProcessHow to reduce costs in AWSTemplates may use configurations adding up unnecessary expenses. Here's my journey to move away from this config to reduce this project's AWS cost.
CI/CDCI/CD with Airflow and dbtHow do you integrate data models in a source control repository into a database, using a CI/CD process?
PlatformsDependency Injection for Type Script AWS LambdasWe talk about Microsoft's dependency injection package TSyringe and its different dependency scopes. We explain how to use resolution scoped dependencies over transient, singleton, and container scoped dependencies to limit the scope of a dependency to a single lambda invocation.
rustBenchmarking Rust code using Criterion.rsLearn how to be a good custodian of your Rust code by using the Criterion crate effectively.
Crypto Through Immersion - [ShipIt.io Podcast]What we're trying to do is break down our part one and two, how you can immerse yourself in this world to learn it the fastest and come to appreciate it. Let's talk about “do you have to care about the project or not?”
Why You Need KYCKnow Your Customer (KYC) is an integral part of any Anti-Money Laundering program. In this article I'll go through what KYC is, why you may need it, and how to choose a SaaS provider that fits your needs.
AWSBest Practices for Terraform AWS Tags: Part 2AWS tags are key-value labels you can assign to AWS resources that give extra information about it.
PlatformsMachine Learning: Explain it Like I’m Five [Shipit.io Podcast]If you've heard a lot about AI and machine learning, but don't understand it, this month's episode is for you.
PlatformsGetting Started with Parallel Processing in RustRust helps mitigate concurrency hazards by design, but it's still up to the programmer to construct their program logic thoughtfully so they can take advantage of the power of concurrent and parallel processing.
dataUse Airflow to Project Confidence in Your Data“Is the data ready?” Or more accurately, “Can I be confident that this data is correct?”
reactWhy You Should Use React Native For Your Next Mobile AppMany seem to think that the only proper way to create a phone app is by engineering it natively. In this post, I break down why React Native is a great way to build an app.
ProcessContentful MigrationsMigrations allow us to describe how to adjust the data model of an existing database. They make a scripted, surgical change to a database rather than replacing it entirely and blowing away any content changes.
PeopleThe art of polite code reviewsTaking the time to write meaningful comments while providing feedback to your coworkers can go a long way. Yves shares some of the principles he follows to articulate positive criticism during code reviews.
ProcessIntroducing Web Blueprint - Our Practices for Web DevelopmentThis week we released a Github project called web-blueprint that documents our practices and opinions on web development. If you're a prospective client or hire, our hope is that you'll learn a little bit more about what web engineering at Rocket is all about.
ProcessMarketing Analytics with AWS and Power BIWe recently completed a project with one of the largest affiliate marketing consulting firms in the US which turned out to be a great success for everyone involved. We asked one of the lead consultants on the project, Jason Lombardo, to answer a few questions.
ProcessA Journey Moving the Monolith to Microservices2020 was a hell of a year: A global pandemic, a fraught US election, and ... Microservices! 😬
PlatformsFrom RxJava to LiveData (and back?)Here are some things that might be useful for someone else who has experience with RX and starts using LiveData for the first time.
PlatformsOrganizing AWS microservices with Python, Serverless, and namespace packagesOur project began with a small ask: build a small Python back-end using AWS Lambda and API Gateway (with just a handful of endpoints to support a few pages) and use Serverless [https://serverless.com/] to manage the Cloud Formation setup. Not very involved, not much code, not even much configuration for the deploy. Next came authentication. In pursuing the joint dreams of DRTW ("don't reinvent the wheel") and WALCAP ("write as little code as possible"), we selected AWS Cognito over other opti
PlatformsDeployments at Scale with AWS ECR and ECSWith DevOps at DEPT, one of our primary goals is to make the life of the developer easier. A specialty of ours is assisting in our customer's deployment process.
iOSiOS Accessibility: Dynamic TypeNowadays just about everyone, everywhere, regardless of age and ability, uses a smartphone. With that in mind, it’s more important than ever to consider all the different ways to make your app accessible to everyone to ensure an inclusive experience. In this series, we’ll be discussing different ways iOS developers can make their apps more accessible. First up, we’ll be talking about Dynamic Type. Dynamic Type is a feature on iOS that enables the app’s content to scale based on the user's
PlatformsCreate a Rust web service, from zero to cloudThis tutorial will describe how to... install Rust, create a new project and manage dependencies, Set up a simple web server, and compile the app and deploy to a virtual server. I'll be working on Ubuntu 20.04 but most of the setup should be the same on macOS or a different flavor of Linux.
ProcessFile Uploads Directly to S3 From the BrowserUploading files to S3 directly from the browser is a great way to increase performance by removing the need to process and then re-upload files from your own server.
PlatformsHow to Build a full page calendar with ReactLearn how to build a full-page calendar using React.
PlatformsReusable Patterns in CloudFormationAt DEPT, we use a variety of tools to provision infrastructure in the cloud. In this post, we take a look at some of the reusable patterns we've developed using AWS CloudFormation.
PeopleGitOps with Terraform, Terragrunt and GitHub WorkflowsIn this post, we'll define GitOps, review a sample Terraform app module repo and an associated GitHub Workflow to lint and version the module repo, and review a sample Terragrunt live repo and a GitHub Workflow to apply infrastructure changes.
PlatformsCI/CD with CodeBuild and CodePipelineRecently, we've used a few of AWS's services to create full integration and delivery solutions. In this post we'll look at how we've used AWS CodeBuild and CodePipeline to create a cost effective, performant and code driven end-to-end CI/CD solution.
PlatformsSecurely Storing Data on iOSOur mobile devices and the apps that run on them have a unique insight into our lives. We use them for communication, entertainment, shopping, photography, navigation, and myriad other purposes. Consequently, apps have access to a great deal of information about our preferences, our contacts, where we go, what we buy, and who we are. As app developers, we need to be cognizant of the information being handled by our apps and to safeguard it accordingly. The protection of sensitive information is
PlatformsUsing Unity with Swift for ARIn this post, I’ll dive into some of the technical challenges of AR as well as our preferred solution, focusing on integrating Unity into an iOS project.
PlatformsHeroku Review Apps with Automated Custom Domains on Route 53We were recently transitioning a client to use Heroku build pipelines for their Next.js project that handles most business logic through an external API, including authentication and cookie handling. This pipeline uses Heroku's review apps [https://devcenter.heroku.com/articles/github-integration-review-apps] as well as separate instances for staging and production environments. The client handled their domains through AWS's Route 53 [https://aws.amazon.com/route53/] DNS service. Pointing thei
PlatformsSQL 101 for Product ManagersThe following presentation was transcribed from “SQL and Python for Product Managers” webinar, presented by Colorado Product Meetup and senior software engineer, Brian Schiller. It has been edited for clarity.
Compliance in Codebases - How to Use Clang LibASTMatchers for ComplianceThe following article was created from a 2021 CppCon talk given by Jonah Jolley. One of our clients has a software product that must comply with federal regulations. For them, they must submit technical documents to a governing body. However, in their case, the codebase didn’t accurately reflect what was documented. This led to an unmitigated, unsafe condition. To solve this issue, we used Clang LibASTMatchers to check the codebase and ensure they were indeed compliant. Why Compliance in Cod
PlatformsFreeRTOS Tutorial: Getting Started with ESP32 on LinuxTo help others as they make their way through this process, we decided to document and release our findings as a FreeRTOS tutorial for developers. Here is how to get started with ESP32 on Linux.
PlatformsFreeRTOS Tutorial: Create a Hello World Application with ESP32To help others as they make their way through this process, we decided to document and release our findings as a FreeRTOS tutorial for developers. Here is how to create a Hello World application.
State of Swift WebSocketsApple delivered several exciting and innovative new APIs for developers at WWDC this year. You might have heard or read about the SwiftUI and Combine revamp, but I want to address the new world of native WebSockets! The historically complicated connection protocol is now delivered as a first class citizen! Before we dive in on how awesome this is, it's important to have a basic understanding of Sockets and the road we've traveled to reach this point. What is a socket? By definition a socket is
AWSBest Practices for Terraform AWS TagsAWS tags are key-value labels you can assign to AWS resources that give extra information about it.
Speeding Up Docker Development on the MacDocker is a helpful tool for both developers and ops. It can simplify both the development of an application as well as deployment and management of it. In this post we are going to explore a common pitfall related to developing an application in Docker on the Mac and see what we can do to mitigate the issue and work as productively as possible. Developing in Docker Developing in Docker has a number of advantages over developing directly on your Mac. Before we begin, let’s remind ourselves of a
ProcessOn Design Systems: Scope and GovernanceThe challenges discussed in this entry are specifically relevant to individuals that have roles in design leadership, product ownership, and user interface design.
PlatformsOn Design Systems: Platforms and ImplementationThe challenges discussed in this entry are specifically relevant to individuals that have roles in engineering leadership, user interface architecture, and design systems engineering.
ProcessDeploying a WebSocket Application on BeanstalkSo, you are about to build a new app and you need at least part of it to update in real-time. Well, we live in a modern world so it’s pretty common to have at least a part of the app update without requiring a user interaction or a page (re)load.
rustC++ v. Rust -Speed, Safety, & Community ComparisonIn this post, we’ll be comparing C++ with Rust, sharing our thoughts on when you should use each language, and predicting the future of C++ vs Rust.
AirflowPractical Tips for a More Performant AirflowProperly configuring and tuning your Airflow deployment to be generally performant can be a nontrivial endeavor. You can easily shoot yourself in the foot if you don’t do it right at first. You’ll discover and experience sporadic bottlenecks in Airflow-wide and DAG-level execution. You’ll apply solutions to those as they arise. You run the risk of developing a fragmented and mystical understanding of Airflow’s goings-on. You’ll have many questions and, frustratingly, fewer answers. Why are more
Leveling up Your Terraform Deploys with Github CodespacesLearn how Github Codespaces can make deploys with Terraform secure, reliable, and hassle free.