← Ingestions

Ingestion 83f02b2b extracted

Format
transcript
Kind
lightning-talks
External ID
Lightning talks 1 - wroc_love.rb 2023.lightning.txt
Content hash
dc3889a230be
Source at
2023-03-31 09:00
Manual extractions are temporarily disabled.

Extractions (2)

Status Model Tokens (in/out) Duration Cost Nodes/edges Read set (nodes/edges) Time
completed claude-opus-4-7
412,585 / 13,629
52,380 cached ยท 13,095 write
203.1s - 32 / 43 424 / 0 2026-04-17 22:11
failed claude-opus-4-7 RubyLLM::BadRequestError: You have reached your specified API usage limits. You will regain access on 2... 2026-04-17 16:18

Content

hi guys uh I'm Pavo and I have just five


minutes so so I won't tell any more


about myself


guys uh the last topic was about games


and it was awesome it was tested mine


are aren't but have you ever wanted to


write a game


like actually one ah so you're just as


me failed gay in developers awesome I've


done that in every technology I've ever


written in from


IRC bot actually uh to Java Unity with


the c-sharp and so on but eventually I


figured I haven't written a game in Ruby


on Rails


so have you ever tried with Ruby on


Rails


awesome I have to say that okay I'll


catch you later on so let's see how it


could look like


is there awesome so we have a night and


it has to avoid the dragons and to find


the Beloved Ruby awesome score one


so this is a simple game you can all


imagine how it works but let's try the


fun one


now still we have this Dragon but now


the world is going forward as in real


life and just FYI it's not JavaScript


it's all generated on backend and I'll


show you how


so how does it work of course it has


endpoints for movements we all know that


but on top of that there is a game Loop


that keeps the game status and makes the


state progress what's the game Loop is


just the process it's a continuous


process that calculates the state and


calculates what the next state should be


based on the moves based on the on the


world that is modeled in a game


so how to run such a process for myself


I'm using this gem respawn and permanent


job well it's mine so you can figure


I'll use it it's again a gem for running


robust processes easily I will show you


in a second how but actually uh credit


is not mine because it's just a wrapper


for something called server engine and


that's a framework for implementing


robust multi-process server


and it has been presented in rubikagi in


2014 by masahirona Kagawa all credit to


him and you can watch this presentation


in here it's awesome it's in Japanese uh


so there is there are two two


presentations on server engine the other


one is in English in fact so go watch it


it's an incredible piece of software and


it's used exactly to implement robust


multiple servers why why robust because


they work like this you define workers


you can Define them as processes or by


ours or as threads you can add a server


uh on top of that that you can


communicate with for example you can


make soft restarts you can reconfigure


your server and there is a supervisor


mechanic that means if ever your worker


fail fails and it will because of memory


issues because of network issues


anything it will just restart it again


an awesome piece of logic go watch the


presentation how you it well I'm not


showing the server engine itself but for


a raise permanent job you just have to


create a class with a call method


and syntax made due to Nick Sutter from


Terry Blazer or props to him and for uh


just inspiration and you create yourself


for example a rake task you just put a


call raise permanent job you put the job


you want it to handle and you run it and


you just Define on how many workers it


should be so uh what what you get here


is the supervision you don't get that


with rake but with respawn and permanent


job and with server engine for the most


part you get the supervision included


you can put it in a multi-threaded mode


and it's really really awesome and how


does this work well we have a game Loop


iteration which so is this is the job


that's going is going to be processed so


it just loads the board progresses the


state and saves the board therefore it


can show you that board on your screen


and as there task well game start means


reset all the boards put it in the race


permanent job and just sleep for 0.3


seconds between the iterations and here


you go here we have a game guys before I


muted


if you have a phone just scan this QR


code and join me in this game you can


click on the white port and you can move


yourself left light left right up and


down thank you very much that's all from


me


[Applause]


I also started my timer thank you thank


you everyone


thanks and organizers for this


conference that was recognized here and


I'm here the second time and it is great


okay so now today we are talking about


uh one specific problem that you can


encounter when you actually develop a


Ruben rails application when you switch


to some branch that has a


data immigration the changes schema and


the schema gets inconsistent is


inconsistent in terms of another Branch


like from Master use which


to some branch that adds not null column


then switch back and you start your test


for example and start all starting using


application and you finally get some


weird exception


uh inside today so just in real time and


basically it's a frustration issue uh


specifically for junior developers


developers because they don't understand


what what exactly happened


so in order to solve this problem


uh


what we actually need to do is just to


get rid of


from the database this Phantom migration


that was supplied on the branch


so and this should look like and


my point is that why not to create an


automatic solution that would do that


for us like of course you can manually


solve this issue


sometimes but drop in database and


renamating it with a data dump but my


point is uh


easy just to keep track of this run


migration migrations inside the temp


folder and


every time when you switch to some


Branch you just have history of all


these migrations and just it's easy to


roll back them


uh so this is just Jam that I have


created and so feel free to use it


uh so installation and configuration not


needed is easy


uh I already discovered what is this


it's uh the implementation details uh we


keep the Run migration and sub inside


temp folder and so every time when you


switch to some another Branch you just


run as usually do rails DB immigrate and


you get actual database so of course


there are some limitations


like it assumes that all migrations are


reversible


so sometimes you know that it will not


be possible to roll back as easy as is


but uh


yeah so mostly


this implementation will work so just


keep in mind that you have to keep your


migrations uh reversible


so yeah


this is the link to this gem feel free


to use it and if you have some questions


and maybe someone already used it I


would appreciate uh for receiving your


feedback and talking about it in real


time today at party thank you


[Applause]


hey guys


um so today I'm gonna show you something


that you have definitely never seen


before and that will blow your mind so


um probably you don't know that if you


have rails application you can do


something like rail C


which opens the console where you can do


something like a profile that's all so


you can inspect all the data you have in


the database I know no one knew about


that


um


and


um


yeah okay I know everyone knows that


um but


um a lot of people like the


um like that and and uses that a lot and


likes the output


um however I don't I actually


um hate the the default output of


um of IRB and


active record in in particular thus I


created a gem


which


um well hopefully makes makes the DD


output a little bit better


um


so it supports different layouts if you


have like a wide


um


White model white table


um


it swaps to a horizontal layout which


displays every uh every item on a on a


new line and each


each item is separated with those green


fancy fancy lines so


um it also displays the total count here


and you can customize it and add more


data there if you if you really want


um yeah that's also


um here is the


uh here's the QR code with the link to


the repository if you want to use it


then go ahead and don't forget to like


And subscribe I mean start the Ripple


story right


[Applause]


[Music]


okay hey everyone do you recognize yeah


Queen's Gambit right one company made


chess popular in the whole world by


creating a fictional character this is


the real character Magnus Carson the


Norway world champion


and I actually played him last year he


beaten me it was online but still I was


surprised anyway chess became cool


recently I'm surprised I'm in my chest


word for the last 30 years and suddenly


everyone plays chess that's great even


those guys play chess and he gets paid


for this even more than just players


probably so I want to present you some


tips for programmers and why it's worth


to be


to start playing chess it's very


scientific it's very meritocracy driven


let's say if you are wrong or right


let's play I will prove you there is


measurable progress so this is my feeder


rating since 2003 you can see okay the


moments where I played better Wars I can


analyze what would good what went wrong


you see two years ago something went


really wrong but


then I kind of re reinvented myself


there are many ways to improve this is


online tooling you can see after every


online game you can click learn from


your mistakes and the engine will tell


you what you did wrong it's


fantastically now improved automized


there's fantastic support their books


courses playing you can just play or


hire coaches so lots of ways to improve


uh of course online play is the thing


that was mostly popular especially covet


helped here uh there are two main


websites chess.com and leeches both are


both are amazingly good on both mobile


and web so whichever you choose is great


leeches is fully open source you can


actually try to tweak it if you want in


Scala and chess.com no one knows but


it's actually implemented by a police


guy from pos9 peel to doctora


chess is usually the first battlefield


for AI so when we purchase players see


some AI uh you know improvements in


progress in other areas we are like well


we've seen this in 1997 when Kasparov


was beaten by AI we've seen with Alpha


zero so we are usually somehow the big


companies also always choose chess to


prove that they invented something great


so that's amazing for chess So currently


the we call them actually engines


instead of AI but they are neural


networks it's the most two popular ones


it's stockfish and Layla both open


source and both can be node we can tweak


them


this is what what it looks like this is


my game for with Grandmaster Christopher


koboskis from the last weekend in


katowita uh withdrew uh that was a good


result for me because he's a Grandmaster


and you can see I can come back to home


because we played we played real but on


a digital chessboard there's such things


right now it's all connected immediately


transmitted to the Internet so I'm


coming back home I just click the engine


you can see with the this is the output


of the chess engine I can see the moves


that chess engine recommends it was


actually a draw because the chess engine


says zero zero zero and it says the


depth was 51 so it's actually calculated


51 uh halif moves ahead the same problem


with AI we have with in Chester in other


areas it will tell us what is the best


move but it doesn't tell us why


um some tips for you if you're starting


with chess always start with E4 so the


pawn from the kings move uh two pawns


two pawns had don't try to experiment at


the beginning then develop the Knight


and develop the bishop


that's usually leads you to the best


setup and immediately


um you know you can actually look as a


professional player I will not recognize


if you play like that that you are not a


chess player then Castle so you hide


your king you castle of the king


polishes rashada so hide your king


because King should be safe and also


control the center those are the main


squares


uh that we need to control at least two


or three from those squares put your


pieces very close to there because they


have most capabilities when they're


around there so don't put your Knights


on the edge that's that's not a good


idea you can see the Rooks they're


always laid to the party but they should


be centralized


um learn design patterns are cut chunks


so we have this kind of let's say


patterns in chess so every chess player


will recognize the green Niche part of


this young Chateau we call it fanchetto


and everyone knows the middle teeth by


the one look at of either this is


vancetta we don't remember this bishop


G2 there is Castle there's neither free


this vancetta also the pink the pink


setup is called London setup everyone


knows so a chess player when he looks at


the chessboard we recognize in chunks


instead of really big small pieces so


that's a that's something that is worth


learning also there is even sourcing in


chess of course and use reuse release


even store


um yeah chest notation is basically even


sourcing so after during each game we


write the chess moves on real board or


if we play online it's automatically


there


it's even you can see it's even


um storing the time of the moves but the


real fun in chess is actually to meet


life with Magnus or others and uh you


can play in chess clubs in Poland there


is a website called Club you can go and


find Club in a club in your real world


and also you can play with me if you


want uh on chess.com thank you


foreign


hi everybody how are you doing this talk


is not about procrastination


and like yeah I procrastinated on this


talk and I didn't know what to call it


so I called it procrastination


um but yeah you know I'm procrastinating


even during this talk I'm talking about


what this talk is not about during the


five minutes so you know I have a


problem I need therapy and it's there's


a great opportunity to have like therapy


in front of um in front of I don't know


60 people it's great thank you for the


opportunity


um I'm not like if you think you


procrastinate you ain't seen nothing yet


I'm really good at it like I mean I put


the pro in procrastination right if you


do something a lot you get good that's


that's me and um yeah one of the things


that procrastinators do is um they they


avoid feeling bad about putting off


their actual work by doing something


that they kind of can justify is kind of


useful and one of those things that are


kind of useful is um oh yeah


procrastinators will take over the world


when they unite tomorrow


um that's me in 2018. uh yeah so one of


the things that I progressed that you


that I discovered was um when I was like


kind of trying to work on something and


not feel bad about not doing my actual


work was to set up some human friendly


um aliases shell aliases in my favorite


shell which is fish


um you will see you will see in a second


what I mean fish is a command line uh


shell it stands for friendly interactive


shell I really like it because unlike


any other shells I could actually script


in it I don't know it somehow clicked


for my brain uh bash scripts I find


horrible and absolutely unreadable fish


script I can read and write which is


great so like whatever whatever works


for you use it so


um you know git right sometimes you need


to make a new branch procrastinators do


that a lot because before I can start


work I first have to make a new Branch


right and then I think to myself get


switched there see come on I don't want


to type all that I need to make an alias


I need to make it faster and easier for


me to do so that's like my


procrastination Loop so I go to git


config and I add an alias NB for New


Branch so it's a mnemonic easy to


remember NB great now it's git NB my


Branch awesome life is great however


um I do want to type git space that's


four characters I wanted to just type


one single G and B get new Branch that's


it that's what I want to type that's why


I make a shell Alias uh technically in


fishes called shell abbreviation but


that's details I don't have time for the


details


um so yeah life is great right now now


it's not on not only a git Alias now


it's a shell Alias or shell abbreviation


in the case of fish now I type three


characters and I'm happy


now there's two problems with that one


is the list of aliases goes really long


and I don't remember them all but that's


fine because if I don't remember then I


don't use it and I don't need it and I


don't need to remember that's fine but


the real problem is um for some of them


I only had I only have like gigates the


git Alias set up like git P forgetful


for the other I have shell Alias set up


GP for gitball and now I don't remember


which one was it so obviously the


solution is why not both


so I wrote a little script that runs in


my shell initialization that just parses


my git config takes every git Alias


turns it into shell Alias so I can type


either of those things I can type git WC


for what changed it's a less little


known uh useful command in git uh or I


can type gwc it doesn't matter get what


changed


so life is good but what does this what


does this have anything to do with fish


like any any of this you could do in any


other shell you could do it in Z shell


in bash even if you're not cool and


still use bash sorry that was a joke


um so the problem is here


um I pair program a lot in my company we


have like a convention repair program on


many things and especially when I pair


program with you with the junior


developer with the or with a newbie or


if even


um show my screen to some non-technical


person if I type this if I type the


thing on the left git NB they're like


what are you doing what is this


um so in in fish what fish allows me to


do is this I type my abbreviation but


um it expands so as soon as I hit space


it expands it types it out for me it


types out the full command and the


command build can be arbitrary length of


course it types out the full command


like rebase abort rebase none whatever


and yeah


fish is love and this is the


um documentation for the fish


abbreviation command thank you very much


Happy procrastinating


[Applause]


all right everyone hello uh I promised


myself that I would do at least one


conference talk this year and it's


already September so I kind of have to


do it now uh so build your own and turn


on command line tools uh before I begin


uh hello this is me yes mihao and this


is my cat uh I'm working on help link my


card doesn't


um just to give you a brief overview of


help link uh we have like two full stack


developers six back-end developers two


Swan Junior and six front-end developers


and this will be a bit important for the


rest of the story uh and help link


actually runs in multiple countries and


each of those countries we are running a


separate application it's not


multi-tenant and for each of those


countries we actually run two


applications because we run the


client-side in the admin separately


um


and when we are running this code


locally when we're developing we used to


use vagrant but then we converted to


Docker and Docker compose for all the


great reasons that I'm not gonna go into


right now because I don't have time


um so vagrant was just a VMS it was easy


to just connect there to vagrant SSH and


then treat it like it's your local


machine so not a problem you can run all


your race commands but Docker is a bit


more complicated it has multiple


containers it have different syncing


strategies on Mac and on Linux you we


need to pass the country environment


flag because as mentioned all those


countries run differently


um and we also have like our test


container in a separate configuration


file so we are not starting them


automatically when we are starting


everything else


probably it can be simplified now it


could have it couldn't be simplified


when we're setting this up initially


um so because Docker is more complicated


we had a documentation with a bunch of


huge commands that you had to copy paste


or actually do anything and uh


you can probably guess that copy pasting


commands from Confluence is not a good


developer experience


so we created our own internal tool


called helpling tool Bolt


and for the version 1.0 we use we use


thaw and then we migrated to dry CLI


because it allows it allowed us to have


a slightly better


we could have made the commands read


better basically because it's uh easier


to do complicated stuff there compared


to so


and we are also using TTY toolkit we are


not using their uh command line uh


runner but we are using a lot of tools


from them like progress boss and


everything it's really great you should


really try this out


so the two was very simple at the


beginning we just copy pasted stuff from


the documentation and gave them nice


names but it started growing we started


extending it we started adding more


logic there we started adding some


automated fixes for the common problems


and it kind of grew pretty nicely this


is from the latest version I actually


run this made the screenshot like an


hour ago I guess and these are not all


commands because as you can see it also


has sub commands so we can do a lot of


stuff with this and we also have support


for just starting stuff and you can see


that there are some extra options that


you can do we can make it easier to run


a profiler we can run it with like a


production version I believe oh sorry


it's not here yet uh yeah but basically


we can like do a lot of nice stuff


and we also support front-end and our


front-end users both webpack and Expo so


we have to support both uh regular


JavaScript and also native so we also


have a lot of nice scripting to make


sure that all of that works properly


so before the hopelink tool belts uh it


was a massive pain in the ass to


actually work with that stuff like


manually copying those commands was


horrible front-end developers had no


idea how to actually run rails commands


so they needed constant help back-end


developers had no idea how to run


JavaScript commands so they needed


constant help as well


and after the tool belts like all the


commands now they have a nice


description there is a in built-in


documentation because dry uh CLI


actually uh like it


it makes it very easy to add


documentation to your command line tool


it actually tries to talk you into doing


that all the time uh also because of the


recovery of the most common issues we no


longer have to worry about front-end


developers not understanding what the


database migration is or backends


developers not understanding that they


need to install the node modules again


because there was some update and as a


bonus because we moved all the handling


and all this logic we were able to


actually run our end-to-end test as well


using a test rail server that is running


on the CI and it basically reuses 90 of


what we are already doing for the local


development and this way we can have our


end-to-end test hit the real API server


even with the front-end applications


so time recovered money saved Hotel I'm


not gonna do an advertisement here so


build your own internal command line


tools save your time save your team time


it's gonna be great


thank you all


[Applause]


hi I'm highly competitive person if you


are too and this is a talk for you so I


always wondered like whenever I do I


want to be there like the best in the


world or the top best so and here I want


to share some findings around uh how to


get the best in anything you do and here


is a little story like how to get into


the top six percent of the richest


person people in Poland actually it's


not so hard because the 44 of Polish


people according to the research do not


have any savings so if you have one


dollar of savings you are in the like


top 60 percent of the richest people so


only 35 percent of um of people in


Poland have like more than 10k of


dollars of savings so you know top 30


percent of the richest people in the


world most of you probably are or will


be uh after this talk


so only six percent of Polish around


have more than like uh 25k of savings so


just do it and you will be in the top


six or at least top 10 percent of the


richest people


so here are my findings can we apply


that


to other fields can I be the best in


Ruby or in top 10 top five percent in


Ruby just by applying such similar steps


simple steps and actually yes you have


so


um yeah whatever


first of all all you can read you can


read technical books


um in Poland average reading is like


less than one book per year so if you


are reading One technical book per year


yeah you are actually quite high already


and then if you can stay in the job like


for few years you will already beat


majority of Junior people like probably


50 of all developers have less than two


years of experience so just beat that


and you will be in like top 30 percent


of of the best people in the world in


Ruby and then


start teaching and this scares this is


hard but actually when you teach you can


you need to understand the topic well


you need to expose yourself to critique


you need to sometimes make a stage as I


do like right now without preparation


and then it will be really hard so


crossing your boundary is actually


pushes you way harder so this is my also


like one of the advice


then meet people smarter than you but


the meeting people smarter than you


usually are like you know they have


pretty expensive time so they will not


want to talk to you but if you have a


YouTube channel or a podcast or a Blog


and the story is a little bit different


so yeah I don't have the the image right


now


because something goes wrong but I


showed I heard that in the Jason Harding


show and that blew my mind because when


you have


a podcast actually people start reaching


out to you if they can be guests in your


podcast they are usually smarter than me


so I have opportunity to talk to them


and that blows my mind


then find a mentor


how many of you have mentally in Ruby


cool


so yeah


you're beating the competition here on


rostov and we are all in rostov so


attending the conferences is also a step


ahead like there are a lot of rubies in


Poland and there are not all of them on


um Ruby conferences and even if they are


not all of them have Mentor like


seriously so yeah


these are the steps I already talked


about this experience at the beginning


uh but yeah


that's my talk thank you very much


[Applause]


all right so this was prepared as a


response to a previous lightning talk so


not a lot of thought put into it like


have you ever wanted to write the game


but did not want to do is do it in rails


maybe


um


I did and uh I found the framework uh


for writing like roguelikes uh


so I decided to have a look at the


documentation and it all looks quite


nice uh well except there's one maybe


tiny little problem of that it's written


in kotlin


um so what can we do


uh turns out we can do a little trick


called


J Ruby and I'm gonna just show you I'm


just


file admittedly it's not very fast uh at


least especially at boot but yeah it


booted uh


the game is called Game Hunter and you


are hunting for games so you just have a


your character and you walk around the


cave and you are supposed to find this


this these blue gems here uh which is


not always easy because they are blocked


so you can you know a set of some bombs


uh


you can collect the uh the gems


sometimes when you destroy the the wall


the new jumps show up so it's just like


little very simple example I can even


show you that it has a box so when you


actually walk into the fire you're


supposed to die but you don't and


instead there's like a quite familiar


Ruby output so it's like it proves that


it's actually Ruby uh to to prove it


even more I can show you uh how the


files look like so it uses a concept of


entity component system so you have


components entities such systems and


some other stuff and also in lip we have


like uh


integration with with this kotlin uh


Slash Java libraries uh


so yeah as you can see by the way uh not


only Android test Randomness but I don't


test anything here uh maybe this will


come in the future and uh yeah so


apparently you have to have a QR code


now in your presentation so this is a


link to the repository you can clone it


play around with that uh sample request


if you want thank you


[Applause]