Online HDR Photo Editor

It’s been a while since I last posted here because I’ve been quite busy with daytime projects and I did not have much time for my pet projects, but finally I accomplished an idea that I had for a while.

Presenting CSS HDR – an online HDR photo editor, built on top of VueJs, ES6, HTML5, and CSS3. The app is running completely on the client, with no server-side processing whatsoever.

The main idea was to use only CSS filters and mix-blend-mode rather than canvas and complex manipulations. The images created with CSS HDR can be saved locally as .jpg files or exported as .json and can be imported back for additional editing. Below are a few images processed with the app.

Vue Ribbon 2.0 for VueJs is Out

I am happy to announce that one of my favorite VueJs projects – VueRibbon has just received a major update. I’ve reworked the component entirely abandoning Vuetify for the well-known modern Microsoft Office ribbon look and feel, introduced a few new events and fully reworked API and tools.

What’s new

  • Vuetify UI library is no longer a dependency; instead, it has the well-known modern Microsoft Office ribbon look and feel
  • Ships with three themes – “blue” (à la MS Word), “green” (à la MS Excel) and “orange” (à la MS PowerPoint). The creation of new themes is easy and streamlined
  • Fully reworked set of tools
  • Fully reworked custom events and event binding plus two new custom events
  • Fully reworked and improved API with 30+ methods, allowing total control over the ribbon
  • New API tester
  • More concise, improved and easier to use documentation
  • NPM installation
  • CDN support

CSS Gradients Editor Built on Top of VueJs and Vuecidity

Here’s a small project, based on VueJs and Vuecidity I’ve just accomplished you can use to generate, edit, preview, copy and get permanent link CSS gradients. Currently, it supports linear and radial gradients, but I am planning to add support for conic gradients, enabled by the excellent CSS conic gradients polyfill by Lea Verou.

Vuecidity – UI Component Library for Vue.js

Inspired by Material Design and Bootstrap and from a few other takes on modern UI, I just finished Vuecidity – a UI component library for Vue.js and a free, open source project.

Vuecidity provides developers with a huge set of 30+ UI components, 24-column responsive layout grid system, styles and colors, beautifully crafted form elements and a couple of useful Vue directives, which allows them to concentrate on the functionality of the web, iOS, Android and desktop apps they build. Powered by Vue, Vuecidity can be used to simultaneously develop amazing responsive websites, PWAs, desktop applications (through Electron) or mobile apps (through Cordova) using the same codebase written in ES6. SSR as well as many more components are on the roadmap and will be available in upcoming versions as Vuecidity is in constant development and improvement. The library is available for installation via npm and adding it to your project is quick and easy. Font Icon Search Service is a new font icon search service project I’ve just finished. It enables instant search in several icon font providers – Google Icons, Google Material Design and Font Awesome and the list will continue growing. Built with VueJs on top of Vuetify it is fast, reliable, mobile-friendly with nice Google Material Desgin inspired UI.

Ribbon Component for Vue

Almost 7 years after the release of RibbonJS, I am proud to announce my new endeavour in the ribbon UIs, called VueRibbon.

Built on top of Vue and Vuetify with ES6, it offers seamless integration in Vue apps and is easy to customize and extend. Created in compliance with Google Material Design, it also provides unmatched user experience, awesome design (256 color schemes and 2 themes – dark and light) and a huge set of 3000+ font icons from and

To communicate with the rest of the page, VueRibbon dispatches custom events. API methods are provided to communicate with the ribbon from the outside.

VueRibbon is built with ES6 and the distributions come with WebPack module bundler, so you can start building with it immediately.

RESTful API for Encyclopaedia Metallum

This is an unofficial, third party RESTful API developed and maintained by me for retrieving metal bands data (band and artist bios, discographies, line-ups, etc) from Encyclopaedia Metallum.

Responses from the method calls are in JSONP format and the service is free, however providing an API key along with the requests is required. To use the API you should get a free API key from here first.

This service is not endorsed by or affiliated with Encyclopaedia Metallum.

You can check the documentation on this page and start using the API straight away.

Auto Resizing Textarea HTML5 WebComponent

Just finished my next experiment with HTML5 WebComponents. AcidJs.XTextarea is an advanced replacement of the classic <textarea /> HTML element, supporting custom events and auto resizing as-you-type. Check the extensive documentation in the distribution file (click the download button at the top of the demo page) or scroll this page to see the demos.



[sourcecode language=”xml”]<acdisj-xtextarea></acdisj-xtextarea>
<acdisj-xtextarea placeholder="Type your message…" id="textarea-1" name="textarea-1" rows="5" cols="40"></acdisj-xtextarea>
<acdisj-xtextarea name="textarea-2" rows="10" cols="30" disabled></acdisj-xtextarea>
<acdisj-xtextarea name="textarea-5" autoresize="off" rows="5" cols="30"></acdisj-xtextarea>
<acdisj-xtextarea autofocus name="textarea-8" cols="60" rows="5"></acdisj-xtextarea>
<acdisj-xtextarea name="textarea-4" hidden></acdisj-xtextarea>[/sourcecode]

HTML Attributes of the Component

Apart from the form attributes like name, rows, cols, placeholder, spellcheck, autofocus, disabled and readonly etc. and the HTML standard attributes such is id and style AcidJs.XTextarea supports one custom property, allowing to turn the autoresizing off:

  • [autoresize="off"]

JavaScript API – Methods, Accessors and Events

The component supports all standard JavaScript methods querySelector, querySelectorAll, getElementById, etc. plus the following custom methods, accessors and events:


  • enable() – the method enables back a previously disabled textbox by using the disable() method, the enabled accessor or the disabled and readonly properties.
  • disable() – the method disables the queried textbox, so no user input is possible.
  • getValue() – the method returns the current value of the queried textbox, similar to the enabled accessor.
  • setValue(String|null) – the method sets new value to the queried textbox.


  • enabled – gets or sets the enabled state of the textbox. Use Boolean value for the setter.
  • value – gets or sets value of the textbox. The setter requires a string or empty value.


  • type – the event is triggered upon user input and returns an object, containing the current value of the textbox to which the event handler is bound to:

    [sourcecode language=”javascript”]{
    data: "Lorem ipsum dolor sit amet…"

    [sourcecode language=”javascript”]
    * Bind to the "type" event of the textbox
    $("#my-textarea").on("type", function(e, data) {
    window.console.log("textbox event:", e.type, data);

If you share the same interest towards HTML5 Web Components as I do these days, make sure you read my relevant blog posts and further endeavors on my HTML5, CSS3 and JavaScript Experiments and Insight website.

Corporate BS Generator HTML5 WebComponent

Nothing serious this time, just a small fun HTML5 WebComponent, inspired by BS Generator, stitching-up (bullshit) sentences out of random buzzwords:



[sourcecode language=”html”]<acidjs-xbsgenerator></acidjs-xbsgenerator>[/sourcecode]

The component does not have it’s own methods, setters, getters or styles. Just use the tag wherever you want.

If you share the same interest towards HTML5 Web Components as I do these days, make sure you read my relevant blog posts and further endeavors on my HTML5, CSS3 and JavaScript Experiments and Insight website.