Hledáme programátora

Kdo jsme a co děláme

Jmenujeme se ST-Software a  jsme liberecká IT firma, spadající pod Swiss Timing. Dodáváme informační systémy pro velké sportovní události (automobilové závody, jachtařské závody, částečně olympiáda , atd …). Programujeme hlavně v C#, Javascriptu, TypeScriptu. Dáváme si záležet, aby výsledný software byl kvalitní, takže samozřejmě píšeme unit-testy, integrační testy, máme CI Build server (Team City), git. Hardware máme výkonný a v případě potřeby není problém půjčit si notebook domů.

Občas jezdíme na služebky, hlavně Asie a Jižní Amerika. Programátoři jezdí spíše výjimečně, ale já jsem si takhle udělal skvělou dovolenou v Pekingu 🙂 Rádi používáme nové technologie a snažíme se dělat software správně, tak abychom na něj mohli být hrdí. Tykáme si a máme tu skvělé kafe, v pracovní době lekce angličtiny, případně němčiny. O dobré atmosféře svědčí i v podstatě nulová fluktuace, lidé od nás neutíkají 🙂 Zkrátka, daří se nám dobře.

Koho hledáme

Hledáme webového vývojáře v C# a JS. Čím zkušenější, tím lepší, ale vezmeme i šikovného juniora. Zkušenosti s AngularJS velkou výhodou.

A pokud chcete takový ten klasický checklist znalostí, tak vypadá nějak takhle:

  • Znalost OOP
  • Zkušenosti s ASP.NET, Razor etc…
  • Zkušenosti s EntityFramework nebo NHibernate výhodou
  • Javascript, TypeScript, CoffeeScript atd …
  • Ochota učit se nové věci

Reference

Tohle jsou jen weby těch her, náš software používali organizátoři a rozhodčí, takže ten na webu nenajdete.

RIO military games

Asia beach games

World Mind Games

Kontakt

Pište do komentářů nebo pokud vám vadí Disqus, tak na můj mail: david . votrubec gmail com

Článek prosím sdílejte 🙂

Dojmy z Dart Hackathonu 2014

15.2.2014 byl v Liberci (a na jiných místech) hackathon k příležitosti vydání stabilní verze Dartu. Těšil jsem se, že si zaprogramuju, a udělám nějakou skvělou a zábavnou věc jako minule, Dart Music. Buď, že na ni navážu a udělám další animaci reagující na hudbu nebo nějakou hru nebo něco využívající genetických algoritmů, protože mě láká si je vyzkoušet. Dal jsem se dohromady s Tomášem Jukinem a rozhodli jsme se udělat jednoduchou hru (kosmická loď vyhýbající se asteroidům. Loď by byla částečně řízená multi agentním systémem, Tomáš na tohle téma psal diplomku). Bohužel jsme ve výsledku nenaprogramovali skoro nic. Většinu času jsme zabili na rozcházení různých knihoven. Chtěl jsem použít DartAngular a Box2D nebo StageXL pro kreslení na canvas. Bohužel DartAngular nefungoval. Příklady, které byly v dokumentaci, nám nefungovaly, nešly ani zkompilovat. Po přidání příkazu import ../path/to/angular.dart to chvíli chodilo. Zdůrazňuji, že chvíli. Pak jsem přidal Box2D a DartAngular už zase nefungoval. Po odebrání reference na box2d a tedy vrácení se do původního stavu, to stejně nefungovalo. Bohužel jsem nebyl sám, komu DartAngular nechodil. Nehledě na to, že příklady pro DartAngular používají pro mě dost exotické anotace, které určují, jestli je daná třída direktiva nebo controller nebo service.

Takže paradoxně na minulém hackathonu 2012, kdy nebyly žádné dartí knihovny a všechno jsme si psali sami, jsme byli mnohem produktivnější.

Co se Dart Editoru týče, tak podle mně žádná sláva. IntelliSence moc nenapovídá,  neumí doplnit chybějící import statement při použití třídy definované v jiném souboru (ale to myslím Visual Studio bez Resharperu taky neumí). Kluk vedle měl problém: Dart Editor mu nechtěl zkompilovat validní kód. Poté, co smazal závorku, uložil soubor, přidal ji znovu, zase uložil, tak už to zkompilovat šlo. Jana Moudrá reportovala podobný problém.  Zlatý TypeScript a VisualStudio s Resharperem.

Co se mi líbilo

Dart jako jazyk je pěkný, a když už je ve verzi 1.0, tak se nebude tak překotně měnit. A budoucí verze Chromu by prý měly mít Dart VM přímo v sobě. Takže to možná Google myslí s Dartem vážně. Pokud ho ovšem nezařízne jako jiné projekty.

Hackathony jsou super a za to že tenhle kluci z libereckého Spagetti Code uspořádali jim patří můj dík. Dozvěděl jsem se pár drbů z Heuréky.cz, v jejíchž prostorech se akce konala, o tom, kolik berou programátoři v COBOLu, jaké se kde staly průsery a taky jsem měl dovolenou od dětí, a to se počítá 🙂 Díky, kluci, za uspořádání. Marek z Heuréky říkal, že do budoucna plánují pořádat nebo hostovat přednášky, tak bude na co se těšit.

Obrázek za tisíc slov, aneb ať žije DartAngular 🙂

dart

PS: Hledáme programátora

How to call any function as a $filter in AngularJs

Recently I had this little trouble. I had a simple angular controller, which filtered some array of items. I did not want to define the filter in a “global space” because I knew it will be used only by this one controller. So this first thing was to define the custom filter function. Like this

$scope.customFilter = (item)=> {
  return item.someProperty == $scope.filterValue;
};

Then call in UI like this.

<htmlElement ng-repeat="item in itemList | filter:customFilter"></htmlElement>

So far nothing special, just what is in the angular documentation. But I needed to call that custom filter again, but not from UI but programaticaly. The way how to invoke custom filter without registering the function via myAngularModule.filter(‘customFilter’, function() {…}) is this.

var filteredItems = $filter('filter')($scope.itemList, $scope.customFilter)

Speed up Visual Studio by disabling SourceControl plugin

My Visual Studio 2013 Professional with Resharper 8 was considerably slow and sluggish. Sometimes it took several moments for typed character to appear on screen. After trying several things, including disabling Resharper, which did not help, my colleague found a solution: Disable Source Control plugin. For some reason it was enabled after installation. That is OK with me, I understand that some people might be afraid of Git command line interface, so they use gui plugin instead. What makes me angry is the fact the Visual studio re-enables this plugin after restart. So I have to disable it again and again.

Git Source plugin

SLOW | Default Setting of Source Control plugin in Visual Studio
SLOW | Default Setting of Source Control plugin in Visual Studio
FAST | Disable Source control plugin
FAST | Disable Source control plugin

 

OpenVPN – Can’t run unsigned TAP driver

I’ve installed OpenVPN but during the installation I got the error message saying “Windows can’t verify the publisher of this driver software”. So I chose not to install that driver. When I later tried to access VPN, I was not able to establish connection. The message in log always said something like “CreateFile failed on TAP Device” and “All TAP-Win32 adapters on this system are currently in use”. I am using Windows 7,  64 bit.

I tried to reinstall the driver, run as administrator, restart, reinstall again … install different version. Nothing helped. But what helped was to install older version of VPN from here http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.2-I003-x86_64.exe (direct link to .exe file. The browser will try to download it upon clicking, so don’t be surprised). This version had the TAP driver signed, Windows did not complain and everything went just fine. Hope this helps someone.

VPN 0

VPN 2

VPN 3

 

Saying once again. 64bit Version 2.3.2 of OpenVPN worked for me.

Selenium WebDriver can’t start

After a few days of writing tests using Selenium, the WebDriver suddenly stopped working. It did not even start. I tried to restart my machine, check versions of Firefox and Selenium (both were up to date), restart Visual Studio, clean solution. Nothing worked.  There was not even an exception description. All I got was a message “Exception does not have a stack trace”. Not very helpful.

After some time I found the cause of this: When Selenium WebDriver starts it creates its own copy of  Firefox profile in Temp folder. If WebDriver is stopped in a standard way, then it cleans up after itself and deletes the folder (In my case it has about 33MB). But if it is only terminated, then the folder remains there. And because I am using RAMDisk and my Temp folder is mapped there, I’ve run out of memory after a few days. Surprisingly everything else worked fine, maybe a little slower. But WebDriver just silently died. After I’ve clean up my Temp folder it started to work again. Hope this helps someone.

How to optimize SQL generated by NHibernate

If we query objects with lot of dependencies NHibernate can (and I believe by default will) load all of them. In many situations this is not necessary. For example all we want is to count objects with some properties or show only 3 properties of some object. The object has lets say 20 properties, some of them pointing to other DB objects and those pointing to another objects. How to optimize this? It is actually quite easy. Use Linq’s SELECT method. NHibernate is clever enough to translate it into optimized SQL. But there is one drawback to consider: NHibernate can not optimize queries where the ‘where condition’ is passed as a variable.

Example code:

//Optimize query so that it reads only certain columns

Repository.Query<MyObject>().Where(mo =>
  mo.SomeProperty == true //or whatever other condition
 ).Select(mo => new { mo.Id, mo.Name  }); //query optimalization - read only Id and Name;

 

 

Učíme se cizí jazyky na Kindlu

Jedním skvělým způsobem jak se “pasivně” naučit cizí jazyk  a rozšířit si slovní zásobu je v daném jazyku číst beletrii. Co ale dělat, když vaše jazykové znalosti nejsou na dostatečné úrovni, aby vás četba beletrie bavila a nestala se z ní hledání slovíček ve slovníku? Můžete si buď koupit nějakou dvojjazyčnou knihu nebo si ji sami “vyrobit”. Pokud máte Kindle nebo jinou čtečku knih, pak není nic jednoduššího. Koupíte nebo stáhnete (pokud je zdarma) si obě jazykové verze a při čtení po pár stránkách vždy průběžně přepínáte z jedné knihy do druhé. Nemusíte listovat nebo si dělat záložky, čtečka si pamatuje, kde jste přestali číst a automaticky na tom místě pak knihu zase otevře.

Kde sehnat elektronické knihy?

Česky

http://jakubvik.blog.idnes.cz/c/283447/E-knihy-zdarma-Kde-stahovat-elektronicke-knihy-zdarma.html (Zdarma)

http://www.ebookeater.cz/ (Zdarma)

Anglicky

http://www.openculture.com/free_ebooks

http://www.gutenberg.org/

Nebo koupit pokud chcete novou.

PS: Čtu teď takhle první díl Harryho Pottera německy. Nejdříve si přečtu pár stránek anglicky, pak německy, občas česky. Je zábava jednotlivé překlady porovnávat. Musím vzdát hold Pavlovi Medkovi za skvělý český překlad. Podařilo se mu poeticky přeložit jména některých osob a míst, což v německém překladu chybí.

LinkedIn endorsement je k ničemu

Když mě někdo “endorsne” (pozn. řekne o mně, že něco umím), tak mi to příjemně pohladí ego. Všichni máme rádi, když nás někdo pochválí. Problém je v tom, že na LinkedIn můžu o někom říct, že ovládá nějakou technologii (endorsnu ho), aniž by ji dotyčný ovládal nebo aniž by ten, kdo chváli dané technologii rozuměl. A když ji nerozumí, těžko ohodnotí, jak té technologii rozumí někdo jiný. Takže taková informace dost ztrácí vypovídající hodnotu. Evidentně nejsem sám, kdo si to myslí. Schválně si zkuste v Twitteru najít “endorse linkedin” 🙂

linkedIn

 

Dneska mě například “endorsla” moje bývalá manažerka z firmy, kde jsem pracoval před 6ti lety. Podle ní umím Javascript. Což je sice pravda, ano, ale v době kdy jsem tam pracoval, jsem se těžce plácal v základech PHP a VBScriptu v Excelovských makrech. A o nějakém Javascriptu jsem si tehdy mohl nechat jen zdát. Minulý týden mě kolega (!) magicky naučil Entity Framework. Do té doby jsem jen věděl, že existuje a teď ho “umím”. Jen čumím, jak je to báječné.

Zajímalo by mě, jestli se podle těch endorsment někdo opravdu řídí, ale tipnul bych si, že ano. Pokud o někom 50 lidí řekně, že něco umí (byť na LinkedIn), tak na tom asi trochu pravdy bude. Ale stejně …

Co budete dělat, až vás někdo endorsne jako “znalce japonského porna”?

linkedIn2Jaké s tím máte zkušenosti vy? Co na to headhunteři? A co Jan Tleskač?