Architecture Spotlight: Event Sourcing

Architecture Spotlight: Event Sourcing

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. Event sourcing promotes decentralized change handling and state querying, meaning the pattern scales well and is a good fit for many types

Read More »
What's New in TypeScript

New TypeScript Features that Improve the Developer Experience

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. Updating to new versions of TypeScript provides support for new language features but in a safe, backwards-compatible manner. But aside from keeping up JavaScript, TypeScript regularly offers improvements to the actual experience of writing TypeScript. This includes tools to assist

Read More »
What Makes Intern Different

What Makes Intern Different

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. Intern was also one of the first tools to leverage Istanbul to support code coverage analysis, and its flexible architecture supports integration into a variety of CI/CD environments. Intern was one of the first

Read More »
The TSConf venue

Why did we start TSConf?

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. But that flexibility is often the downfall of JavaScript; without a disciplined team working diligently to keep the codebase maintainable, JavaScript can fall apart. Enter TypeScript. A superset of JavaScript, TypeScript adds the option of typing, static analysis, and interfaces in order to create code that is

Read More »
HalfStack Phoenix

HalfStack Conference – Phoenix, January 2020

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. First up was Alex Blom talking

Read More »

Exploring the Network Information API

In 2007, we were invited to speak at the Apple WWDC event. At the time we didn’t know why we were invited. We later learned that because there was initially no native SDK, developers were advised to use JavaScript, HTML, and CSS to create iPhone apps, and were encouraged to attend our session. Obviously the world has changed quite a bit since 2007, but one of the questions we asked the Apple team at the time was: “What APIs would

Read More »

How to Pick a Web Mapping Library for your App

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. These libraries abstract away the complexity of things like geographic coordinate systems, ordering map tiles correctly, panning, zooming and various other behaviors. When it comes to building a web

Read More »

JSConf US 2019: Pushing JavaScript Beyond the Browser

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. JavaScript Helps You

Read More »

Next Generation Virtual Scrolling

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. This approach comes with trade-offs that we will look at in detail as well as new features and standards that are coming down the pipe that will improve virtual scrolling in the future. Virtual scrolling

Read More »

Getting Started with Electron, Typescript, React and Webpack

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. We’re long-time users of Electron at SitePen, and have previously talked about Setting up Electron with Dojo. Here we will explore an opinionated approach to setting up Electron: TypeScript, React and Webpack.

Read More »

Using Progressive Enhancement to Design for Accessibility

The web is for everyone. That includes web apps built on web architecture. If you haven’t heard the word “accessibility” mentioned in the last couple of years, you may have been living under a rock. Building accessible, inclusive web apps that support users with disabilities is becoming standard protocol. Have you updated Slack lately? Those color changes weren’t just a visual refresh for the UI; they were part of a conscious shift towards accessibility across their application. For many UI

Read More »

Using WebAssembly with Web Workers

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. Since 2010 we’ve had a standardised way to manage interactivity for long, non-DOM related tasks. Web Workers allow for offloading processing onto a separate thread keeping the main thread free. Recently we have seen the growth of another specification,

Read More »