Humbly, I think the question would be: What can I not do?
Everything from small microsites to high-traffic, load-balanced systems all built either from scratch or on open source frameworks like CodeIgniter, Laraval, Wordpress, Ghost etc, or using my own battle-hardened PHP framework and JS libraries.
I always seek to understand the system and the environment I work in, opposed to trial and error method, hence I can manage the concept rather then the code.
The environments and languages I use in order of preference are:
- PHP - I prefer MVC frameworks
- Browser Extension - Chrome, Firefox, Safari, Opera
- Delphi (Borland)
- C++ Builder (Borland)
- Xcode - Objective-C and Swift
- Visual Studio
I can design systems with strong security (authenthication, data storage), using latest achivements in cryptography.
I have built some tools for web scraping that can easily extract data from big HTML pages.
I also enjoy improving my tools and working environment by writing script to automate repeated tasks, inventing preprocessors for JS, CSS (that was before I discovered LESS), dealing with data formats for information interchange on the network (CVS, Bencode, MS-Inf, URL etc).
- Named / Bind
- HTTPS with SPDY
- Node.js, npm
- Automatic DB Backup
I preffer to do all the configuration and maintenance jobs directly on server, over command line, using some scripts and crons.
Server must have all it needs to do its work and nothing more.
I don't like tools like DA or cPanel, cause they limit your posibilities and add extra complexity to server's ecosystem.
I have a broad knowledge of UI and UX design.
I mostly use:
- HTML5 + CSS3 / LESS
- Lo-Dash / Underscore
- jQuery UI
- Adobe Photoshop
- Google Fonts
- Highslide JS
- a collection of own jQuery plugins (lazyLoad, dynEdit, boxSlide, formSavior, PageControl, autobox...)
Speed and responsiveness is a very important component of UX.
I use a variety of techniques to squeeze maximum performance out of the products I create.
These techniques include:
- Cache - client-side, server-side, in-memory - there are so many ways to use cache, but it always requires some logic to keep objects fresh.
- Batch DOM manipulation - operate on a collection of DOM elements out-of-the-flow and insert all of them at once.
- PJAX - load only what has changed by combining AJAX with pushState.
- Combining of resources - CSS, JS and Image files can be combined to reduce number of requests.
- Minification - I use Closure Compiler to automatically compile JS and my own CSS minifier.
- Compression - Nginx does the job quite well with gzip for static resources. I also compress dynamic resources (HTML, JSON, CSS, JS) and optimize images.
- SPDY - whenever posible I enable this awesome protocol.