Training

Boost your development knowledge and coder skills!

Every course includes special git-repo access, pdf documents and video recordings of session!

Clip macbook pro

Python

Python 101

Introduction to Python programming language. We’ll cover latest Python version 3.7+

  • Coding format and standards
  • Python syntax
  • Delimiters, operators
  • What is Object
  • What is method
  • Variable and assignment
  • Built-in data types: Booleans, Numbers, Nones
  • Sequences: Strings, Lists, Tuples
  • Generators, Generators Expressions
  • Arithmetic operators
  • Sets and Dictionaries
  • Functions and Scope concept
  • Lambda Expressions
  • Control statements and conditions
  • Loops, Iterators and Iterables

Python 102

Entering the magical world of Object Oriented Programming aka OOP in Python! Are you ready for Classes, Interitance and more?

  • What is Class declaration ?
  • What is Base Class ?
  • Class vs Instance and special methods
  • What is method resolution order aka MRO and why It’s important!
  • What is instance ?
  • What is method, property or attribute ?
  • Getters, setters aka accessor
  • Decorators
  • Object inspection
  • Hidden methods in an Object
  • What is method access level ? Pythonic aproaches
  • What is override, overload and super ?
  • What is Meta Class, Abstract Base Class ?
Bonus
  • We’ll build TODO command-line app
  • We’ll pack our TODO app as Python package!

Testing Python App

We’ll discover built-in testing tools shipped with Python!

  • Basics of testing, idea behind testing philosophy
  • What parts of the code should we test ?
  • What is Docstring test ?
  • Basics of unittest
  • What is assertion ?
  • Overview: 3rd party testing libraries

Distributing Python Packages

Python allows us to build and ship re-usable apps. Let’s see that!

  • How to build a standard Python package ?
  • Managing package dependencies
  • What are the most common mistakes ?
  • What is PyPI ?
  • Maintaining a package on PyPI: new releases, updates etc...

Python Version Management

There are lot’s of Python versions around. How can we organize project based Python version?

  • Understanding the PYTHONPATH
  • Introduction to pyenv
  • Installing pyenv to macOS, GNU Linux and Windows
  • Managing virtual environments with pyenv

Python Development Environment

You need some tools to write better Python code. What are those?

  • Installing Python with version management
  • Choosing a Text Editor IDE ?
  • Configuring code writing tool to output A-GRADE Python code
  • Helper packages for formatting and linting
  • Extensions for most common editors such as TextMate, VS Code, Atom, Sublime, vim, emacs...

Go back to top y


Django  

Django 101

You can build web apps super fast with Django web application framework. Also batteries are included!

  • Setting up Django development environment
  • What is Django Project ?
  • What is Django Application ?
  • Django project structure
  • Isolation of development, test, staging and production environments
  • What is Django Model ?
  • What is migration ?
  • What is Django ORM ?
  • Introduction to Django shell
  • Model-Template-View approach
  • Routing, URL dispatcher
  • What are to goodies shipped with Django ?
  • Built-in Django function, models, helpers
  • Basics of Django Admin
  • Basics of Authorization and Authentication
  • Quicklook: Function-based views
  • Quicklook: Class-based views
  • Swiss army-knife of Django: Django Debug Toolbar and Django Extensions
  • Integration 3rd party packages
  • Basics of deployment, let’s deploy to Heroku
Bonus
  • We’ll build a small app like GitHub’s Gist
  • We’ll integrate markdown parser, syntax highlighter and more...

Advanced Django

We’ll dive in to more advanced topics, reveal the hidden gems of Django

  • Class-based views in detail
  • Multi-table inheritance
  • What is Proxy model ?
  • What is Polymorphic relation ?
  • What is Generic relation ?
  • Custom Managers, Querysets
  • ORM performance and optimization
  • Debug in View! or in shell ?
  • What are Mixins ?
  • Data migration, pre-defined data providing, writing custom migrations
  • Built-in Signals, custom signals
  • Custom Users, custom User admin and more...
  • Localization aka I18N, Timezone aware data in the wild!
  • Permissions
  • PostgreSQL specific features
  • Intermediate Django Admin customization
  • Intermediate Django Admin widgets
  • Intermediate Django Forms
  • Custom management commands
  • Custom template tags and filters
  • Overriding Django classes in the right way
  • Testing views, admin site
  • Test tricks, mocking, mocking with vcrpy
  • Caching... What are options ?
  • Advanced logging, custom loggers, formatters etc...

Hacking the Django Admin

Django shipped with awesome Admin features. Authors always mention that “Admin site is for the developers only, not for clients!” Let’s change that!

  • Django 2.2 ships with awesome feates: Autocompletion for FK and M2M
  • Custom autocomplete views
  • Dive into django.contrib.admin
  • Let’s build our custom BaseModelAdmin
  • Permission/Group based admin displays
  • Permission/Group based admin forms
  • Forms with fake fields
  • Custom Inline Formsets, custom initial data and more...
  • Working with calculated fields in Admin
  • Custom admin filters
  • Overriding change lists, change forms, injecting extra items!
  • Dashboard view
  • Soft deletion, versioning data
  • Handling large databases in Admin
  • Using built-in admin widgets for good!
  • Injecting JavaScript flavour to Admin

Django Tips and Tricks

We’ll cover performance issues, DOs and DON’Ts. Also, best practices from well-known Djangonauts

  • Fat Model + Skinny Controller!
  • ORM performance tips + new functions such as Prefetch() and more...
  • Curated list of model tips, view tips and ORM tips
  • Using transactions, preventing race-conditions
  • Examples of built-in Query Expressions: F(), Func(), Value(), custom Aggregate functions and more...
  • Creating custom lookups: field__my_lookup=1
  • What bulk operations are ?
  • Who needs Elastic Search if you have PostgreSQL ? Search Vectors and more...
  • Migration optimization. Always check what Django produced!
  • All about Django Forms, hacking admin forms
Bonus

Django Class-Based Views

This is introductory level of Class-Based View usage in a Django application.

  • Understanding Mixins and MRO
  • Introduction to Generic Views
  • Detailed inspection of Views and their MRO
  • Blending different views together!
  • Decorator usage
  • Data validation
  • Ajax and Class-Based Views

Django and Authentication

Sometimes you need to authenticate users via different service backend such as LDAP or any custom service.

  • Built-in authentication mechanisms
  • Writing custom authentication backend
  • What is Remote User ?
  • Accessing 3rd party providers such as LDAP
  • What about social auth ? Twitter, Facebook, GitHub etc ?

Serving robust API with Django Rest Framework

We’ve already built the application. All we need is DRF for API service!

  • What REST stands for ? What is It ?
  • What DRF does to make your life easier ?
  • What is Serialization ?
  • Serializing Django models
  • Basic CRUD operations
  • Queries, pagination
  • Security, authorization
  • Routing principle
  • Related models, queries
  • Token authentication
  • API load balancing, throttling, rate limits and more...

Django Deployment Workshop

After watching Jacob Kaplan-MossDjango Deployment Workshop video from O’Reilly Oscon Conference, June 2010, We’ve inspired to do soo!

  • Provisioning Ubuntu OS’ (4 Vagrant instances)
  • Setting up application servers, load balancers, databases
  • Service and process management
  • Gunicorn approach
  • uWSGI approach
  • PostgreSQL pooling
  • Load balancing with NGINX
  • Distributed Django application infrastructure

Go back to top ↑ | Go back to Django ↑


Git

Git 101: Git for everyone!

Day to day basic usage of git from command-line. Yes you can!

  • How to install git to most common operating systems
  • What is git configuration ?
  • What is repository ?
  • What is commit ?
  • Working with files, making changes and un/tracking revisions
  • Isolation some file types
  • What is branch ?
  • What is merge ? What kind of merging does git provides ?
  • What is conflict ? How can we resolve conflicts ?
  • What is stash, tag ?
  • Undo, reset, amend and revert features
  • What are git aliases ? Let’s make our own!
  • Call shell commands from config files!
  • Log operations, searching files, messages etc...
  • git keeps everything at least 90 days!
  • Working with remotes
  • Basics of git platforms: GitHub, Gitlab and Bitbucket
Bonus
  • Git cheat-sheet

Advanced Git

We’ll dive deep in to amazing world of git.

  • Intermediate inspection of git config file
  • How to compress files
  • What is merge commit ?
  • What is bundling ?
  • Getting shallow copy of a repo
  • Interactive add, patching and rebasing
  • How stash works ? Basic tips for better stashing
  • Solving rebase and stash conflicts
  • Pick any commit via cherry-pick
  • Browse revisions from command-line
  • Detailed diff operations
  • Split and join commits
  • Changing orders commits
  • Bug hunting with bisect
  • Modify any/all commit repo-wide
  • Sign your commits/tags with GPG
  • Commit annotations, notes
  • Patching recipes
  • Reflog and garbage collection
  • Handy cli helper: tig
  • Build your own git extension: Kommit
  • What are git-hooks ?
  • More best practices, tips and work-flows

Go back to top ↑ | Go back to Git ↑


Ruby  

Ruby 101

Ruby has the easiest learning curve comparing to other programing languages. Let’s dive right in to easy and elegant world of Ruby!

  • How Ruby works ?
  • Ruby syntax
  • Interactive shell aka REPL: irb
  • Pre-defined variables, variables, pseudo variables
  • Operators, constants
  • Methods, blocks, proc and lambda notions
  • Conditions, control statements
  • Enumeration, iterators, loops and more...
  • Built-in data types
  • Object Oriented Ruby: Class and Modules
  • Exception handling
  • Quicklook: File system, IO and Kernel module
  • Basics of Rubygems

Ruby and TDD 101

Ruby is a test-first programming language. Let’s take a look at built-in testing tools.

  • Introduction to testing, importance
  • What are built-in test helpers and tools ?
  • What are testing kinds ?
  • Mocking, stubbing, test doubles notions
  • What is Minitest ?
  • Quicklook: What is Rspec ?
Bonus
  • We’ll build command-line bookmark saving tool

Sinatra 101

You can build ruby apps in minutes. From basic apps to complex database apps Sinatra is the most famous light-weight web framework!

  • More than Rack, less then Rails ‐ Den Benjamin
  • Sinatra’s DSL structure
  • Handlers and HTTP methods
  • URL Params, splat, regex and conditional matchers
  • ERB and Views
  • What is layout ?
  • Static files such as images, JavaScript and CSS files
  • Easy integration of almost any kind of file type such as Sass, Markdown
  • What are filters and helper ?
  • Making custom filters and custom helpers
  • Handling, canceling, redirecting, passing or raising errors on http requests
  • Environment isolation: testing, development or production
  • Manage sessions
  • Testing Sinatra apps
  • One file app or structured app ?
  • Deploy basic Sinatra app to Heroku

Sinatra and Active Record

Active Record is the most common/famous object relational mapping library aka ORM for Ruby on Rails. We can use it with Sinatra too!

  • Basics of ORM: What is It ?
  • Introduction to Active Record, conventions and rules
  • What is Schema ?
  • What is Model ?
  • What is Migration ?
  • Data validation
  • Prepare your app for integration
  • Active Record related Rake tasks
  • Fat Model - Skinny Controller
  • CRUD with Active Record
  • Querying database
  • Model relations, building and querying related objects
Bonus
  • We’ll build a blog application and deploy It to Heroku!

Building Basic Rack Application

Build Ruby web apps with Rack!

  • Understanding http
  • What is Rack? How It works ?
  • What is Rack Middleware ?
  • What are the Rack’s layers ?
  • How to protect http requests ?
  • Handling http methods
  • Let’s build custom Rack extension!
  • How to deploy Rack application ?
Bonus
  • We’re going to build a Guestbook app

Making Static sites with Middleman

At the end of the day, all we need is a bunch of html files to run a website right ? Let’s build It!

  • What is static website ?
  • What is Middleman ?
  • What are the built-in components ?
  • Html templating, template helpers, renderers
  • Assets pipeline
  • Data automation
  • Multi language web sites
  • Integration with 3rd party services
  • Deploy Middleman app via GitHub Pages
Bonus
  • We’re going to build an e-commerce application

How to make gem file ?

Ruby gem is a package contains tools, helpers, sometimes frame-works. Ship and deploy re-usable code with Rubygems!

  • What is Bundler ?
  • Create gem template with Bundler
  • Managing manifest files, revisions, releases
  • Gem development environment and dependencies
  • Extensible gem development
  • Publish your gem to Rubygems!
Bonus
  • We’re going to build GitHub Issue tracker!

It’s not a Makefile It’s Rakefile

You can automate your daily tasks, common operations as-easy-as writing a Ruby code! Welcome to wonderful world of Rakefile

  • Tribute to Jim Weirich
  • Anatomy of a Rakefile, It’s DSL
  • Basic tasks
  • Tasks with params
  • Name spaces
  • Multi tasks
  • Rules
  • Built-in tasks
  • File, FileList and Directory features
  • Global / local tasks
  • 3rd party Rake extensions
  • Real-life examples

Go back to top ↑ | Go back to Ruby ↑


Bash  

Bash 101

Bash is an open-door to Kernel! Every *NIX bases operating systems have a shell entrance!

  • Variables and environment
  • Built-in commands
  • Profile, settings and configurations
  • Calling a shell command, getting help about It!
  • Permissions, users, groups and others
  • Files, inspection and analyze
  • Syntax
  • META characters, parenthesis expressions, quoting
  • Command formation, chaining/piping commands
  • File descriptors, IO redirection and PIPE
  • Standard IN/OUT/ERR
  • Data types, arithmetical expressions
  • Functions, conditions and loops
Bonus
  • Anatomy of a Bash completion
  • I18N and localization examples

Make your own Vagrant Box

Sometimes you need your own box to play with. Now It’s time to build your vagrant os box!

  • Setting up VirtualBox provider
  • Configuring VirtualBox in detail
  • Building custom Ubuntu box (latest edition)
  • Initial provisioning for custom box
  • Network and other devices configurations
  • Install newly built box
  • Maintain you own box for future upgrades
  • Vagrant host/guest tips and tricks
Bonus
  • NGINX server setup and integration to custom box

Building Command-Line Apps with Bash

You can build almost anything with Bash. From small tools to complicated apps, even a webserver!

  • Parsing command-line arguments
  • Errors and exceptions in Bash way
  • Linting and checking shell code
  • Testing bash scripts, TDD is everyhere
  • Adding bash-comletion and localization
  • Adding man page for your bash tool
  • How to create brew packages
  • Distributing your app with homebrew

Introduction to Docker

Let’s build and ship our apps with Docker

  • What is Docker engine ?
  • Docker images vs containers
  • What is Dockerfile ?
  • Environment variables, passing arguments
  • How to create container from image?
  • What is Volume ? How to persist data ?
  • Sharing volumes amongst containers
  • What is Docker Compose ?
  • Lets dockerize our Python app
  • Lets dockerize our Django app

Go back to top ↑ | Go back to Bash ↑