Software projects succeed or fail based on the quality of the teams behind them. Expert developers can be hard to find. So how do you get junior developers to level up? It’s not enough to teach how to use a framework or tech stack. Good developers can follow a pattern.
]]>This cheat sheet is an adjunct to our Definitive TypeScript Guide. Originally published November 2018.
]]>Not long ago, good design was considered nice to have, but non-essential to a product or company. In today’s market, however, good design has become a commodity.
]]>Did you know that a desktop browser has almost everything you need to make video calls? A client-side web app can use the WebRTC API, which is built into modern browsers, to access a system’s camera(s), start a video stream, and connect to a remote system, all without requiring any third party plugins.
]]>Originally published October 2018. Updated March 2023. This article describes the features and functionality of TypeScript 5.0. One of the most interesting languages for large-scale application development is Microsoft’s TypeScript. TypeScript is unique in that it is a superset of JavaScript, but with optional types, interfaces, generics, and more.
]]>Modern times have seen an explosion in services providing a multitude of serverless possibilities, but what is serverless? Does this mean there are no servers? You’d think, but no.
]]>Redux-Saga is an intuitive side effect manager for Redux.
]]>A few years ago, we created a little card game that poked fun at all the ups and downs of a typical development milestone. Players can enjoy development iterations reduced to simple card draws, with each card designed to spark laughs and conversations about past project experiences.
]]>Let’s be honest, getting designs from your UX team into the hands of your engineering team in a way that makes sense is rarely easy. Add tight deadlines, team changes, and miscommunication to this process, and your application will likely end up looking very different than what you expected.
]]>News about AI is everywhere right now. Whether it’s ChatGPT or Stable Diffusion, we’re using AI algorithms to generate text and images.
]]>Use the File System Access API to read, write, and edit files on the local file system directly from the browser.
]]>In this article, we’re going to explore a particular type of parser that is conceptually simple, super flexible, and crazy easy to test. We’ll use these parsers to help us solve a problem that many of us have been faced with and frustrated by: parsing dates.
]]>Developing a mobile app is a major accomplishment, but it’s just the first step in a long journey.
]]>We discuss the benefits of using a private node registry with Expo Application Services, as well as the steps involved in using such a registry.
]]>In the first part of this article, we learned about fundamental data architecture and modeling concepts that provide valuable insights into your system.
]]>The definitions of ‘information architecture’ and ‘data architecture’ are, unfortunately, pretty broad. They cover many areas of systems engineering and are applicable across several disciplines, including the design of business processes, user experiences, and software implementations. Every concept you can find in any accepted definition for the terms has value.
]]>2022 increased the public spotlight on AI like no other year with the virality of image generation tools like DALL-E and Midjourney, text compositions from ChatGPT, and the increasing sophistication of humanoid robots.
]]>The benefits of TypeScript are numerous, from strong type safety, code maintenance to refactoring, and more. It’s also not uncommon today for web developers to be responsible for both the front end and the back end of a project.
]]>Originally published November 2018. Updated November 2022.
]]>Modern JavaScript is amazing. There are so many features you might not have had a chance to use, and some that are probably being utilized by some of your favorite frameworks and tooling.
]]>In the beginning was HTML, and our pages were fast. But they were boring, so we added JavaScript. JavaScript ended up being so capable that we ended up creating entire applications with it, dynamically creating and destroying DOM interactively to users’ delight.
]]>Feature toggles (sometimes referred to as feature flags) are an engineering practice aiming to control application behavior without the need to deploy a code change. The behaviors that toggles can affect range from hiding under development features, limited feature release (canary) to a subset of users, or used to switch to fallback implementation in the event of a system issue, and more.
]]>Continuous integration, continuous delivery, and continuous deployment implementations cover a wide range of automation possibilities for your software. This article will provide an overview of these three principles, the benefits they can bring to your engineering efficiency, and potential challenges.
]]>At some point when you build applications with a wide user base, you find that you need to support various combinations of languages and locales. This could be in the form of having to support a locale from the browser, or maybe a user has defined their preferred locale in their profile, so you need to display data in a different locale from the browser default.
]]>Jest is one of the most popular testing frameworks, but it hasn’t really kept up with the growing support for native JavaScript modules (ESM) in the developer community. A fresh install of Jest will simply not work with native modules.
]]>You may not need a monorepo, but it’s useful to know what they are and what they have to offer. You could have a monorepo that is a mix of frontend, backend, utilities, linters, or more, each with its own set of build tools, and various needs.
]]>How often have you wanted to yell at your computer or phone? What if your device could save that tirade as a text in an email or note you could review in the future, a memento of your favorite outbursts? Or, maybe you want to provide your users a more hands-free experience, with alerts that also speak to you. Or you simply want to add a clean voice-to-text component to your application.
]]>Svelte has become increasingly popular over the last several years, even being voted the “most loved” web development framework in the 2021 Stack Overflow Developer Survey. Quite a few articles have been written about how much nicer Svelte is to work with than React.
]]>Web bundles are an exciting part of the web packaging specification. They provide you the ability to package up your entire website into a single bundle and share it with others.
]]>Ask almost any developer what their greatest fear is and one deep-seated topic will rise above the rest… dates.
]]>In March 2022, a Stage 0 proposal was announced that would add TypeScript-like type annotations to the JavaScript language. The utility and ergonomics of static types for JavaScript have been debated since before TypeScript’s inception; some developers feel that types add needless complexity to the language, while others feel that types add a much-needed safety net.
]]>The first half of this 2-part series highlighted why ongoing maintenance is vital for the health of large-scale enterprise systems, especially heading into a substantial upgrade or replacement project as the system reaches end-of-life. We inverted the problem and started describing a recipe for implementing the worst “best” possible enterprise system upgrade project a business could ever want.
]]>Enterprise software delivery for large-scale projects is complex. It requires substantial time and financial resources to complete, whereas a single system can cost millions of dollars and take years to deliver.
]]>We’ve talked before about some of the great features Deno brings to the table: first-class TypeScript support, a solid standard library, support for Web standards, and implicit security. All of this makes Deno great for writing scripts and servers, but it also works well for writing client-side applications.
]]>Software engineering is one of the most challenging endeavors we can engage in today. Successful software projects must address the vast scope of today’s applications while paying meticulous attention to the small details that can make the difference between a fast, efficient system and a slow, cumbersome burden.
]]>Expo, a framework that significantly improves the React Native developer experience, has become very popular in the last couple of years. Its “managed” workflow lets developers work entirely in React; the underlying native app, including the often messy process of updating React Native, is completely taken care of by the framework.
]]>React Native is great for writing mobile applications. It lets you use web paradigms for UI construction, which are usually much simpler than the native analogues.
]]>Introduction Web Vitals scores can have a huge influence on your search engine rankings and directly impact your user’s experience when visiting your website. Follow our guide to automating Web Vitals checks against your Vercel CI Deployment using GitHub Actions and ensure that you don’t introduce performance issues into your code that could affect your search engine ranking.
]]>Deno, introduced by Node.js creator Ryan Dahl during JSConf 2018, has grown into a credible alternative to Node.js, and the JavaScript and TypeScript communities have continued to track Deno’s progress. Like Node.js, Deno is a system for executing JavaScript code in various environments ( desktop, command-line, server, etc.).
]]>A Content Security Policy (CSP) is an important aspect of securing websites and web applications. CSP is a resource security specification (W3C recommendation) for web browsers.
]]>Among the vast number of improvements that ES2015 brought to the JavaScript language was a powerful feature called “template literals.” Naturally, TypeScript, as a superset of JavaScript, has supported this useful construct since its beginning. However, TypeScript 4.1 introduced a novel application of the template literal concept to increase the power and usefulness of its type-system: it introduced something called a template literal type.
]]>Today’s software development landscape has never been more challenging. The rich capabilities of modern hardware and the high consumer expectations for performance and stability combine to ensure that developers need as much help as possible to meet their deadlines.
]]>TypeScript has become a hugely popular alternative to JavaScript in the frontend web development community. Many engineering teams are convinced it is a critical tool that allows them to write better code faster.
]]>Getting started with Git can be a daunting task, especially if you are not at home in the command line. Fortunately, Git is a mature and widely used tool so there is a lot of reference and “How do I…?” material available.
]]>Rome is a new set of tools for working with web-facing technologies like JavaScript, TypeScript, JSON, HTML, Markdown, and CSS. The toolchain currently supports linting and formatting, with active plans to also support bundling, compiling, minification, type checking, testing, and documentation generation.
]]>Improve customer satisfaction and maintain an edge over competitors by getting cutting-edge features into production faster and with fewer defects with Continuous Software Development techniques. Continuous Software Development is a term applied to a set of incremental strategies that aim to reduce the delay between development and deployment of new features.
]]>Are you working with Angular? Have you written hundreds of unit tests and do you feel like it is taking way more time to write the tests than it did to write the application code? Let’s talk about ways to speed up the authoring of those Angular unit tests and get back to doing the fun stuff. Angular components interact with users through the DOM and you want your automated tests to do the same. Here is an example of some test code that clicks a save button.
]]>As the world warms up to the idea that cryptocurrencies are here to stay, many have started to think more deeply about the advantages these digital currencies offer over traditional money. Transactions are fast, security is guaranteed by design, and third-party verification is instantly and indefinitely possible.
]]>It has been said that all businesses today are IT businesses. They just happen to make their money selling different things.
]]>At SitePen, web application development is the core of what we do. We pride ourselves on our reputation for creating rich web apps that are highly responsive and reliable.
]]>The Angular Components library started its life as Angular Material, a set of Material Design components built for Angular by the Angular team. Released around the time of Angular 5, the Angular Material library consisted of some 30 material components.
]]>SitePen is a web development company focused on modernizing apps, tools, and teams for the Enterprise. Our claim to fame is our long-standing development team that through the years has created, developed, and supported the longest-lived enterprise platform for client-side web development, the Dojo Toolkit.
]]>When developing web applications, choosing a UI component library is one of the earliest decisions your team has to make. Beyond reducing the amount of functionality your team has to maintain, UI component libraries shield developers from the complexities involved in designing user interactions that are accessible and behave correctly across browsers and devices.
]]>Software development and usage of software-driven products are rapidly evolving subject areas. Healthy competition means crafting applications becomes quicker and cheaper over time.
]]>Let’s face it. Reactive programming and the traditional web APIs are not friends.
]]>Maybe it’s the spring air and the budding trees. Maybe it’s the longer daylight hours.
]]>As modern reactive front ends have begun to converge on effective module patterns and universal approaches to common application paradigms, it’s not uncommon to see much of the variance between frontends as far as how they expose and implement their given style guide. The implementation and the delivery of application styles to an underlying component tree have become almost an art form, where each application attempts to solve the ever-present CSS problems of naming and reuse in the best, most effective way possible.
]]>CarPlay is an Apple iOS car integration standard that allows you to display content from your iPhone onto your compatible car head unit and control your phone. Common uses for this include casting music from services such as Spotify or Apple Music or for trip navigation using a map application.
]]>Mobile development mostly deals with 2 platforms: iOS and Android. There are distinct ecosystems for both platforms — each has its own languages (Java and Kotlin for Android, Objective-C, and Swift for iOS), its own standard environment (Android Studio for Android, Xcode for iOS), its own app architectures, app stores, libraries, etc.
]]>There are many articles and blog posts on the internet that attempt to advise readers on how to choose a software development company. Almost all of them discuss the traits and attributes that make one vendor superior to another.
]]>Most agile product teams have heard the concepts around using a Minimum Viable Product (MVP) to learn about what customers want, Lean Startup style, but the process of defining an MVP to fulfill those goals often proves to be easier said than done. Let it be reiterated that an MVP in software development is not needed when the market and/or user needs are well known, leading to much confusion and dilution of terminology commonality in which the enterprise world has used the term to simply refer to the first release of any product and the inevitable scoping such a release receives.
]]>Carpenters have lots of tools to pick from. Drills, impact drivers, circular saws, and miter saws; each tool may be really good for a specific purpose and a great carpenter will know when to use each one.
]]>Machine learning is a subset of AI that is concerned with algorithms that can improve through experience. Experience in this case generally translates to being fed lots of data.
]]>Want to get the most out of your dev management process? This article covers some of the best practices and methodologies SitePen uses to accomplish enterprise-level development goals. We’ll start with some basics on Agile methodology, then we’ll provide practical info about how our experience has culminated in a lean development process that turns ideas into milestones, and ultimately into product outcomes. We focus on instilling best practices throughout the software development lifecycle in all areas of the project to ensure that we not only leave behind a healthy codebase but also the healthy processes and teams to maintain and extend it for years to come.
]]>The recent release of TypeScript 4.0 offers a smorgasbord of improvements including improvements to coding editor experience, build scenarios and support for variadic tuple types. Let’s take a closer look at some of these improvements a developer can make use of in this latest release.
]]>In the previous architecture spotlight entry, we discussed Event Sourcing and illustrated the concept with a simple banking account example. We laid out many of its pros and cons to help readers decide if the pattern would be useful to them.
]]>An article on 2nd Generation JavaScript Frameworks & Libraries: beyond Angular, React, and Vue! recaps Geertjan Wielenga’s talk on the evolution of JavaScript and the influence of the enterprise in recent years. Wielenga spoke of the pioneers of JavaScript frameworks and libraries including Dojo (1.x), Mootools, Extjs, jQuery, and YUI which were among the first libraries to address the needs of the developer.
]]>Today, many software projects rely on some form of iterative software development lifecycle (SDLC) to incrementally deliver features to their users. A feature is identified, analyzed, designed, scoped, implemented, tested, and ultimately shipped to users – and this cycle is repeated for all features throughout a project’s lifetime.
]]>Your team realizes that testing is valuable. Your team creates tests for already completed features.
]]>Your software development team released an MVP application into production. The application only had a few features and the codebase is far from perfect, but there are big plans for the future! Your team presses on, adding features and your user base continues to grow.
]]>Now that we’ve demystified smart contracts and better understand what they are and how they work, let’s build our own contract on top of the Ethereum blockchain. Because smart contracts are computer programs at their core, many of the concepts that we’ll use to build a basic contract will seem familiar.
]]>Smart contracts are often described as a transformative new technology that borders on magic, able to remove third-parties and monetary risk alike from business deals using the power of the blockchain. The autonomous execution and enforcement of an agreement may sound like something out of a Harry Potter novel, but the maturation of blockchain-based programming techniques have made smart contracts more of a reality than ever. Many types of business transactions today require intermediate parties to facilitate the exchange of goods or services.
]]>It’s been a year since I last talked about my development environment. Many things remain the same: I’m using neovim, zsh, and tmux.
]]>Software architecture is the analysis, thought and design considerations that form the foundational scaffolding for a successful software system. If you write software for work or as a hobby, whether you know it or not, you’re already dealing with software architecture and the processes of making architectural decisions within your applications.
]]>TypeScript has become a mainstay of modern web development libraries. Consuming functions and widgets written by a third party can be error-prone without some type of guidance.
]]>In an olympic sprint relay, four runners operate as a team to sprint a total of four hundred meters. In order to compete at a record-setting level, an athlete needs to be capable of running one hundred meters in less than ten seconds.
]]>As a career business analyst, I’ve lost count of the number of times I’ve asked this question. More often than not, stakeholders are ready to discuss solutions before dissecting the problem itself.
]]>This is part 3 of the Disciplined Engineering series. It is for teams that have an established engineering process with confidence around the quality of their application. This article will help improve your engineering game by identifying the common patterns that will further improve your team’s focus on quality.
]]>This is part 2 of the Disciplined Engineering series. It focuses on improving the confidence of the code produced by your team.
]]>This is part 1 of the Disciplined Engineering series. It is for teams that want to establish a culture of engineering excellence for their organization. For teams that already have an established process, we recommend reading Part 2: Creating Code Confidence.
]]>Snapshot testing has become very popular for front end-development over the last few years. The term has almost become synonymous with Jest and React, but it can be used to test more than just components.
]]>The recent TypeScript 3.9 release primarily focuses on performance and stability, but it does include some language updates that are worth a closer look. Continuing its quest to save you from yourself, TypeScript 3.9 expands on the uncalled function checks that were introduced in version 3.7.
]]>There’s an old adage in the software industry – premature optimization is the root of all evil. A corollary to this should be – no optimization is just as bad as premature optimization.
]]>As accessibility-minded developers working on accessibility-minded teams, we strive to design and build inclusive applications that yield a pleasant experience for all users. However, despite our best efforts we may make mistakes and implement features in a sub-optimal way, or worse, discover that some users cannot use those features at all.
]]>Virtual reality (VR) is one of the most interesting emerging technologies for the web in 2020. Recently at HalfStack Phoenix I shared insights on VR, WebVR, the web, and what makes VR a lasting technology that will change the way we interact with information over the coming decade.
]]>SitePen is a huge advocate for TypeScript and the benefits of having well-typed code. TypeScript is especially powerful when used by medium and large teams that want to find ways to increase their overall confidence in their code.
]]>React Native is a JavaScript framework for writing hybrid native mobile applications for both iOS and Android platforms. React Native uses the same JSX and React development approach you would take for developing for the browser, but applications get built as native applications in Objective-C (for iOS) or Java (for Android) by the React Native tooling.
]]>Event sourcing is a powerful architectural pattern that records all changes made to an application’s state, in the sequence in which the changes were originally applied. This sequence serves as both the system of record where current state can be sourced from, as well as an audit log of everything that happened within the application over its lifetime.
]]>In many ways, TypeScript is more like a powerful linting and documentation tool to author better JavaScript, rather than a separate programming language. One significant benefit of TypeScript is its deliberate support for some of the latest ECMAScript language features.
]]>Intern has always taken a different path in the pursuit of flexible automated web app testing. In the early days, Intern leveraged AMD modules when most other testing frameworks were not modular or only supported CommonJS modules, allowing Intern to support modular code in any environment.
]]>The ubiquity of JavaScript is undeniable; it’s the universal language of the web — a position that no other languages hold. JavaScript is flexible, able to adapt and grow as the web grows.
]]>HalfStack is a series of tech conferences focused on half of the web development stack – specifically, the part you interface with. It lives up to its claims of being “an authentic, high value experience for attendees and sponsors focused on UI-centric JavaScript and web development.” Friday, January 17, 2020 Alamo Drafthouse, Chandler, Arizona The morning got off to a great start with comfortable seating and fine dining at the Alamo Drafthouse in Chandler.
]]>In 2007, we were invited to speak at the Apple WWDC event. At the time we didn’t know why we were invited.
]]>With the boom of location-based technologies like mobile location services and the Geolocation API in the browser, we have seen the growth of mapping and location inside of applications. Alongside this we have seen numerous mapping libraries appear for the web, allowing developers to build map-based experiences into their apps.
]]>As a first-time JSConf attendee, I happily embraced the welcoming culture and fun atmosphere – surfing, anyone? But I was even more impacted by the presentations centered around JavaScript expanding beyond the browser, using JavaScript to help others, and the focus on community. Of course I’m an avid JavaScript engineer and believer (why else would I be at JSConf), but I left feeling awed and inspired after seeing how progressive and impactful the JavaScript ecosystem can be.
]]>Rendering large data sets in the browser while optimizing for performance and accessibility is a complex problem. The current approach to handling long lists of data is using an infinite scroll pattern to incrementally load and render data just before the data enters the view.
]]>If you need to build a desktop application today, Electron is an increasingly common choice. It is cross-platform and is built using the same web technologies that you probably already know.
]]>The web is for everyone. That includes web apps built on web architecture.
]]>When building web apps, writing processing intensive code can be a challenge. One issue is getting predictable running times across browsers and JavaScript engines that optimise different code paths differently, as well as producing code that doesn’t interfere with user experience.
]]>So you’ve built an amazing app using Dojo and now you are ready to go live. After a bit of research, you learn that traditional deployments are challenging! Luckily, the days of FTPing files are long gone, and we can rely on Docker for fast, reliable deployments.
]]>