Maksym Prokopov
Personal blog powered by a passion for technology.

Переезжая на Hugo

01.06.2020

Первая запись в wordpress блоге датируется декабрем 2009. Видимо в это время мне стало понятно, что поддерживать контент-менеджмент в написанном на Parser 3 сайте nexus.org.ua стало накладно и я сделал выбор в пользу популярного движка блогов wordpress. Надо признать, под влиянием medium он сильно прибавил в юзабилити и редактировать посты стало в нем одно удовольствие.

Как видите на 2009 год я считал, что поднять mysql и запустить php было очень хорошей идеей. Все это так, пока ты не становишься старше и не принимаешь решение, что поддержкой wordpress ты заниматься не хочешь, потому что:

  1. Нужно следить за сертификатами от letsencrypt.
  2. Обновлять php.
  3. Обновлять wordpress, который хаканый-перехаканый неоднократно.
  4. Следить за состоянием mysql
  5. В 2010 году все это контейнеризировалось, но все же. Сложности добавилось с приходом докера. Как теперь безопасно обновлять имаджи и какие именно использовать?
  6. Следить за сетью в докере и связностью с контейнерами nginx и letsencrypt.
  7. Думать о бекапах базы mysql, думать о бекапах картинок к статьям.

В какой-то момент не хочется заниматься поддержкой всех этих технологий, а хочется просто писать в блог.

Read More…

2020 week 22

31.05.2020

В еженедельном формате я буду публиковать ссылки, которые мне пригодились, в первую очередь чтобы разгребать все, что попадает в мой backlog, но также и делиться с читателями.

Также мне очень нравится подход, которому я научился у американцев, считать неделями. В году ведь всего 52 недели и каждая пронумерована, так довольно прикольно индексировать.

Read More…

Про редакторы и IDE

31.05.2020

Я люблю время от времени тыкать палочкой в различные редакторы и пробовать их в своей работе.

Сейчас появилось очень много интересных и быстрых штук типа Sublime, Atom, LightTable. Ребята из Jetbrains создают отличные (но медленные и прожорливые) IDE типа WebStorm, RubyMine, PyCharm.

2020 week 21

24.05.2020
Read More…

Ruby and Smalltalk

24.05.2020

Ruby has so much inspiration from the Smalltalk!

Here are my findings:

  • Inspect method actually opens an inspector for the object in Smalltalk, Ruby just tries to show object’s guts
  • collect, select are methods for collections from the Smalltalk
  • do for collection in Smalltalk is the same what’s in Ruby each
  • block parameter in «pipes» in Ruby is very similar to Smalltalk
  • super is calling the superclass parent method
  • initialize is a constructor name for the class in Smalltalk
  • keywords concept has slightly different syntax, but the meaning is the same
  • « method
  • Ruby object.send method = Smaltalk object perform: method
  • the self keyword means the same in Smalltalk and Ruby
Read More…

How to increase Kubernetes PVC size for AWS EBS

12.05.2020

It’s quite simple to increase PVC size since K8s 1.11

kubectl describe pvc and find your storage class.

Name: jenkins
Namespace: jenkins
StorageClass: jenkins-gp2
Status: Bound
Volume: pvc-473e3dbf-b759-11e9-9cbc-02a7fb0b6cca
Labels: app.kubernetes.io/component=jenkins-master
app.kubernetes.io/instance=jenkins
app.kubernetes.io/managed-by=Tiller
app.kubernetes.io/name=jenkins
helm.sh/chart=jenkins-1.3.6
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 16Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: jenkins-6b5c9bcbbb-gr2l5
Events:

kubectl edit storageclass jenkins-gp2 add the following to your storage class

allowVolumeExpansion: true

kubectl edit pvc jenkins

Read More…

My new modern web site stack

12.04.2020

In the age of Kubernetes and all this fancy stuff, I decided to make something really simple and as static as possible. The modern, cutting-edge tech stack.

This is a story about https://it-premium.com.ua reincarnation featured with responsiveness and saving all the functionality it had before. Though it wasn’t a simple, but very interesting journey.

Here are the specs I wanted to preserve:

  • Multilanguage support, due to Ukrainian language law enforcement we had to introduce one more supported language among English and Russian
  • PDF dynamic generation based on what user was chosen
  • Dynamic tariff calculations with dependencies on the services of user’s choice
  • Easy data management. It shouldn’t be hard to fix some figures by someone else.
  • Easy localization management.

The old stack

At first, it was a Ruby on Rails 4.2 application and it used the following gems:

Read More…

My recent tasks

03.03.2020
  • Create a Jenkins job for mobile application internal share to the Google Play Store
  • Create a Jenkins job for mobile application automated release to the Google Play Store
  • Restore Jenkins jobs for the COBOL build with Oracle 11.2 and Sybase 15.5 on the Solaris Sparc, AIX and HP-UX machines
  • Debug a performance issue in the distributed power management software.
  • Create helm script for the product deployment to the Central K8S cluster into staging and prod namespaces and talk to DynamoDB and put assets to the S3
  • Setup Prometheus + Grafana for the performance monitoring
  • Setup gradle builds for Java Spring and NodeJS
  • Extend XenServer with two new HDDs for a capacity and much more.
Read More…

Applescript instantly open Zoom link from the iCal calendar

26.02.2020

This is really my little timesaver because you know, a lot of meetings happen when you work remotely.
Works best with Alfred 4 using mapped hotkey.

tell application "Calendar"
	tell calendar "maksym.prokopov@trilogy.com"
		set itemLocation to location of first event where its start date ≤ (current date) + 10 * minutes and end date ≥ (current date)
		if itemLocation contains "zoom.us" then tell application "Finder" to open location itemLocation
	end tell
end tell

Read More…

Applescript instantly open Zoom link from the iCal calendar

02.02.2020

This is really my little timesaver because you know, a lot of meetings happen when you work remotely.

Read More…