Rapid Application Development

Boris Vukasovic

Rapid Application Development

Pragmatic and cost-effective full stack development using the latest and the best of breed technologies. Boris is a seasoned thinker who swapped his lucrative career in banking for the charms of story telling through code. He has a particular penchant for API driven startups, analytical applications, rapid prototypes and experiments. Very fast delivery.

API
Web
Desktop
Mobile
Messaging
Integration

Tools

Process

1
Project Brief Feedback

Normal web project brief contains client profile, project overview, stated objectives, target audience, time schedule and budget. While it is possible to proceed with the development based on only these elements, it would present a lost opportunity not to offer possible alternative views. Rarely would the overall objective be questioned, but noting marginal benefits arising from, for example, the tweaks in the envisaged tech stack may add tangible value. Project brief feedback is offered to a client at no cost.

Goals:
  • Identify single most important aspect of the projects
  • Identify risks
  • Identify possibly missed opportunities
  • Assess overall feasibility of the project given objectives, time frames and resources

Project Proposal

After reviewing Project Brief Feedback, client may, or may not choose to amend it. At this stage it should be in any case possible to proceed with a detailed proposal concerning the development lying ahead, or, alternatively, advise the client with regard to the next steps, while withdrawing from the project.

Goals:
  • Stating objectives in sufficient detail to enable project assessment at a later stage
  • Motivating the chosen tech stack and stating the possible alternatives
  • Breaking down the development effort to manageable stages and identifying milestones
  • Estimating detailed time and cost aspects, the risk tolerance and ‘exit signals’
  • If the project contains major tech innovation, a proof-of-concept would probably be suggested as the starting point
2

3
Minimum Viable Project / Proof-of-Concept

Tackling all essential and/or risky parts of the development first is always good idea. If the initial iteration is sufficiently complete to hit the market, we will call it Minimum Viable Product (MVP). If its only purpose is to test the tech stack, it will be referred to it as a Proof of Concept. This stage may result in an incomplete API, or rudimentary UI. It may even rely on temporary solutions, say, substituting PostrgeSQL with SQLite, or AWS services with low cost equivalents.

Goals:
  • Prove the chosen tech stack is a good fit
  • Lower the risk of major architectural oversights
  • Have a chance of an early exit, saving further time and costs

Incremental Delivery

Each milestone (as per Project Proposal) would be accompanied by its own set of requirements for Acceptance Testing (testing schedule). To save time and resources, the work on the next project iteration would often commence before the client fully verified the acceptability of the deliverables from the previous phase. Defects and possible regressions related to the previous phase will be addressed concurrently with the work related to the current phase. The continuous feedback is provided via Jira.

Goals:
  • Keep the impetus of the project and lower the risk through agile planning
  • Foster planning by feature (not by activity)
  • Address bugs and defects while the developer’s focus on the particular functionality is still fresh
4

5
Functional Testing

Except for the overly complex projects, functional tests should be sufficient to confirm that the expected behaviour and functionality of the application corresponds to the stated goals. These tests are performed first by the developer, then by the client, and are broad enough to cover all intended features. Normally, a testing schedule would be proposed. For the API, a POSTMAN collection would be maintained during the development to enable testing outside of the normal application context.

Goals:
  • Inspect and adapt
  • Decrease the chance and severity of defects and regressions
  • Recognize opportunities for the enhancement of the feature set

Documentation

Final delivery will include source code, relevant meta-data, test and validation utilities, as well as developer documentation enabling suitably competent third parties to take over ownership, or maintenance of the final product. Note that this is not the end-user documentation.

Goals:
  • Enable return to the project any time in the future, either by the same developer, or by any 3rd party
  • In case of the micro-services architecture, enumerate bottlenecks as a clue for further development
  • Create versioned and immutable project archive
6

Projects

CryptoGet Add-in for Excel
Real-time messaging ExcelDNA, VS2017

This add-in for Excel (.XLL) relies on cryptocompare.com API. Visit their API pages to obtain API key (free with some limitations) and for detailed explanation with regards to provided data. This project is open-sourced, see my Github repo for details.

See More
Social Graph Harvester
Parametrized scripting Vue

Parametrized scripting application (see the screenshot in the gallery below) enabling harvesting of the followers meta-data on social networks for the purpose of multidimensional network analysis, not unlike famous Cambridge Analytica use case, or plotting in the applications like GUESS and Gephi. Exports data in fixed, CSV, or GDF format.

aberrata.com
Music Sequencer Vue, WebAudio

Drum sequencer realized using WebAudio - complex audio engine comprising of 16 channels, 3 bus FX engines, groove and swing controls, large banks for storing presets, choice of mastering effects (compression, EQ, stereo widener) and a unique “ramp” feature for the FX automation. Supporting site aberrata.com realized using PHP.

See More
Instarange (Pty) Ltd
Real-time messaging RabbitMQ, XLL, PHP

Bring live data from within the company into your spreadsheet with Instarange add-in and two simple formulas. Data is encrypted end-to-end and never stored anywhere outside of your organisation.. Create live consolidations, dashboards and reports. You can even create multi-user chat, or real time decision making tools and templates - all in Excel.

See More
Radio Lockdown
Radio Station AzuraCast, LibreTime

Live project operating since 14 April 2020. Deployment of AzureCast initially, superceeded by LibreTime (PostgreSQL, Redis, Letsencrypt). Web presence (Wordpress) at http://onsa.co.za. Unique player application enabling group chat in various rooms while listening to uninterrupted stream is based on Golang library Centrifuge and executed with Vue.

See More
LockdownTransactBot
Telegram Bot Telegram API, PHP, PostgreSQL

Client brief required safe messaging app for South African street vendors and consumers affected by lockdown induced prohibition of trade in the wide variety of goods and services. The solution exploiting Telegram API anonymizes both potential buyers and sellers. Also, short of disclosure by the Telegram itself, the url of the application is non-transparent too.

32u2 (Pocket-Dial Your Visuals)
VJ App Golang, Vue, Websockets

Unattended, or casually (via mobile remote) attended music visualization server - 1660 Milkdrop presets, babylon.js layer, master filters, local installation. Mobile remote uses websockets over wi-fi, but the server can also operate in a stand-alone mode using 18 keyboard shortcuts. Remote enables full control, including composing of public announcements and browsing of remote presets.

See More
SoundCloud Streaming
Music Streaming Vue, PHP

Music streaming application based on the SoundCloud API and one of the legacy developer licences (as these are not granted any more). The app has very different flow to the SoundCloud site, focusing very strongly on meta-data and enabling quick cross-referencing between genres, artists and playlists for research purposes.

See More
State Capture Game
Game Cordova, Excel

Puzzle-type game for mobile developed in two weeks. 19 tiles are comprised of a single state institution, up to four corrupt politicians (“capturers”) and one, or more whistle-blowers. While moving capturer tiles in order to surround the institution, the player must be mindful of landing next to a whistle-blower. Meta-data for game levels is imported via Excel file.

LPort (2005)
Financial Modelling R, VB6

Example of an older project. Parametrized scripting (VBScript) with invocation of the locally installed selection of R packages.

See More


3rd Party Solutions

This list is based on the installations and customizations recommended to clients and performed in the last 2 years.
Current recommendation may differ.

SolutionRecommendation
Preferred Laravel StarterJOSH Admin + CRUD Builder
InvoicingInvoiceNinja
Billing & PaymentsKillBill
LMSChamilo
Ticket SalesAttendize
Web ConferencingBigBlueButton
Online RadioAzuraCast, LibreTime
Content ManagementWordpress *, Drupal
Live Customer ChatLiveHelperChat
Messaging (user facing)Centrifugo, NChan (NGINX module)
Messaging (micro-services, iOT)RabbitMQ, NATS
Excel Add-ins (.XLL)Excel-DNA **

* NOTE: Wordpress plugin and theme development performed only on generic (clean) Wordpress installations.
** Add-in Express recommendation is discontinued as Excel-DNA emerged as a superior and also free product.

Gallery

CryptoGet - Excel add-in

Aberrata Sequencer

32u2 - Overview

Telegram Bot

Radio Lockdown - Chat

32u2.com

Music Streaming

LPort - Financial Modeling

32u2 Mobile Remote

Social Graph Harvester

32u2 - Pixi.js Output

Instarange (AMQP)

LockdownTransactBot - Overview

Rawket - Collaborative Coding App