Category Archives: Note to self

How to notify all people in channel or in team using Microsoft Teams

So you switched from Slack to Microsoft Teams (just to see what’s new, test what MS cooked for us, it’s free so why the hell not) and rest of the team said yes, we should stick with it for some time.

1 of the thing we ran into is (and you might as well) : when using Slack, you have notifications about new message in channel. I am running Microsoft Teams Version 0.6.00.34901 and I don’t have this kind of thing. That is confusing. Is that feature? Bug?

Doesn’t matter, will see in next release. For now, this is what did the job for us :

  1. Choose a team
  2. Click on the 3 dots having tooltip : “More options”
  3. View team
  4. Settings
  5. Feature settings

So if enabled (should be enabled by default) you can use handles @team and @channel to notify everyone about something that needs their attention.

Hope this helps 🙂

RE: Malá reakcia – k mojej prednáške o TypeScript v Žiline

Všimol som si dnes na Twitteri reakciu na moju prednášku. Konkrétne tu :

https://www.juffalow.com/ine/mala-reakcia/ 

Priznám sa bez mučenia, zamrzrela ma a zarazil som sa. Prečo? V podstate obsah reakcie nieje nič iné len kritika (čo je tiež samo o sebe OK), problém je že bola bez položenej otázky prečo som urobil čo som urobil v kóde a hlavne, kritika bez overenia si faktov. A tiež kritika s implikovaním niečoho, čo autor okamžite usudzuje o mne (neviem čo je DRY atď.). Takže som si dovolil napísať túto reply. Budem tvorcovi článku rovno tykať ako je v IT bežné, verím že môžem, hoci sme sa nikdy nevideli. Možno raz pri pive, teším sa.

S čím súhlasím :

  • môj kód je do istej miery crap a vo svojej podstate som ho takto nemal odprezentovať. shame on me. keď sa teraz pozerám na kód, rovno z prvej vidím chybu ktorá ma napadla keď som “sa pozrel lepšie a vyspatý” (if 0 sa v JS evaluuje na false – https://github.com/dorey/JavaScript-Equality-Table) aj po nedávnom probléme v práci s jednou drobnosťou @ runtime.

Fixnuté zmeny sú už na githube.

  • kým nemusím použiť dependencies (tu is.js), načo ich používať, to je jasné. súhlasím. pointa bola že ukážem ako funguje “intellisense” z .d.ts per danú libku a ako veci spolu hrajú – import modulu v TS. v projekte na ktorom robím primárne túto knižnicu dosť používam. áno, nemusel by som. ale dáva mi výhodu pekného počtu checkov ktoré už za mňa niekto otestoval. koniec koncov, aj jQuery nemusím používať, ale môžem. preto existujú weby ako youmightnotneedjquery.com a je na nás, aby sme si povedali kedy áno a kedy nie – rýchlosť app vs moja pri developmente.
  • npm môže byť niekedy dole, ale to je vec ktorú vieš vyriešiť cez yarn (https://yarnpkg.com), cez vlastný npm server. to je vec, ktorú rieši x ľudí. preto by som nemal používať npm packages? žiadne? really? už kompilátor typescriptu je niečo čo musíš dať dole z npm. už on môže mať dependencies ktoré nevieš zmeniť. čo ak padnú, niekto ich removne? nebudeš používať nič z npm?
  • súhlasím, že test parametrov je opakujúci sa a mohol byť/mal byť v jednej funkcii.
  • súhlasím, že aj takéto sample projekty by mali byť kvalitné a neukazovať omladine bad practices, ale to by si potom mohol povedať, že som mal použiť interface, ten implementovať a použiť DI aby sa veci dali lepšie testovať. proste je to sample, chcel som niečo oddemovať a nikde netvrdím že môj sample je kompletný zo všetkých uhlov pohľadu. class je static a pre mnohých code smell, prečo ti nevadilo to? použil som mochu. niekto používa tape lebo mocha podľa ich pohľadu zavádza do kódu globálne premenné ako describe a it a to je v JS vcelku dosť bad practice.

S čím nesúhlasím :

  • nesúhlasím s posudzovaním ľudí spôsobom aký si to urobil. skús unavený písať kód a potom si ho pozri ráno. nebudeš spokojný, ver mi. sám so sebou. keby som použil rovnaký meter, tak ti môžem povedať, že sisi nevšimol/neuvažoval ani vo svojom kóde nad if (0)
  • nesúhlasím, že ušetrenie 1 riadku ktoré si navrhol je zlepšenie. podľa mňa nieje. každý vidí aj z môjho kódu, čo robí. keby si to celé nejak zredukoval na 1 riadok, alebo o 1/2 alebo výrazne zjednodušil if, poviem OK, tu by som OK nehovoril. ak tam vidíš speedup, tak ja nie. to je ako hádka či { patrí na začiatok riadku, alebo na koniec.
  • kopol sisi do TypeScriptu bez googlenia : Ked je uz ten TypeScript taky dobry, preco po urceni typu, musim aj tak tento typ overovat? Hmm…Na prednáške som hovoril, že TypeScript pomôže s typmi len za compile time. Nie za runtime. Takže preto ten check. Za runtime môžeš poslať do funkcie čo len chceš. Ak je JS ktorý bude konzumovať môj vygenerovaný kód mimo môjho projektu, neviem čo tam pôjde a správam sa defenzívne.

Pre všetky tieto dôvody som napísal ku samplom svoj mail. Kľudne si mohol napísať, rád by som vysvetlil. IMO tvoj blog je tak trochu diss.

Samozrejme shame on me za chyby v sample kóde ktoré sa nemuseli stať. Mrzí ma to, milé publikum.

How to filter particular TypeScript errors in build result

Hi interwebz.
I just want to share this short poor man’s fix when migrating TypeScript to filter out some particular errors in TypeScript build.

Why the hell you (might) need it?

So what would be the common use case , why to bother mask/mute errors on build? Compile is the first test our code need to undergo, like first pass of “unit tests”.

Our situation : currently we have a lot of .js files that let’s say most of the time worked and we need to iterate on way to migrate fully from JavaScript only to TypeScript only. So we rename .js to .ts and then we ran into errors like (among others) :

  1. error TS2365 Operator ‘>=’ cannot be applied to types ‘string’ and ‘number’.
  2. error TS2365 Operator ‘==’ cannot be applied to types ‘string’ and ‘number’.
  3.  error TS2345 Argument of type ‘number’ is not assignable to parameter of type ‘string’.

Yes indeed these are against the “logic” of TypeScript – bring types to JavaScript. But I know I want it there for some short timespan. Just to test. I don’t want to wade through 1500 same errors I know I will have to fix, but among them TypeScript also tells me big and real problems, but buried under many same errors about types.

We are not alone in this, more ppl write about it here :
https://github.com/Microsoft/TypeScript/issues/6114

https://github.com/Microsoft/TypeScript/issues/4094

https://github.com/Microsoft/TypeScript/issues/9448

and also here https://github.com/Microsoft/TypeScript/issues/11051

Solution :

So the solutions vary from custom branch of TypeScript as such to stupid grep on the command line output. And since I am on Windows 10 (my dev box) , I chose to stick with PowerShell so this is snippet that should do the job.

Lets say we want to mute TS2365 and TS2345 errors and your TS build gulp task has name someTSBuildTaskName.

PS script – output to some file :

node .\node_modules\gulp\bin\gulp.js someTSBuildTaskName --color | Select-String -NotMatch "TS2365" | Select-String -NotMatch "TS2345" | Out-File "grepts.txt"

PS script – output just to console (just drop the last part after pipe) :

node .\node_modules\gulp\bin\gulp.js someTSBuildTaskName --color | Select-String -NotMatch "TS2365" | Select-String -NotMatch "TS2345"

PS: I am calling here the gulp task without gulp installed with -g flag (global) so you can just call

gulp someTSBuildTaskName

with globally installed gulp and you are also good to go.

Found any better solution? Pls let us know in comments! 🙂

AD: you can also use this console log parser on Jenkins:

Regular Expression :

([\w\\\.]+)\((\d+),\d+\):\s+\w+\s+((?!TS2365|TS2345)\w+):\s+(.*)$

Mapping Script :

import hudson.plugins.warnings.parser.Warning

String fileName = matcher.group(1)
String line = matcher.group(2)
String category = matcher.group(3)
String message = matcher.group(4)

return new Warning(fileName, Integer.parseInt(line), "TS Error", category, message);

and plug this into your build pipeline.

Best @Model.Your.IT.Job.Title Reactions GIF blogs

If you from time to time would like to send after failed deploy2prod or wasted day full of prototyping some funny IT/dev/DevOps/UX/WhateverWillComeNextOps GIF to cheer up your colleagues, you might perhaps use one of these sites below :

http://itreactions.tumblr.com/

http://testerreactions.tumblr.com/

http://coderreactions.tumblr.com/

http://dbareactions.com/

http://frontenddevreactions.tumblr.com/

http://devopsreactions.tumblr.com/

http://uxreactions.com/

 

Bonus :

http://www.hongkiat.com/blog/things-programmers-say/

http://www.sharenator.com/Developer_s_Reaction_Gifs/

http://martinvalasek.com/blog/pictures-from-a-developers-life

Adding .JS file generated by TypeScript in Visual Studio 2013 to markup

Note to self :

If you want to add .js file generated by TypeScript from .ts file under Visual Studio 2013, you don’t need to click Show All Files, than search for file you wanted to add and then disable Show All Files (because by default, .js and map files are not part of project). You can just drag and drop .ts file to .html or .aspx markup and Visual Studio 2013 is intelligent enough to include .js file. Fast, simple, obvious. Not for all however 🙂 .