Web application types include static website, traditional server-side rendering, client-side single-page application, and isomorphic single-page applications.
I recently finished cleaning up our build system and adding support for both client-side and server-side unit tests. The build is cross-platform, meaning our developers can build and run the application whether they are on Windows, OSX, or Linux.
Recently I’ve come across the need to use an ambient logical context that would automatically flow with my program logic as it jumps from thread to thread. The .NET Framework has support for this when you are working with Threads and Tasks. It is not well documented, but it Just Works…mostly.
Implementing this new logic “the declarative way” is an interesting and typical example of how we use Knockout and Rx to capture the logic and business rules in declarative statements that just work and avoid the complex logic you’d need to implement this functionality imperatively.
Recently I was working on a GUI that walked the user through a series of 5 steps in a Workflow. The user would spend most of their time on the 3rd step. As the user made edits, those edits would immediately be sent to the server for processing, and results from the server would show up in a different part of the GUI. There was a requirement that whenever the user left the 3rd step, we needed to send a message to the server to commit the changes they’d made.
When working with RxJs and Knockout, there will be times when you have an Rx Observable and need a Knockout observable so you can bind it to a view. And there will be times when you have a Knockout observable and need an Rx Observable so you can merge several event sources or some other type of logic that is more easily solved by the RxJs linq operators.
When writing a complex single page web application, you find yourself dealing with A LOT of asynchronous activities. The user is busy clicking on UI elements and typing in text boxes. Asynchronous requests and responses are flitting back and forth between the server and client. Perhaps you’ve even got asynchronous messages coming from web workers.
Up until recently, Firefox was the only Windows 7 browser which had support for multitouch. In a recent build, Chrome has also added experimental support. Unsurprisingly, they’ve used the same touch model used by mobile safari.
I had an interesting discussion with a coworker while planning a new feature for our current project. We are practicing Domain Driven Design and maintain a strict separation between the GUI and the domain logic. We actually treat them as separate applications.