https://citconf.com/wiki/index.php?title=Special:NewPages&feed=atom&hidebots=1&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter=CitconWiki - New pages [en]2024-03-29T15:31:32ZFrom CitconWikiMediaWiki 1.35.11https://citconf.com/wiki/index.php?title=Deep_workDeep work2023-10-15T20:13:07Z<p>Twikstro: Created page with "'''Deep work''' Session based on the book [https://www.goodreads.com/book/show/25744928-deep-work Deep Work] by Cal Newport (also author of [https://www.goodreads.com/book/sh..."</p>
<hr />
<div>'''Deep work'''<br />
<br />
Session based on the book [https://www.goodreads.com/book/show/25744928-deep-work Deep Work] by Cal Newport (also author of [https://www.goodreads.com/book/show/40672036-digital-minimalism Digital Minimalism] and [https://www.goodreads.com/book/show/13525945-so-good-they-can-t-ignore-you So Good they Cant Ignore you])<br />
<br />
Deep work is about individual productivity, not about team/org productivity as such.<br />
<br />
[https://www.goodreads.com/book/show/1633.Getting_Things_Done?ref=nav_sb_ss_1_19 Getting Things] Done (GTD) by David Allen is for organising your work and is somewhat related.<br />
GTD: your head is good for having ideas, not for storing them<br />
<br />
Solving complicated problems e.g. by programming can require 20-30 min just for building a model in your head about the problem, before you start implementing. This is not something that fits into slots between meetings but requires longer chunks of uninterrupted time, to get deep in the work.<br />
<br />
The opposite of deep work is shallow work - work that can be completed without a deep focus, examples include reading/sending e-mail and similar administrative work.<br />
<br />
Aim for a high Deep Work to Shallow Work ratio.<br />
<br />
How to allow deep work to happen:<br />
* Work on one thing at the time (your most important task)<br />
* Get rid of all nonessential notifications<br />
* Read e-mails at set times only (e.g. after lunch when you are not at 100% focus)<br />
* Reduce amount of times spent in meetings<br />
** you can ask your manager how many % of your time he expects you to sit in meetings/calls on average<br />
* Bunch up meetings at the end of the working day when your focus is at the lowest<br />
<br />
There is a lot more to Deep Work and GTD which we did not have time to cover in the session</div>Twikstrohttps://citconf.com/wiki/index.php?title=Event_stormingEvent storming2023-10-14T14:44:14Z<p>Jtf: Move tdd content to correct page</p>
<hr />
<div>https://www.eventstorming.com/resources/<br />
<br />
https://techbeacon.com/app-dev-testing/introduction-event-storming-easy-way-achieve-domain-driven-design</div>Jtfhttps://citconf.com/wiki/index.php?title=St_Pauli_School_of_TDDSt Pauli School of TDD2023-10-14T14:04:56Z<p>Jtf: </p>
<hr />
<div>https://www.tddstpau.li/<br />
<br />
<blockquote><br />
Test-driven development is designed to provide regular feedback at intervals of minutes or even seconds as to whether the current software is free of errors. If too much coding is done between when the tests can be run, it will result in a slower development process due to larger issues when the tests are finally able to be run. We often notice that many developers are able to handle the first two or three TDD cycles smoothly, but the subsequent cycles are so slow that it can hardly be called test-driven development. We have therefore developed a new systematic approach that leads to continuous progress in short TDD cycles. Following the two well-known TDD approaches - "Chicago school" and "London school" - we have named this approach the "St. Pauli school of TDD".<br />
</blockquote><br />
<br />
I'm not able to edit the wiki pages still (there is some error when trying to confirm the email). So I'll post it here:<br />
<br />
Notes: Schools of TDD: St. Pauli<br />
<br />
* 1957 - John von Neumann actually invented TDD<br />
** Punch cards were programs and data as well, together with the expectation of what result it will produce. Then they took the expected card and the output card and looked if all the holes were in the same place.<br />
* 1989 - Beck re-discovered TDD.<br />
* In these 30/60 years, different school styles happened.<br />
* There are many styles (probably on the same scale as number of developers), but only a few are actually described:<br />
** Chicago/Detroit - Classicist style<br />
** London - Mockist style<br />
** The following were developed in the last 10 years<br />
*** Munich<br />
*** St. Pauli<br />
*** Portland (2 weeks old name of the school)<br />
*** Hamburg<br />
*** TDD as if You Meant it<br />
*** TCR: Test Commit Revert<br />
* Steven Collins lived in St. Pauli when he created the school<br />
* St. Pauli TDD is outside-in direction, first test case is simple, mocks are avoided, and subproblems are solved with stubs first, and then are replaced with TDD process recursively.<br />
** Start on API level<br />
** Obvious implementation<br />
** Fake it till you make it<br />
** Triangulate<br />
** Validation tests<br />
** Append-only tests<br />
<br />
Diamond Kata example:<br />
1. We start with the simplest example: start with an “A” case, instead of “C” case (like in case of a Munich school).<br />
it("should return A for A", () => {<br />
expect(diamond("A")).toEqual("A");<br />
});<br />
<br />
1. The implementation is simple:<br />
<br />
function diamond(input: string) {<br />
return "A";<br />
}<br />
<br />
1. Next simplest test would be the “B” diamond, the next smallest increment<br />
<br />
it("should return B Diamond for B", () => {<br />
expect(diamond("B")).toEqual(<br />
`.A.<br />
B.B<br />
.A.`<br />
);<br />
});<br />
<br />
1. St. Pauli uses a very simple approach of fake it till you make it to make it pass:<br />
<br />
function diamond(input: string) {<br />
if (input === "A") {<br />
return "A";<br />
} else {<br />
return `.A.<br />
B.B<br />
.A.`;<br />
}<br />
}<br />
<br />
Comment: “In London school, you would do the same thing and the same process in this Kata”<br />
Response: “In London school, you would already start thinking about what happens below that”<br />
<br />
Discussion: Diamond Kata may or may not be too simple for comparison of different TDD schools, because not every implementation will even require multiple interactions or mocks between objects or functions. Also, when teaching this school to not very experienced TDD practitioners, a more complex Kata may confuse them even more.<br />
<br />
1. We proceed with the next test, for “C”:<br />
<br />
it("should return C Diamond for C", () => {<br />
expect(diamond("C")).toEqual(<br />
`..A..<br />
.B.B.<br />
C...C<br />
.B.B.<br />
..A..`<br />
);<br />
});<br />
<br />
1. At this point we can see some pattern, or not. Let’s say that we don’t, so we make another fake implementation:<br />
<br />
function diamond(input: string) {<br />
switch (input) {<br />
case "A":<br />
return "A";<br />
case "B":<br />
return `.A.<br />
B.B<br />
.A.`;<br />
case "C":<br />
return `..A..<br />
.B.B.<br />
C...C<br />
.B.B.<br />
..A..`;<br />
}<br />
}<br />
<br />
1. As we start spotting some patterns, we can start performing refactoring. For example, the end lines can be improved:<br />
<br />
function diamond(input: string) {<br />
switch (input) {<br />
case "A":<br />
return “A”;<br />
case "B":<br />
return [".A.", "B.B", ".A."].join("\n");;<br />
case "C":<br />
return ["..A..", ".B.B.", "C...C", ".B.B.", "..A.."].join("\n");<br />
}<br />
}<br />
<br />
1. Another pattern that we observe is that every diamond has a “middle line”. So we can extract a function that does it. We implement it first via recursive TDD process:<br />
<br />
describe("middleLine", () => {<br />
it("should return middle line for B", () => {<br />
expect(middleLine("B")).toEqual("B.B");<br />
});<br />
});<br />
<br />
1. And, of course, we implement it simply:<br />
<br />
function middleLine(input: string) {<br />
return "B.B";<br />
}<br />
<br />
1. Another test for C middle line:<br />
<br />
it("should return middle line for C", () => {<br />
expect(middleLine("C")).toEqual("C...C");<br />
});<br />
<br />
1. Implementation<br />
<br />
function middleLine(input: string) {<br />
switch (input) {<br />
case "B":<br />
return "B.B";<br />
case "C":<br />
return "C...C";<br />
}<br />
}<br />
<br />
1. Replace the middle lines in the original function<br />
<br />
function diamond(input: string) {<br />
switch (input) {<br />
case "A":<br />
return ["A"].join("\n");<br />
case "B":<br />
return [".A.", middleLine("B"), ".A."].join("\n");<br />
;<br />
case "C":<br />
return ["..A..", ".B.B.", middleLine("C"), ".B.B.", "..A.."].join("\n");<br />
}<br />
}<br />
<br />
1. Extract the concept of “letter” in all functionality<br />
<br />
function diamond(letter: string) {<br />
switch (letter) {<br />
case "A":<br />
return ["A"].join("\n");<br />
case "B":<br />
return [".A.", middleLine(letter), ".A."].join("\n");<br />
;<br />
case "C":<br />
return ["..A..", ".B.B.", middleLine(letter), ".B.B.", "..A.."].join("\n");<br />
}<br />
}<br />
<br />
function middleLine(letter: string) {<br />
switch (letter) {<br />
case "B":<br />
return ${letter}.${letter};<br />
case "C":<br />
return ${letter}...${letter};<br />
}<br />
}<br />
<br />
1. Another pattern we can observe is number of dots generated in the middle line. Here, the function is so simple, that we can use obvious implementation pattern and testing:<br />
<br />
describe("dots", () => {<br />
it("should generate the number of dots", () => {<br />
expect(dots(0)).toEqual("");<br />
expect(dots(1)).toEqual(".");<br />
expect(dots(2)).toEqual("..");<br />
expect(dots(3)).toEqual("...");<br />
});<br />
});<br />
<br />
function dots(number: number) {<br />
return ".".repeat(number);<br />
}<br />
<br />
1. Replace the number of dots accordingly:<br />
<br />
function middleLine(letter: string) {<br />
switch (letter) {<br />
case "B":<br />
return ${letter}${dots(1)}${letter};<br />
case "C":<br />
return ${letter}${dots(3)}${letter};<br />
}<br />
}<br />
<br />
1. You keep finding the patterns and refactoring them, in multiple iterations.<br />
<br />
1. At the end, when you believe that you’re done, you add a validation test (you do this at every level of abstraction, going upwards.<br />
<br />
Discussion: This is a way that allows to go with very very tiny steps (that can be used for complex problems where the trade-off is positive of going slower, with the smallest steps).<br />
<br />
Discussion: When there are interactions with other dependencies need to be involved, since we want to avoid any kind of test double, then we would have to approach it with “imperative shell, functional core”.</div>Jtfhttps://citconf.com/wiki/index.php?title=Career_path_in_the_age_of_AICareer path in the age of AI2023-10-14T13:13:36Z<p>PaulJulius: </p>
<hr />
<div>AI-generated summary<br />
----<br />
In the CITCON 2023 Berlin session focused on career paths in the Age of AI, professionals discussed the increasing integration of AI tools like ChatGPT and GitHub's CoPilot in various job roles, from coding assistance to improving writing quality. While these tools boost efficiency, reduce cognitive load, and enhance content, concerns arise regarding generic outputs, context understanding, and data security, especially in sensitive sectors. Unique applications in multimedia production and content verification highlight AI's expansive reach. As the future unfolds, linguistic AI capabilities will grow in significance, possibly rendering traditional movie dubbing redundant.<br />
----<br />
<br />
Anton Fredrick is changing jobs<br />
<br />
What does a career path look like in the Age of AI.<br />
<br />
Where are you in your career path now?<br />
How has it changed because of AI in the last 3 years?<br />
<br />
'''Respondent 1:'''<br />
Lead Engineer<br />
It hasn't changed much.<br />
I use ChatGPT (paid version) to better organize my writing, but sometimes it turns out to be very generic.<br />
"I ask ChatGPT, 'How does this sound to you?'"<br />
I use it for coding. Like creating a server on Node.js<br />
Reduces my "cognitive load".<br />
<br />
Respondent 2:<br />
QA Engineer<br />
GitHub CoPilot helps me a lot<br />
I don't have to type as much<br />
$10/month<br />
Does good naming for variables<br />
Using it for half a year<br />
As an independent contractor, it has not resulted in "raise".<br />
Algoria for sorting products on the website.<br />
More and more services out there.<br />
You have to trust the services you are paying form<br />
<br />
'''Respondent 3:'''<br />
12 yrs Test Automation to Engineering Manager<br />
AI hasn't changed much<br />
ChatGPT helps to improve the quality of User Stories<br />
I use a prompt and then moderate the output<br />
My team uses CoPilot<br />
All use ChatGPT for 360 Reviews, and the quality of the reviews is "different". ChatGPT generates some randomness. But the human-written reviews don't follow any "rules". It does NOT reduce the amount of time to write a "quality" review<br />
<br />
'''Respondent 4:'''<br />
Ending Stage (Almost retired) QA Engineer, Test Automation<br />
AI suits me for getting answers that I used to get from Google. It's much faster because ChatGPT gives me the solution directly.<br />
Workflow is the same. Team doesn't use AI much. They are in the "discovery" phase.<br />
<br />
'''Respondent 5:'''<br />
QA Engineer, Coaching the last few years<br />
CoPilot being used on the teams much more. Instead of "pairing", 1 engineer + copilot<br />
Using ChatGPT to analyze conversations. Approach difficult conversations from a different angle. Try this, try that.<br />
8 years ago, we were talking about the "benefits of pair programming"<br />
The AI tools don't understand the "context"<br />
<br />
'''Respondent 6:'''<br />
Team Lead on multiple teams, and programs for several clients<br />
ChatGPT to code, migrate SQL to mySQL<br />
Using it to write long-form text based off a few pointers.<br />
My teams are not using AI at all.<br />
Traditional BI teams<br />
<br />
'''As an aside:'''<br />
Are the customers comfortable sending all that data to OpenAI servers?<br />
Some companies don't allow Financial companies without specific approval.<br />
Circumventing the rules could result in fines.<br />
How does this differ from using something like "PrettyJSON"?<br />
Anonymize the data.<br />
For example, if you could put it on StackOverflow.<br />
ChatGPT can help translating text, especially culturally appropriate.<br />
Ask ChatGPT to create a great prompt, like for Midjourney. Dall-E. Etc.<br />
ATS system scans the resume. There are tools that will create a perfect resume for you.<br />
<br />
'''Respondent 7:'''<br />
Student<br />
Every essay is now made by ChatGPT. But ChatGPT has a function now to check to see if it produced the text.<br />
Remix tools for podcasts and videos.<br />
PremierePro can produce scripts.<br />
AdobeVoice (free) will remove room echo, to make it sound like you have a quiet room and great mic.<br />
Asks ChatGPT, "Is this good storytelling?"<br />
<br />
'''Respondent 8:'''<br />
QA Manager<br />
Asking ChatGPT, "What are the most important DevOps metrics?"<br />
Make my text more formal. Less formal.<br />
My wife wrote a book and needed a cover, it was obvious that artists were generating artwork.<br />
<br />
'''Respondent 9:'''<br />
Consultant, DevOps and Test Automation<br />
Some experience with CoPilot<br />
Managers are reducing team size because an engineer with CoPilot is so productive.<br />
Throwing away resumes that are AI-generated<br />
<br />
'''Respondent 10:'''<br />
Consultant, DevOps<br />
ChatGPT to help me write technical documentation, I use it conversationally. I use it as an assistant.<br />
And BoyfriendGPT<br />
<br />
'''Respondent 11:'''<br />
DevOps Team Lead<br />
Not allowed to use ChatGPT for public documentation<br />
Some hardware producers are building AI-specific equipment<br />
<br />
<br />
'''In the Future:'''<br />
* Linguistic capabilities are going to become more important<br />
* Dubbing movies into other languages will be gone.<br />
*</div>PaulJuliushttps://citconf.com/wiki/index.php?title=OWASP_juice_shopOWASP juice shop2023-10-14T12:24:54Z<p>Pascaldufour: initial page</p>
<hr />
<div>Used during the workshop: <br />
https://owasp.org/www-project-juice-shop/<br />
https://hub.docker.com/r/bkimminich/juice-shop#docker-container</div>Pascaldufourhttps://citconf.com/wiki/index.php?title=Is_agile_completely_obsolete%3FIs agile completely obsolete?2023-10-14T12:21:23Z<p>Pascaldufour: Created page with " Talk mentioned: Jurgen de Smet: How organisations go nuts https://www.youtube.com/watch?v=aOcUV3_K3G4"</p>
<hr />
<div><br />
Talk mentioned: <br />
Jurgen de Smet: How organisations go nuts https://www.youtube.com/watch?v=aOcUV3_K3G4</div>Pascaldufourhttps://citconf.com/wiki/index.php?title=Life_outside_workLife outside work2023-10-14T12:08:27Z<p>Jtf: </p>
<hr />
<div>Book: The Healthy Programmer: https://healthyprog.com/<br />
<br />
Book: Younger Next Year: https://www.youngernextyear.com/<br />
<br />
Book: Better than Before: https://gretchenrubin.com/books/better-than-before/<br />
<br />
Healthspan vs lifespan : longevity = f (lifespan, healthspan) : https://peterattiamd.com/move-defines-live/<br />
<br />
Gratitude journaling: https://tinybuddha.com/blog/turn-pain-to-joy-11-tips-for-a-powerful-gratitude-journal/<br />
<br />
Book: Die With Zero: https://www.diewithzerobook.com/welcome</div>Jtfhttps://citconf.com/wiki/index.php?title=How_to_learn_from_frustrationHow to learn from frustration2023-10-14T10:51:06Z<p>Jtf: Created page with "https://agileconversations.com/ Conversational Transformation talk: https://www.youtube.com/watch?v=RMT_Tqzf_vc https://infed.org/mobi/chris-argyris-theories-of-action-doubl..."</p>
<hr />
<div>https://agileconversations.com/<br />
<br />
Conversational Transformation talk: https://www.youtube.com/watch?v=RMT_Tqzf_vc<br />
<br />
https://infed.org/mobi/chris-argyris-theories-of-action-double-loop-learning-and-organizational-learning/<br />
<br />
https://hbr.org/1986/09/skilled-incompetence</div>Jtfhttps://citconf.com/wiki/index.php?title=Pros_and_cons_of_radical_candorPros and cons of radical candor2023-10-14T09:00:57Z<p>PaulJulius: </p>
<hr />
<div>https://en.wikipedia.org/wiki/Radical_Candor<br />
<br />
<br />
Executive Summary generated by some AI<br />
----<br />
At the CITCON Berlin 2023 session, attendees discussed Kim Scott's concept of "Radical Candor," a feedback mechanism plotted on a matrix with axes ranging from "Care Personally" to "Don't give an F*+K" and from "Silence" to "Challenge Directly." While the book has been recognized for its innovative approach, criticisms included its oversimplified two-dimensional framework, excessive focus on relentless growth, and the potential for overwhelming constant feedback. Two key insights were shared: specific negative feedback may be more desirable due to its precision, and feedback methods should consider personal circumstances, as exemplified by a team member with undisclosed health issues. Comparisons were drawn to "Positive Psychology," emphasizing positive growth and the importance of "Caring Personally" in feedback, especially in startup environments. The concept of "Radical Candor" risks becoming a misapplied buzzword, necessitating a 'debuzzwordification' process. The Cynefin framework was introduced, suggesting burnout might stem from the "Complex" and "Chaotic" quadrants, making positive feedback challenging. The consensus was that while Radical Candor offers one method, there's room for other feedback strategies, particularly "Specific Positive Feedback."<br />
----<br />
<br />
<br />
Book: https://www.thalia.de/shop/home/artikeldetails/A1056068630?ProvID=11000533&gclid=CjwKCAjw-KipBhBtEiwAWjgwrNsCeXQ5az54QXNLor0OekK14FL5HOb70XDKbCtO88YV7YrYufmmCRoCk-oQAvD_BwE<br />
<br />
Matrix: https://www.radicalcandor.com/wp-content/uploads/2019/04/2x2.png<br />
<br />
<br />
Kim Scott writing on Medium: https://kimmalonescott.medium.com/<br />
<br />
Two Axes<br />
Care Personally <-> Don't give an F*+K<br />
Silence <-> Challenge Directly<br />
<br />
Criticisms of the Book<br />
* Too two-dimensional<br />
* The book focuses too much on growth, growth, growth<br />
* Forces people to give feedback, but can be too relentless<br />
<br />
If the feedback is constant and always "radical," it could become overwhelming.<br />
<br />
Should we ask permission before we give feedback?<br />
<br />
Managers "have" to give feedback, usually reinforced by forced company processes. Like annual reviews, for example.<br />
<br />
Compare this to the feedback sandwich. <br />
Good stuff, growth area, good stuff.<br />
<br />
Strengthen the strengths and weaken the weaknesses.<br />
<br />
People seem to NOT seek out radical candor on their strengths.<br />
<br />
Need to incentivize the "strengthening your strengths".<br />
<br />
Try starting toward the middle of the matrix and working up and to the right.<br />
<br />
Two experiences:<br />
1. During an interview, we asked a candidate about their preferred feedback culture. The candidate said, "I only want negative feedback." Perhaps this is because negative feedback tends to be specific, whereas positive feedback can be quite general, e.g. "good job". Ergo, feedback should be specific.<br />
<br />
2. Feedback given to a team member that would have been fired had they not been given the feedback. The team member was not receptive initially. After some time, we realized that the team member had health issues. Had we known, we might have approached the feedback differently.<br />
<br />
After Radical Candor sessions, the person coming out of the room looked completely drained.<br />
<br />
Compare this to "Positive Psychology". A type of psychology that focuses on the positive growth zone for people, instead of the pathological zone of diagnoses.<br />
<br />
In the startup stage, we frequently get to know people personally, such that Caring Personally can be easier.<br />
<br />
One should probably err on the side high on the "Care Personally" axis, versus the "Challenge Directly" axis.<br />
<br />
Trust is important.<br />
<br />
There's a ton of pressure within startups because people are being paid in shares.<br />
<br />
At big companies, it can be easy to just be a "cog in the machine" or an "employee number" and end of the lower left quadrant.<br />
<br />
"Radical Candor" can become an easily misimplemented and a buzzword.<br />
<br />
Debuzzwordification (credited to Mehmet) means eliminating the buzzword from our vocabulary and talking instead about the actions you want.<br />
<br />
Burnout happens more often in software than in other fields, like Avionics for example. In Avionics, there is a well-established pathway. Clear expectations. There's no challenging that pathway.<br />
<br />
Consider the Cynefin framework. https://upload.wikimedia.org/wikipedia/commons/a/ab/Cynefin_framework_2022.jpg<br />
Perhaps "burnout" comes from the "Complex" and "Chaotic" sectors.<br />
<br />
Positive feedback is hard in the "Chaotic" quadrant.<br />
<br />
There's a lot of potential to find other ways of approaching feedback, other than Radical Candor. Especially "Positive Feedback".<br />
<br />
This is a nuanced topic. Expect to have discussions about "Radical Candor" as you try to implement this on the team.<br />
<br />
Aha moment in session was "Specific Positive feedback is better than Radical Candor".</div>Jtfhttps://citconf.com/wiki/index.php?title=AI_for_realAI for real2023-10-14T08:59:32Z<p>Jtf: Created page with "https://openai.com/blog/new-and-improved-embedding-model https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/"</p>
<hr />
<div>https://openai.com/blog/new-and-improved-embedding-model<br />
<br />
https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/</div>Jtfhttps://citconf.com/wiki/index.php?title=CITCONEurope2023SessionsCITCONEurope2023Sessions2023-10-13T14:27:50Z<p>Jtf: /* Table View */ added session 5</p>
<hr />
<div><br />
Picture of schedule: https://x.com/citcon/status/1713139323829203441?s=61&t=lO_jjqKto9NYyWJNOvJhCw<br />
<br />
== Table View ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Room name<br />
! 10:00<br />
! 11:15<br />
! 2:00<br />
! 3:15<br />
! 4:30<br />
|-<br />
| Event Space<br />
| [[AI for real]]<br />
| [[How to learn from frustration]]<br />
| [[Five things I do when interviewing technical candidates]]<br />
| [[Deep work]]<br />
| [[Using ChatGPT to write anything]]<br />
|-<br />
| Bilbao<br />
| [[Pros and cons of radical candor]]<br />
| [[Tips for shopping company or team culture]]<br />
| [[How to lead a team with matrix reporting]]<br />
| [[Career path in the age of AI]]<br />
| [[Systemic improvement]]<br />
|-<br />
| Casablanca<br />
| [[Testing a full Linux distribution completely automated]]<br />
| [[OWASP juice shop]]<br />
| [[Is agile completely obsolete?]]<br />
| [[St Pauli School of TDD]]<br />
| [[How to measure test coverage?]]<br />
|-<br />
| Jaffa<br />
| [[small things we should have in our projects but we don’t]]<br />
| [[Seeking deterministic]]<br />
| [[Remote work]]<br />
| [[Engineering stories from building NHS COVID-19 app]]<br />
| [[How to work with stubborn developers]]<br />
|-<br />
| Tallinn<br />
| (empty)<br />
| [[What makes good services good?]]<br />
| [[Life outside work]]<br />
| (empty)<br />
| [[Event storming]]<br />
|}<br />
<br />
Lunch sessions: chess, quality of wine, why most companies don’t do CI, air gapped environment</div>Jtfhttps://citconf.com/wiki/index.php?title=Tomas_VeskrnaTomas Veskrna2023-10-12T18:16:01Z<p>PaulJulius: Created page with "https://www.facebook.com/tomas.veskrna.7"</p>
<hr />
<div>https://www.facebook.com/tomas.veskrna.7</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Snehadeepa_SnehanadhanSnehadeepa Snehanadhan2023-10-12T17:46:48Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/snehashobin/"</p>
<hr />
<div>https://www.linkedin.com/in/snehashobin/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Pavan_AssuriPavan Assuri2023-10-12T17:46:06Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/pavanassuri/"</p>
<hr />
<div>https://www.linkedin.com/in/pavanassuri/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Patrick_WileyPatrick Wiley2023-10-12T17:44:15Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/wileypatrick/"</p>
<hr />
<div>https://www.linkedin.com/in/wileypatrick/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Muhammad_AhsanMuhammad Ahsan2023-10-12T17:34:01Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/muhammad-ahsan-2b691522/"</p>
<hr />
<div>https://www.linkedin.com/in/muhammad-ahsan-2b691522/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Dragan_StepanovicDragan Stepanovic2023-10-12T17:28:38Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/dstepanovic/"</p>
<hr />
<div>https://www.linkedin.com/in/dstepanovic/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Daniel_BartholomaeDaniel Bartholomae2023-10-12T17:26:28Z<p>PaulJulius: Created page with "https://linkedin.com/in/bartholomae"</p>
<hr />
<div>https://linkedin.com/in/bartholomae</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Christoph_JaueraChristoph Jauera2023-10-12T17:23:47Z<p>PaulJulius: Created page with "https://phabricator.wikimedia.org/p/WMDE-Fisch/"</p>
<hr />
<div>https://phabricator.wikimedia.org/p/WMDE-Fisch/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Catalin_DruleaCatalin Drulea2023-10-12T17:22:54Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/catalin-drulea-6073a4156/"</p>
<hr />
<div>https://www.linkedin.com/in/catalin-drulea-6073a4156/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Ashwinkumar_YakkundimathAshwinkumar Yakkundimath2023-10-12T17:19:43Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/ashwincy/"</p>
<hr />
<div>https://www.linkedin.com/in/ashwincy/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Ashutosh_MishraAshutosh Mishra2023-10-12T17:19:07Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/Connectwithashutoshm/"</p>
<hr />
<div>https://www.linkedin.com/in/Connectwithashutoshm/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Alice_ValentiniAlice Valentini2023-10-12T17:18:04Z<p>PaulJulius: Created page with "https://www.linkedin.com/in/alice-valentini/"</p>
<hr />
<div>https://www.linkedin.com/in/alice-valentini/</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Akash_SawantAkash Sawant2023-10-12T17:17:17Z<p>PaulJulius: Created page with "https://twitter.com/sakash321"</p>
<hr />
<div>https://twitter.com/sakash321</div>PaulJuliushttps://citconf.com/wiki/index.php?title=Segun_OworuSegun Oworu2023-09-06T15:00:11Z<p>Jtf: adding urls</p>
<hr />
<div>https://www.linkedin.com/in/segunoworu/<br />
<br />
https://twitter.com/segunoworu</div>Jtfhttps://citconf.com/wiki/index.php?title=James_PerryJames Perry2023-09-04T19:00:03Z<p>Jtf: add url</p>
<hr />
<div>http://linkedin.com/in/jamesperry785</div>Jtfhttps://citconf.com/wiki/index.php?title=Nina_%C5%A0tefekov%C3%A1Nina Štefeková2023-09-04T18:59:37Z<p>Jtf: add url</p>
<hr />
<div>https://www.instagram.com/nstefek</div>Jtfhttps://citconf.com/wiki/index.php?title=Roland_EschenburgRoland Eschenburg2023-09-04T18:54:00Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/roland-eschenburg-2600072a/</div>Jtfhttps://citconf.com/wiki/index.php?title=Shijesh_KoodoanShijesh Koodoan2023-09-04T18:52:00Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/shijesh-koodoan/</div>Jtfhttps://citconf.com/wiki/index.php?title=Manfred_Linzner-ScherfManfred Linzner-Scherf2023-09-04T18:51:26Z<p>Jtf: add Mastodon</p>
<hr />
<div>@mlinzner@mastodon.nl</div>Jtfhttps://citconf.com/wiki/index.php?title=Simon_G%C3%B6rtzenSimon Görtzen2023-09-04T18:51:04Z<p>Jtf: add Mastodon</p>
<hr />
<div>@goertzen@mastodontech.de</div>Jtfhttps://citconf.com/wiki/index.php?title=Oleksii_FedorovOleksii Fedorov2023-09-04T18:50:16Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/alex-the-tdd-fellow/</div>Jtfhttps://citconf.com/wiki/index.php?title=Yashika_JayasingheYashika Jayasinghe2023-09-04T18:47:48Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/yashika/</div>Jtfhttps://citconf.com/wiki/index.php?title=Maik_NogensMaik Nogens2023-09-04T18:46:29Z<p>Jtf: add Mastodon</p>
<hr />
<div>Maiknog@sw-development-is.social</div>Jtfhttps://citconf.com/wiki/index.php?title=Dmitry_KislerDmitry Kisler2023-09-04T18:45:21Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/dkisler/</div>Jtfhttps://citconf.com/wiki/index.php?title=Desmond_DelissenDesmond Delissen2023-09-04T18:42:59Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/desmond-delissen-34506921/</div>Jtfhttps://citconf.com/wiki/index.php?title=Shujaat_Ali_ChandShujaat Ali Chand2023-09-04T18:41:52Z<p>Jtf: add urls</p>
<hr />
<div>https://www.linkedin.com/in/shujaat-ali-chand/<br />
<br />
https://www.facebook.com/shujaat.chand/</div>Jtfhttps://citconf.com/wiki/index.php?title=Muhammad_SufyianMuhammad Sufyian2023-09-04T18:38:54Z<p>Jtf: add twitter link</p>
<hr />
<div>https://www.linkedin.com/in/syedmuhammadsufyian/<br />
<br />
https://twitter.com/MuhammadSufyian</div>Jtfhttps://citconf.com/wiki/index.php?title=Yung-Yu_ChenYung-Yu Chen2023-09-04T18:38:26Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/yung-yu-chen/</div>Jtfhttps://citconf.com/wiki/index.php?title=Radomir_SebekRadomir Sebek2023-09-04T18:36:35Z<p>Jtf: add url</p>
<hr />
<div>https://de.linkedin.com/in/radomirsebek</div>Jtfhttps://citconf.com/wiki/index.php?title=Anton_FredrickAnton Fredrick2023-09-04T18:35:43Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/antonbf/</div>Jtfhttps://citconf.com/wiki/index.php?title=Sherry_KhanSherry Khan2023-09-04T18:34:47Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/shehryarkhan</div>Jtfhttps://citconf.com/wiki/index.php?title=Lukas_LowingerLukas Lowinger2023-09-04T18:33:58Z<p>Jtf: add url</p>
<hr />
<div>https://www.linkedin.com/in/lukáš-löwinger-25162aaa/</div>Jtfhttps://citconf.com/wiki/index.php?title=Du%C5%A1an_%C3%9Aradn%C3%ADkDušan Úradník2023-09-04T18:31:25Z<p>Jtf: add url</p>
<hr />
<div>https://www.instagram.com/dusantakyuradnik</div>Jtfhttps://citconf.com/wiki/index.php?title=Daniel_Olear%C4%8DinDaniel Olearčin2023-09-04T18:30:30Z<p>Jtf: add url</p>
<hr />
<div>https://www.instagram.com/dano_olko</div>Jtfhttps://citconf.com/wiki/index.php?title=Branislav_Smol%C3%AD%C4%8DekBranislav Smolíček2023-09-04T18:27:20Z<p>Jtf: add linkedin url</p>
<hr />
<div>https://www.linkedin.com/in/smolicek/</div>Jtfhttps://citconf.com/wiki/index.php?title=Malte-Levin_RieweMalte-Levin Riewe2023-09-04T18:25:42Z<p>Jtf: add linked in</p>
<hr />
<div>https://www.linkedin.com/in/malte-levin-riewe-3a729922a/</div>Jtfhttps://citconf.com/wiki/index.php?title=Simon_SchrijverSimon Schrijver2023-09-04T18:24:03Z<p>Jtf: add linkedin url</p>
<hr />
<div>https://twitter.com/SimonSaysNoMore<br />
<br />
https://www.linkedin.com/in/SimonSaysNoMore/</div>Jtfhttps://citconf.com/wiki/index.php?title=Juri_SolovjovJuri Solovjov2023-09-04T18:21:32Z<p>Jtf: add instagram link</p>
<hr />
<div>https://www.instagram.com/jura.s08</div>Jtfhttps://citconf.com/wiki/index.php?title=Mustafa_ElbeheryMustafa Elbehery2023-09-04T18:18:23Z<p>Jtf: fix typo</p>
<hr />
<div>https://github.com/elbehery</div>Jtfhttps://citconf.com/wiki/index.php?title=Julia_ParanichJulia Paranich2023-09-04T18:16:36Z<p>Jtf: add twitter link</p>
<hr />
<div>https://twitter.com/juul</div>Jtf