Skip to content

Instantly share code, notes, and snippets.

View havenchyk's full-sized avatar
🌏
Working from home

Uladzimir Havenchyk havenchyk

🌏
Working from home
View GitHub Profile
@havenchyk
havenchyk / dabblet.css
Last active August 29, 2015 14:20
Pounding heart animation
/* Pounding heart animation */
@keyframes pound {
0% { transform: scale(1); }
25% { transform: scale(1.4); }
50% { transform: scale(1); }
75% { transform: scale(1.4); }
100% { transform: scale(1); }
}
@havenchyk
havenchyk / old_cv.md
Last active April 13, 2019 21:23
cv.md

Uladzimir Havenchyk

I'm a full-stack developer with more than 5 years in software development. Besides I started my career as a backend developer, my main focus is on building performant single page applications and frontend in general. I like to write good quality code, try to contribute back to open source, follow Unix philosophy and use shell every day.

Contacts

@havenchyk
havenchyk / review-vim-course.md
Last active January 8, 2017 14:50
review vim egghead course
  • cw - change word
  • cit - remove everything inside html tag and go to the edit mode
  • ci + symbol - remove everything between two symbols and go into edit mode
  • w - go word forward, b - go word before
  • hjkl - left bottom top right
  • dd or shift + d - remove line
  • d5d - remove 5 lines
  • go to visual mode: (v or shift + v for lines), y - yank or copy, d - delete or cut, p - paste. note: paste will work only for vim, not shared clipboard
  • Shift + G - go to the end of file or to line
@havenchyk
havenchyk / throttle_with_recurring.js
Created October 6, 2017 17:24
throttle with recurring
const throttleWithRecurring = function(fn, delay, options = {}) {
let timeoutId
let lastTimeCalled
let lastArguments
const startLoop = function(...args) {
lastArguments = args
if (!timeoutId) {
fn(...args)
@havenchyk
havenchyk / cv.md
Last active August 16, 2021 05:46
CV

Uladzimir Havenchyk

Hi, I'm Uladzimir, a full-stack developer with 8+ years of experience in software development from Minsk, Belarus. Besides I started my career as a backend developer, my main focus is on building performant single page applications and frontend in general. My everyday work is not limited by writing high quality code, but focused on solving business related problems and challenges. I constantly learn new things and apply them to the code base, be it one-liner, architectural pattern or just a new library. I have experience working remotely, thanks Toptal, that changed my life, added flexibility and strict rules that allowed me to become effective. I love my family, travel a lot around the world with a laptop inside my backpack. Sometimes I find time to contribute back to opensource and stackoverflow by answering questions.

Technologies that I recently used

Client Side: JavaScript, Typescript, React Server Side: Node, Rails

@havenchyk
havenchyk / formatter.js
Last active May 22, 2020 10:08
Format date into US format with `-` instead of `/`: mm-dd-yyyy
const now = new Date();
const options = {
timeZone: 'UTC',
day: '2-digit',
month: '2-digit',
year: 'numeric'
};
const formatter = new Intl.DateTimeFormat("en-US", options);
// mm-dd-yyyy with no library
@havenchyk
havenchyk / git
Last active November 30, 2019 17:08
Update git tags from remote (remove old, fetch from origin)
If you only want those tags which exist on the remote, simply delete all your local tags:
```
git tag -d $(git tag)
```
And then fetch all the remote tags
```
git fetch --tags
@havenchyk
havenchyk / deep-merge.ts
Last active March 2, 2023 23:16
deep merge
function isPlainObject(item: unknown): item is Record<string, unknown> {
return item && (item as object).constructor === Object
}
function filterProto([key, value]: [string, unknown]) {
// Avoid prototype pollution
return key !== '__proto__'
}
const deepmerge = (
@havenchyk
havenchyk / table-code.md
Created February 15, 2022 13:42
GitHub markdown table with code formatting
filename example of code
client/.happo.js require('dotenv').config();
client/globalSetup.ts require('dotenv').config({   path: path.resolve(process.cwd(), 'client', '.env'),});