101
C language in our world 15.5. 2017 FI MUNI Brno @jurajmichalek http://georgik.rocks https://www.ysofters.com

georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

C language in our world15.5. 2017 FI MUNI

Brno@jurajmichalek

http://georgik.rockshttps://www.ysofters.com

Page 2: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Grab the source code

https://github.com/ysoftdevs/cpp-examples

https://github.com/georgik/LampESP

https://github.com/ysoftiota

Page 3: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Who am I?

Blog: http://georgik.rocks

YSofters Blog: https://www.ysofters.com

Page 4: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

C language todayAllegro5NuGetSDL2

GradleIDEsIoT

Jenkins, Bamboo, TeamCityGo language

Page 5: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Once upon a time

Page 6: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

there lived a mighty king

Page 7: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

His name was C

Page 8: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

He ruled nearly everythingtelco, med, banks, games

Page 9: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

King was getting older and paunchy

Page 10: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

World was changing

Page 11: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Changing so fast..

Page 12: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

New rivals have arrived

Page 13: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Caravane with nomads from the land of Perl

Page 14: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Lords of snakes from the land of Python

Page 15: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Jewelers from the the land of Ruby

Page 16: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Sharp warriors from the land of .Net

Page 17: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Coffee magnates from the island of Java

Page 18: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Cocoa drinkers from the land of Apple trees

Page 19: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Old kingdom of C fell into oblivion

Page 20: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

People were scared to enter the realm of old C

Page 21: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Beware SIGSEGV dragons!

Page 22: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Memory leak swamps!

Page 23: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Zombies of legacy code!

Page 24: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Evil MACROmancers#define true false

Page 25: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Insidious multi-threaded bugs.

Page 26: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Scary place for life

Page 27: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

The era of Cloud has emerged

Page 28: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Technologies influencing each other

Page 29: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Programming languages we know strongly influence the way we think about programming.

- JS Conf 2014 - Jenna Zeigen

Page 30: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Breeze of fresh ideas starts blowingfrom other technologies...

Page 31: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Bridge between technology

C - C#C - JavaC - PythonC - Android, iOS, UWP

Page 32: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 33: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Allegro

Page 34: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 35: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Allegro 5.1

Win, Lin, Mac

iOS, Android

http://alleg.sourceforge.net/a5docs/refman/

Page 36: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Initialization

al_init();

Page 37: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Graphic environment

al_create_display(int w, int h)

Page 38: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Conemu Maximus 5

Powerful terminal for Windowsuse with PowerShell, Python, Ruby…

https://code.google.com/p/conemu-maximus5/

Page 39: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Yum/Apt-like installation of Win packageshttps://chocolatey.org

Page 40: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 41: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Made with SDL

Page 42: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Made with SDL

Page 43: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

NuGet - http://www.nuget.org

Page 44: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 45: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 46: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Multiplatform

SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.

Support for other platforms may be found in the source code.

Page 47: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

SDL versions

1.2 stable - rock solid

2.x development - new features

Page 48: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

SDL_init(flags)

SDL_INIT_TIMER - The timer subsystemSDL_INIT_AUDIO - The audio subsystemSDL_INIT_VIDEO - The video subsystemSDL_INIT_CDROM - The cdrom subsystemSDL_INIT_JOYSTICK - The joystick subsystemSDL_INIT_EVERYTHING - All of the aboveSDL_INIT_NOPARACHUTE - Prevents SDL from catching fatal signalsSDL_INIT_EVENTTHREAD - Runs the event manager in a separate thread

Page 49: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Quit application

SDL_quit()

Page 50: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Window

SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);

Page 51: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Load bitmap

SDL_Surface *bmp = nullptr;bmp = SDL_LoadBMP("smajlik.bmp");

Page 52: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Visual data

SDL_RendererSDL_Texture

Page 53: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Keyboard

SDL_PollEvent(SDL_Event *event)

event.key.keysym.sym

Page 54: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Timer

SDL_TimerID SDL_AddTimer( Uint32 interval, SDL_TimerCallback callback, void* param)

Page 55: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Mouse

SDL_GetMouseState(*x, *y);

Page 56: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Text

Not implemented

Page 57: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Extensions

extension for many languages:

C++, Java, PHP, Python, Ruby

Page 58: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

PyGame

Power of C and Power of Pythonhttp://www.pygame.org

Page 59: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Kivy.org

iOSAndroidWindows DesktopWindows PhoneRaspberry Pi

Cross-platform development of smartphone application with the Kivy framework - Master thesis - Mgr. Ondřej Chrastina: http://is.muni.cz/th/430596/fi_m/

Page 60: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Gradle Native BuildsC/C++, Objective-C

http://gradle.org/getting-started-native/

Page 61: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Build tool

Exensible by plugins

Power of Domain Specific Language

Page 62: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

http://plugins.gradle.org

Page 63: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Project structure

Convention over configuration

Decrease number of decisions that developers need to makehttp://en.wikipedia.org/wiki/Convention_over_configuration

Page 64: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

C plugin

Page 65: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Gradle command line & GUI

Page 66: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

gradle components

Page 67: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Gradle build Linux package

Netflix Nebula OS Package plugin:http://plugins.gradle.org/plugin/nebula.os-package

Page 68: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 69: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Build package

Note: Gradle supports abbreviation. You can write hE instead of helloExecutable

Page 70: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

SDL2 and Android

Android Studio + NDK + Gradle

Page 71: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

IDE & Text editors

Page 72: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

c9.io

Page 73: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

A hackable text editorfor the 21st Century

https://atom.io/

Page 74: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Sublime Text

Page 75: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Visual Studio Code

Code editing. Redefined. - https://code.visualstudio.com/

Page 76: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM
Page 77: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Toolchain detection

Page 78: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Edit project

Page 79: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Leverage Refactor

Page 80: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Use Debugger

Page 81: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Fine tune

Disabled by default for all JetBrains tools :-(

Page 82: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

C in embedded and IoT world

https://github.com/ysoftiota

Page 83: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Arduino + Platform IO

http://platformio.org/

Page 84: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

LampESP example

https://github.com/georgik/LampESP- OTA- WifiManager- Web Server- MQTT Client (works also with Bluemix)- TaskScheduler (async style)More info: http://georgik.rocks/category/iot/

Page 85: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

https://nodered.org/

Page 87: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Monkey C

Garmin Connect IQ- https://developer.garmin.com/connect-iq

Page 88: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Iot-inc - podcast

http://www.iot-inc.com/category/mediatype/podcasts/

Page 89: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Bastlíři SH

http://macgyver.sh.cvut.cz/

OpenAlt 2016 - videohttps://openalt.cz/2016/program_detail.php#event_3135

Page 90: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Continuous integration

Page 91: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Jenkins

Hit for Windows users: Do not install Jenkins into path with special characters and blank space.E.g: Wrong: C:\Program Files (x86)\Jenkins. Correct: Use C:\projects\jenkins

Page 92: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

From desktop to cloud

Software is slowSoftware is hard to writeSoftware is hard to scale

Page 93: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Go

http://golang.org

Authors:● Ken Thompson - known for Unix● Rob Pike - known for UTF-8● Robert Griesemer

Page 94: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Main features of languagesyntax patterns from dynamic languagesperformance of Cblazing fast compilationoutput one binaryconcurrencylibraries from internet (e.g. Github)works on: Mac, Linux, Windows and more...

Page 95: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Materials

Andreas Krennmairhttp://synflood.at/tmp/golang-slides/mrmcd2012.html#1

Steve Franciahttp://spf13.com/presentation/first-go-app/

Page 96: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Thanks to artistsimages used in this presentation were published under creative commons license. Links to originals:

http://www.flickr.com/photos/fatboyke/3405148748/ http://www.flickr.com/photos/teveve/6301993588/ http://www.flickr.com/photos/stevewilhelm/6242822362/ http://en.wikipedia.org/wiki/Chess http://www.flickr.com/photos/akosma/9486807123/ http://www.flickr.com/photos/charlestilford/6362884553/ http://www.flickr.com/photos/ciat/6917871707/ http://www.flickr.com/photos/anieto2k/4455227465/ http://www.geograph.ie/photo/1113036 http://commons.wikimedia.org/wiki/File:Dark_Sky_(3274525313).jpg http://www.elfwood.com/~arknott/Red-Dragon.2539297.html http://commons.wikimedia.org/wiki/File:Wolf-River-swamp-North-Mississippi.jpg http://pako0007.deviantart.com/art/Zombie-Imp-2-267822507 http://www.flickr.com/photos/bogenfreund/367091428/ http://www.flickr.com/photos/infinite-magic/4016608841/ http://www.flickr.com/photos/lennysan/4403695597/ http://www.flickr.com/photos/avaverino/4870587458/

Page 97: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

L10N - verify your translations

http://www.microsoft.com/Language

Page 98: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

Swiss knife tool for web https://curl.haxx.se/

Generate source code:curl http://www.ysoft.com -o index.html --libcurl download.c

Page 99: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

What’s next?

GOTO 2016

The Future of Software Engineering- Mary Poppendieck

https://youtu.be/6K4ljFZWgW8

Page 100: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

The future is already here — it's just not very evenly distributed.

Page 101: georgik.rocks @jurajmichalek C language · SDL_init(flags) SDL_INIT_TIMER - The timer subsystem SDL_INIT_AUDIO - The audio subsystem SDL_INIT_VIDEO - The video subsystem SDL_INIT_CDROM

YSofters

Twitter: @ysoftdevsGitHub: github.com/ysoftdevs

Blog: www.ysofters.comTechnology Hour: www.meetup.com/ysoft-th

Thesis: [email protected]