Alexander Sergeev presentation

25
Alexander Sergeev Male 25 years old Single, without children Moscow, Russia email: [email protected] alxsrg.com is my blog in English. I started to write a blog to improve my language skills.

Transcript of Alexander Sergeev presentation

Alexander Sergeev

● Male● 25 years old● Single, without children● Moscow, Russia● email: [email protected]● alxsrg.com is my blog in English.

I started to write a blog to improve

my language skills.

The early years

● School with deep french language education● Visual basic and HTML● Installed linux (9th — 10th grades).● PERL a bit. Started to mess around with C.

C + Allegro library = game for Linux named «GNU Tournament» - first place in Russian Linux Games Contest by linuxgames.ru, 25$ earned (11 grade — 1 year of university)

(but looks like I was the only participant)

Attention! Next slide is rated R

GNU Tournament gameplay screenshot

Lessons learned:

● Programming basics● C language basics● How to draw sprites on screen● How to simulate AI

Moscow Institute of Steel and Alloys

09.2004 to 06.2009

Specialization: automation

Bachelor

List of studied subjects includes:

1)Information science

2)Differential equations

3)Probability theory

4)Mathematical logic

5)Operational systems

6)Databases

7)Networks and communications

8)Electrical engineering and electronics

9)Information security

10)Computer graphics

11)Artificial intelligence

12)Real-time systems

13)High-level algorithmic languages

14)Object-oriented programming

15)Management

16)Basics of mathematical systems modeling

17)Ergonomics and quality of automated syste,

18)Programming technologies

19)Statistical methods of analysis

20)Unconstrained mathematical optimizations methogs

21)Constrained and discrete mathematical optimizations methogs

and 40 more.

First job: Electropay

02.2007 — 06.2008In Russia the easiest way to pay mobile phone bills is to find the “payment box” - steel box with PC, touchsceen and a currency detector. You should type a phone number and insert banknotes into the detector. The PC inside the box connects with the server that proceed payment.

Electropay company produced these boxes and maintained servers that proceed payments.

Startup's spirit: even CEO knows how to use ssh and how to compile C programs.

SWD: 4 programmers and 1 designer.

Gentoo Linux everywhere.

Large room with a call-center.

Payment processingserver

(named «payguide»)

Terminalserver

MySQLDB

ServiceProvider 1

(ex mobile operator)

ServiceProvider 2

ServiceProvider 3

Electropay

Via GPRS

Payment attributes check

Payguide

● Linux daemon written on C/C++● Loadable modules support: each service

provider's protocol was implemented in separate module

● Multithreading: each payment proceeded in separate thread by corresponding module.

payguide

MySQLDB

Main thread

Gets payments from DB and passes them into threads in a loop

Thread 1code from a.so

Thread 2code from b.so

Thread 3code from c.so

Thread 4code from a.so

Thread 5code from b.so

ServiceProvider A

internet

JSON via HTTPS, for example

Acts:●Check●Pay●Status

Thread pool

Lessons learned:

● How to write UNIX daemons● How to deal with sockets● How to use libraries (cURL, mysql, openssl...)● How to use shared objects (*.so)● Concurrent programming (POSIX threads)● How to compile program on working Gentoo

server

Electropay company...

...was smashed by large companies like OSMP and Elecsnet, but as I know still exists in Ukraine.

SUP Media (aka SUP Fabrik)

07.2008 - now

● 250 — 300 employers● livejournal.com - LJ (purchased from its

previous owners, Six Apart), championat.com, quto.ru, redigo.ru, gazeta.ru projects.

Back-end developer

Team leader: Andrew Shetuhin

My goal was to build fast, reliable and simple C++ framework for upcoming back-end needs (new sessions storage system, for example).

I worked in a pair with Konstantin Lepa.

Flint

● C++● Libevent library● Logic in loadable *.so files● Single-thread

Flint-based systems

ACME system

Client 2

Client 1

Client 3

Iterator 1

Iterator 2

Queue CQueue BQueue A

ACME system (with Andrew Fedorov)

XC3 system (with Dmitry Nikolaev)

fron

t-en

ds

collector

Binlogs

Counter 1

Counter 2

Counter 3

results

Newcounter

Lessons learned:

● How to concurrent versions system (svn)● How to use bug tracking software (jira)● Object-oriented programming● How to meet system administrators' needs.

● How to build binary packages (deb, rmp). System integration.

iPhone programming

- Would you like to develop a Livejournal client application for iPhone with Igor Sazonov?

- Yes, sure!Livejournal uses HTML markup for a user content. We decided to write something like simple HTML browser.

Standart components (buttons, images, text labels, etc) were too slow for such usage. The first version was horrible.

Igor left the company.

I rewrote the layout and rendering system by using low-level components (Core Graphics). This allowed me to use background threads; main thread (with GUI) was not blocked anymore. Content scrolling became smooth, layout and rendering became faster.

LJserver

XML-RPC

Localstorage

Net

XML parser

HTML parserLayout engine

Rendering engine

Objects(like a post, comment,

user)

Background threads — do not block GUI

Rich content

iOS Livejournal client

Lessons learned

● Objective-C● iOS SDK● Object-oriented programming● GUI programming● How to write a simple HTML browser (without

javascript, css and tables)

Current state

Our bosses offered me to become a «product manager» in mobile apps development project and I accepted their offer.

However, I'm still the sole developer for iOS platform (and a manager for myself).

I was advising my colleague in Livejournal Android client application project. We released new version of Android project may, 12. Now I'm writing functional specification for the next Android version.

I work close with XML-RPC developers (I plan new features in application and set tasks for XML-RPC developers).

Lessons that I'm learning now:

● Design● Usability● Management

I dream about...

● more programming!● working on something that is really cool and

something which is the main source of the profit to the company (I like SUP Media but it gains profit mostly by selling ads, not apps).

● working on mobile software● work not only with computers but with human

beings, too● work in a team● living in another country.