<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12402025</id><updated>2026-09-15T23:46:44.245+00:00</updated><category term="Personal"/><category term="Technology"/><category term="Travel"/><category term="Reading"/><category term="Business"/><category term="Writing"/><category term="Hong Kong"/><category term="Java"/><category term="Movie"/><category term="Music"/><category term="Manchester"/><category term="Parenting"/><category term="Python"/><category term="Fiction"/><category term="Fun"/><category term="Japanese"/><category term="AWS"/><category term="Architecture"/><category term="GenAI"/><category term="Poem"/><category term="React JS"/><category term="STEM"/><category term="Spring Boot"/><category term="FinTech"/><category term="Github"/><category term="HKUST"/><category term="JavaFX"/><category term="Kuala Lumpur"/><category term="Retail"/><category term="Abingdon"/><category term="Amsterdam"/><category term="Azure"/><category term="Career"/><category term="Competition"/><category term="Docker"/><category term="Game"/><category term="Gradle"/><category term="Handball"/><category term="Javascript"/><category term="Jupyter"/><category term="Loyalty"/><category term="Macau"/><category term="Maths"/><category term="Microbit"/><category term="New York"/><category term="OmniChannel"/><category term="Scratch"/><category term="Shanghai"/><category term="Shenzhen"/><category term="AR"/><category term="Angular"/><category term="Berlin"/><category term="Blockchain"/><category term="Central Rat Race"/><category term="Cheshire"/><category term="Christianity"/><category term="Cyber Security"/><category term="Data Science"/><category term="Database"/><category term="Deep Learning"/><category term="Digitalization"/><category term="Driving"/><category term="EduBlocks"/><category term="Ethical Hacking"/><category term="Gamification"/><category term="GoogleCloud"/><category term="HCMC"/><category term="Hashcode"/><category term="History"/><category term="Literature"/><category term="London"/><category term="Macclesfield"/><category term="Manila"/><category term="Microcraft"/><category term="Microservices"/><category term="National Trust"/><category term="New Retail"/><category term="NoSQL"/><category term="OOD"/><category term="PC"/><category term="Phaser"/><category term="Phuket"/><category term="Probability"/><category term="QA"/><category term="RDMS"/><category term="Raspberry Pi"/><category term="Serverless"/><category term="Singapore"/><category term="Statistics"/><category term="Stock"/><category term="Streaming"/><category term="Sun Moon Lake"/><category term="Swing"/><category term="Taichung"/><category term="Taipei"/><category term="Thailand"/><category term="US"/><category term="UX"/><category term="Webpack"/><category term="Zhaoqing"/><category term="jQuery"/><category term="van Gogh"/><title type='text'>TEE: Teki Editorial Everywhere</title><subtitle type='html'>Insightful, In-depth &amp; Interactive</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>322</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12402025.post-5029727119357096715</id><published>2026-09-12T21:14:00.000+00:00</published><updated>2026-09-13T21:48:46.900+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Christianity"/><category scheme="http://www.blogger.com/atom/ns#" term="Digitalization"/><title type='text'>[Event] John Wesley didn&#39;t have Wi-Fi</title><content type='html'>&lt;p&gt;I had the opportunity to attend a workshop in the Methodist Church Synod of North West England, exploring how we can engage people&amp;nbsp;in an increasingly digital world with the church.&lt;/p&gt;&lt;p&gt;What inspired me was how many of the principles discussed are not unique to churches; they are equally relevant to online marketing and digital engagement in general. Thanks to &lt;b&gt;&lt;u&gt;Samuel Rimmer&lt;/u&gt;&lt;/b&gt; for hosting the workshop and getting us thinking about how we connect with people in a digital world.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The key ideas I took away: The website and social media are often the first things a person encounters before they ever visit a church. They should make the church &lt;b&gt;easy to discover, easy to understand, and easy to approach.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj7RJ2E9rpdsP-O2u2BOnldAxU6tlYNcgnOJPUvRdoKfdC-o8U5WjfE80nULKfIv-G5Daj9m53M8051v3Xv0hsnFOPBHlsX-NyTBKBXl_db5HJO2C3yGJlpmahwtdWmQAaE_o3g_XuR7xU9E6rWE5LKY_tyxyHvjuaHJt55AKZ-P_An-vN8Y9EP&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj7RJ2E9rpdsP-O2u2BOnldAxU6tlYNcgnOJPUvRdoKfdC-o8U5WjfE80nULKfIv-G5Daj9m53M8051v3Xv0hsnFOPBHlsX-NyTBKBXl_db5HJO2C3yGJlpmahwtdWmQAaE_o3g_XuR7xU9E6rWE5LKY_tyxyHvjuaHJt55AKZ-P_An-vN8Y9EP&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;h1 dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Website — The Front Door&lt;/span&gt;&lt;/h1&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 14pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Is your website newcomer-friendly?&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;The website is often the &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;first impression of the church&lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;A newcomer should be able to quickly answer: &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;When? Where? What should I expect?&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Ask yourself:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Can I find the service time within 30 seconds?&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Can I immediately find the address, email and phone number?&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Do I know what to expect on my first visit?&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Can I see what the church community is like?&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Does the website look active and up to date?&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 14pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 14pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Keep it simple&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;The Jam Experiment illustrates a useful principle: &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Too many choices can become overwhelming.&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Do and Don&#39;t&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span id=&quot;docs-internal-guid-293a7817-7fff-d2f8-e383-ade7e1fde411&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: none; border-style: none; border-width: medium; border: none; table-layout: fixed; width: 451.276pt;&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Do&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Don’t&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Clear Information Immediately&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Welcoming Photography&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Clear Invitation&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Evidence of Activity&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Mobile-Friendly Design&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Simple Navigation&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Out of Date Content&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Too Much Information&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Poor Quality Images&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Church Jargon&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Long Blocks of Text&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; font-variant: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Missing Contact Information&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 16pt; font-weight: 700; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 16pt; font-weight: 700; white-space: pre-wrap;&quot;&gt;Good Examples&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;a href=&quot;https://sojournsterlingheights.com/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;https://sojournsterlingheights.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;a href=&quot;https://www.remnantuk.org/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;https://www.remnantuk.org/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;a href=&quot;https://www.bramhallmethodists.org.uk/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;https://www.bramhallmethodists.org.uk/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;ol start=&quot;2&quot; style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;h1 dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Social Media Platform&lt;/span&gt;&lt;/h1&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 14pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Don&#39;t build another notice board&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Avoid using social media mainly for:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Event announcements&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Weekly notices&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Repeated advertisements&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Links to information elsewhere&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Announcements have a place, but they should not be the whole strategy.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 14pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Show people, not just programmes&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;People want to see:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;People&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Relationships&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Community&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Real moments&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Show photographs and videos of people talking, serving, worshipping, eating together, helping others and having fun.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Tell a story: Stories create connection. Announcements provide information.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span id=&quot;docs-internal-guid-0f01cd1e-7fff-3c3b-e897-4a69764433f0&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 13pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Use richer content: &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Link &amp;lt; Text &amp;lt; Photo &amp;lt; Video &amp;lt; Live&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 14pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Algorithm rewards conversations more than announcements&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Social media is &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;social&lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Don&#39;t just post and leave. When people comment: &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Reply. Ask questions. Continue the conversation.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Timing&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Don&#39;t post simply because an idea has just occurred to you. Think about &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;when your audience is online&lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Potential opportunities:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Early morning:&lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; breakfast / before work or school&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Early evening:&lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; commuting / after work or school&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;You don&#39;t need to be online at that moment. You can &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;schedule the post in advance.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Start small: &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;15 minutes. Once a week. Every week.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Create something simple. Post it consistently. See what people respond to. Improve gradually.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 16pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The 80/20 Rule&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span id=&quot;docs-internal-guid-da684570-7fff-d142-e673-641eb201643b&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: none; border-style: none; border-width: medium; border: none; table-layout: fixed; width: 451.276pt;&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Relationship 80%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Promotion 20%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Stories&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;People&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Community&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Faith Sharing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Behind the Scenes&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Events&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Services&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Notices&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Fundraising&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Don&#39;t use a big word when a singularly unloquacious and diminutive expression can satisfactorily accomplish the contemporary necessity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol start=&quot;3&quot; style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px; text-align: left;&quot;&gt;&lt;li aria-level=&quot;1&quot; style=&quot;background-color: transparent; color: black; font-family: Arial, sans-serif; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;h1 role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;The Most Important Point: People&lt;/span&gt;&lt;/h1&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Digital is only the front door. But when they actually arrive, people make the difference. &lt;/span&gt;&lt;span face=&quot;Arial,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Interact with people in person.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/5029727119357096715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/5029727119357096715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5029727119357096715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5029727119357096715'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2026/09/event-john-wesley-didnt-have-wi-fi.html' title='[Event] John Wesley didn&#39;t have Wi-Fi'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj7RJ2E9rpdsP-O2u2BOnldAxU6tlYNcgnOJPUvRdoKfdC-o8U5WjfE80nULKfIv-G5Daj9m53M8051v3Xv0hsnFOPBHlsX-NyTBKBXl_db5HJO2C3yGJlpmahwtdWmQAaE_o3g_XuR7xU9E6rWE5LKY_tyxyHvjuaHJt55AKZ-P_An-vN8Y9EP=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-959088189585852046</id><published>2026-07-10T23:21:27.266+00:00</published><updated>2026-07-10T23:21:27.267+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GenAI"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>[Event] JManc 2026</title><content type='html'>&lt;p&gt;Yesterday I was so delighted to attend &lt;a href=&quot;https://jmanc.org/&quot; target=&quot;_blank&quot;&gt;JManc&lt;/a&gt; 2026, hosted at AutoTrader&#39;s fantastic new office at &lt;a href=&quot;https://maps.app.goo.gl/bzyccHaS6Lo7UQTo7&quot; target=&quot;_blank&quot;&gt;No. 3 Circle Square&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglut40Ar7WP8vYAzTPapCAjwJeqndZPPim9X1N2yYuNhAUl-frY36C8U2hlvH4M0Rr89Vxy9hGx87GL-domg-JS8OgurVpv3XLVadX2DxeLiOEAuZoxE0g39g7SC0XQL1wKWvuCeLSxlcEnbrRD4VOWLRpBRgpX6JuWw8_N5SDVB6dqXzq9NrR/s4032/breakfast_jmac2026.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglut40Ar7WP8vYAzTPapCAjwJeqndZPPim9X1N2yYuNhAUl-frY36C8U2hlvH4M0Rr89Vxy9hGx87GL-domg-JS8OgurVpv3XLVadX2DxeLiOEAuZoxE0g39g7SC0XQL1wKWvuCeLSxlcEnbrRD4VOWLRpBRgpX6JuWw8_N5SDVB6dqXzq9NrR/s320/breakfast_jmac2026.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;I started the day with breakfast on the rooftop alongside Lorenzo and Bruce. We had great conversations, enjoyed the beautiful views over Manchester, and it was the perfect way to begin an inspiring day.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Keynote&lt;/h2&gt;&lt;p&gt;The event opened with an inspiring keynote by &lt;a href=&quot;https://publish.obsidian.md/clare-sudbery-questions/Event+Resources/Talks/2026/26-07-10+JManc+unconference%2C+The+Power+of+Craft+-+Staying+in+the+Driver%E2%80%99s+Seat+of+AI-Assisted+Development&quot; target=&quot;_blank&quot;&gt;Clare Sudbery&lt;/a&gt;, &quot;&lt;a href=&quot;https://speakerdeck.com/claresudbery/the-power-of-craft-staying-in-the-drivers-seat-of-ai-assisted-development&quot; target=&quot;_blank&quot;&gt;The Power of Craft&lt;/a&gt;: Staying in the Driver&#39;s Seat of AI-Assisted Development&quot; She focused on how software engineers should work with AI while continuing to apply professional judgement and craftsmanship.&lt;/p&gt;&lt;p&gt;One statement particularly resonated with me: &lt;i&gt;AI has a planetary brain, but it lacks real-world wisdom.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;LLMs have effectively absorbed an enormous amount of human knowledge. They can perform many tasks remarkably well, especially when given the right prompts. However, real wisdom comes from experience and context, something today&#39;s AI still cannot truly possess or connect together. It made me think about an important question: How can we tame this titan? It&#39;s a question that is worth each of us seriously considering.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 1 - How Does AI Impact Software Engineers and Our Future?&lt;/h2&gt;&lt;p&gt;Nobody questioned that AI has become remarkably capable. Given clear requirements and well-crafted prompts, AI can produce code with impressive speed and quality.&lt;/p&gt;&lt;p&gt;However, software engineering has never been just about writing code. Requirements analysis, system architecture, integration, production support, communication with stakeholders, operational concerns, and long-term maintenance all remain essential.&lt;/p&gt;&lt;p&gt;If AI reduces the time spent writing code, perhaps developers can spend more time focusing on the bigger picture:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;designing better architectures&lt;/li&gt;&lt;li&gt;understanding enterprise environments&lt;/li&gt;&lt;li&gt;improving system reliability&lt;/li&gt;&lt;li&gt;collaborating with business stakeholders&lt;/li&gt;&lt;li&gt;solving complex production issues&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;One interesting discussion centred around agile estimation. If AI enables developers to implement features much faster, should story points decrease accordingly? Many of us argued that coding has rarely been the true bottleneck in software delivery. The real bottlenecks often lie in:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;requirement refinement&lt;/li&gt;&lt;li&gt;dependency management&lt;/li&gt;&lt;li&gt;integration testing&lt;/li&gt;&lt;li&gt;deployment&lt;/li&gt;&lt;li&gt;production issue investigation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;AI accelerates implementation, but it doesn&#39;t eliminate these challenges.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 2 - Is Spring Still Relevant?&lt;/h2&gt;&lt;p&gt;With newer frameworks such as &lt;a href=&quot;https://quarkus.io/&quot; target=&quot;_blank&quot;&gt;Quarkus&lt;/a&gt; and &lt;a href=&quot;https://micronaut.io/&quot; target=&quot;_blank&quot;&gt;Micronaut&lt;/a&gt; gaining popularity, it&#39;s a fair question.&lt;/p&gt;&lt;p&gt;Certainly, Quarkus and Micronaut offer advantages, particularly around startup time and memory footprint. In reality, several factors continue to make &lt;a href=&quot;https://spring.io/projects/spring-boot&quot; target=&quot;_blank&quot;&gt;Spring Boot&lt;/a&gt; the dominant choice:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;enormous community support&lt;/li&gt;&lt;li&gt;a mature ecosystem&lt;/li&gt;&lt;li&gt;abundant learning resources&lt;/li&gt;&lt;li&gt;easier recruitment of experienced developers&lt;/li&gt;&lt;li&gt;years of production experience&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Trust also plays a huge role. Many organisations already rely heavily on the &lt;a href=&quot;https://spring.io/&quot; target=&quot;_blank&quot;&gt;Spring&lt;/a&gt; ecosystem, including Spring Web, Spring Data, Spring Security, and many other projects.&lt;/p&gt;&lt;p&gt;In particular, &lt;a href=&quot;https://spring.io/projects/spring-data&quot; target=&quot;_blank&quot;&gt;Spring Data&lt;/a&gt; often becomes deeply embedded within business applications. Once an organisation builds its domain logic around Spring Data, especially across multiple data sources such as relational databases, NoSQL databases, and search technologies like Apache Solr, moving away from the Spring ecosystem becomes extremely difficult.&lt;/p&gt;&lt;p&gt;One exception discussed was ultra-low-latency systems, such as front-office trading platforms, where every microsecond matters. In those specialist environments, lighter frameworks or different technologies may be more appropriate.&lt;/p&gt;&lt;p&gt;Apparently, for the overwhelming majority of enterprise applications, Spring remains highly relevant.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 3 - Running Local LLMs for AI Development&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://blog.sebwalak.com/&quot; target=&quot;_blank&quot;&gt;Seb&lt;/a&gt; shared his experience of using a local &lt;a href=&quot;https://qwen.ai&quot; target=&quot;_blank&quot;&gt;Qwen&lt;/a&gt; model as an AI coding assistant.&lt;/p&gt;&lt;p&gt;His workflow was particularly interesting. He first uses a proprietary model to generate a development plan. Once the overall plan is ready, he hands the implementation work over to a locally hosted Qwen model, which can work overnight.&lt;/p&gt;&lt;p&gt;This dramatically reduces token costs while keeping source code private. It was a practical example of combining the strengths of proprietary and local LLMs.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 4 - Future Java Language Features and Building AI Applications&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Desired Future Java Features&lt;/h3&gt;&lt;p&gt;Several language improvements generated enthusiastic discussion:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;non-nullable types to reduce NullPointerException&lt;/li&gt;&lt;li&gt;named parameters to simplify object construction and reduce reliance on Builder patterns&lt;/li&gt;&lt;li&gt;improved support for lazy constants&lt;/li&gt;&lt;li&gt;better type projections&lt;/li&gt;&lt;li&gt;richer ways to define operations directly on types&lt;/li&gt;&lt;li&gt;easier copying or cloning of records&lt;/li&gt;&lt;li&gt;greater flexibility to mix different programming paradigms within the same source file&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Building AI Applications in Java&lt;/h3&gt;&lt;p&gt;Several Java AI frameworks were discussed, including:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://spring.io/projects/spring-ai&quot; target=&quot;_blank&quot;&gt;Spring AI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/embabel/embabel-agent&quot; target=&quot;_blank&quot;&gt;Embabel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/langchain4j/langchain4j&quot; target=&quot;_blank&quot;&gt;LangChain4j&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;On the other hand, AI applications also introduce additional concerns, including:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;hallucinations&lt;/li&gt;&lt;li&gt;changing model behaviour over time&lt;/li&gt;&lt;li&gt;prompt regressions&lt;/li&gt;&lt;li&gt;model degradation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Reflections&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_gLkTvnu8Q3ufKbcAiQu75-2kQJM5W8tiIn6w6bN7thAAo46oHuCk-EFoz3_4FKY6aiVYgsQEGcdGn6B32CU5efMfV0Hy8DfbLwo1E6lO8KbgPcfA2UmzVSZXlI5gEGCvKQQCaipCJl3GSZWlYNpDr6NdugoilMcNPfGlXpjN6kdFDtvEBAN/s4032/jmac_2026.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_gLkTvnu8Q3ufKbcAiQu75-2kQJM5W8tiIn6w6bN7thAAo46oHuCk-EFoz3_4FKY6aiVYgsQEGcdGn6B32CU5efMfV0Hy8DfbLwo1E6lO8KbgPcfA2UmzVSZXlI5gEGCvKQQCaipCJl3GSZWlYNpDr6NdugoilMcNPfGlXpjN6kdFDtvEBAN/s320/jmac_2026.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;AI is now at the centre of conversations about the future of software engineering, and it was interesting to see how it naturally became part of almost every discussion throughout the day.&lt;/p&gt;&lt;p&gt;It was also wonderful to see more volunteers helping to organise the Manchester Java Community. Growing communities rely on passionate people who are willing to contribute, and it&#39;s encouraging to see the community continuing to grow.&lt;/p&gt;&lt;p&gt;A huge thank you to the Manchester Java Community for organising another excellent event, and to AutoTrader for hosting us in their impressive new office. I really enjoyed the day and I&#39;m already looking forward to the next JManc.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/959088189585852046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/959088189585852046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/959088189585852046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/959088189585852046'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2026/07/event-jmanc-2026.html' title='[Event] JManc 2026'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglut40Ar7WP8vYAzTPapCAjwJeqndZPPim9X1N2yYuNhAUl-frY36C8U2hlvH4M0Rr89Vxy9hGx87GL-domg-JS8OgurVpv3XLVadX2DxeLiOEAuZoxE0g39g7SC0XQL1wKWvuCeLSxlcEnbrRD4VOWLRpBRgpX6JuWw8_N5SDVB6dqXzq9NrR/s72-c/breakfast_jmac2026.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>No3, Circle Square, 5 Hawkshaw Street, Manchester M1 7BL, UK</georss:featurename><georss:point>53.4727019 -2.2368001</georss:point><georss:box>23.807010164243653 -37.393050099999996 83.138393635756344 32.919449900000004</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-8372744233319773128</id><published>2026-01-17T22:09:00.000+00:00</published><updated>2026-01-17T22:09:58.076+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Github"/><category scheme="http://www.blogger.com/atom/ns#" term="Gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaFX"/><title type='text'>S3Mate</title><content type='html'>&lt;p&gt;When working with AWS S3, I often receive S3 URLs that are not publicly accessible. These links can&#39;t be opened directly in a web browser, and they come in many different formats. For example: &lt;span style=&quot;color: #38761d; font-family: courier;&quot;&gt;https://bucket.s3.amazonaws.com/key&lt;/span&gt; or &lt;span style=&quot;color: #38761d; font-family: courier;&quot;&gt;https://s3.region.amazonaws.com/bucket/key&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Each time, I had to manually: 1) Figure out which format it was. 2) Extract the bucket and key. 3) Open the AWS Console. 4) Navigate to the correct object. This routine was repetitive and time-consuming.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/tekichan/s3mate/main/docs/screenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;487&quot; data-original-width=&quot;800&quot; height=&quot;195&quot; src=&quot;https://raw.githubusercontent.com/tekichan/s3mate/main/docs/screenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;So I built &lt;b&gt;S3Mate&lt;/b&gt;. It&#39;s a small desktop gadget that lets me paste any S3 URL, automatically resolves the bucket and key, and quickly shows or operates on the object without switching tools.&lt;/p&gt;&lt;p&gt;The application detail, source code and releases can be found at the repository of the gadget at&amp;nbsp;&lt;a href=&quot;https://github.com/tekichan/s3mate&quot;&gt;https://github.com/tekichan/s3mate&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Even though S3Mate is a small project, I picked up a few useful lessons along the way.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;1.&amp;nbsp;Building Native Desktop Apps with jpackage&lt;/h4&gt;&lt;p&gt;I learned how to use &lt;span style=&quot;font-family: courier;&quot;&gt;&lt;b&gt;jpackage&lt;/b&gt;&lt;/span&gt; to turn a Java application into a native OS application such as &lt;span style=&quot;font-family: courier;&quot;&gt;.app&lt;/span&gt; for MacOS and &lt;span style=&quot;font-family: courier;&quot;&gt;.exe&lt;/span&gt; for Windows.&amp;nbsp;This relieves the need for end users to install Java or deal with command-line arguments.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;2.&amp;nbsp;Using Git Tags for Releases&lt;/h4&gt;&lt;p&gt;I now use Git tags to mark exact release points in the project:&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;git tag &amp;lt;version&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;git push origin &amp;lt;version&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;I can remove a release:&lt;/p&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bash&quot;&gt;&lt;span style=&quot;color: #38761d; font-family: courier;&quot;&gt;git tag -d &amp;lt;version&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bash&quot;&gt;&lt;span style=&quot;color: #38761d; font-family: courier;&quot;&gt;git push origin :refs/tags/&amp;lt;version&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;3.&amp;nbsp;Publishing Releases with GitHub Action&lt;/h4&gt;&lt;p&gt;To automate distribution, I used &lt;span style=&quot;font-family: courier;&quot;&gt;&lt;b&gt;softprops/action-gh-release&lt;/b&gt;&lt;/span&gt;. This GitHub Action uploads build artifacts directly to GitHub Releases.&lt;/p&gt;&lt;p&gt;S3Mate started as a small personal utility, but it gave me an opportunity to learn how to: 1) package Java desktop app. 2) distribute app across various OS platforms. 3) Automation of Github Releases. Most importantly, it saves me time every day when dealing with various kinds of S3 URLs.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/8372744233319773128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/8372744233319773128' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/8372744233319773128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/8372744233319773128'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2026/01/s3mate.html' title='S3Mate'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-5183935412357159099</id><published>2025-11-21T23:21:00.002+00:00</published><updated>2025-11-21T23:21:48.446+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GenAI"/><category scheme="http://www.blogger.com/atom/ns#" term="GoogleCloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><title type='text'>[Event] Accelerate AI with Cloud Run</title><content type='html'>&lt;p&gt;I was excited to attend the event &lt;b&gt;Accelerate AI with Cloud Run&lt;/b&gt;, organised by Google Developer Group (GDG) North West. Unlike the typical seminar-style tech meetups, this event was so different. It wasn&#39;t just about listening, it was about building. The combination of an expert talk and hands-on labs felt perfect for a developer audience.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjygR_Nqy3oJBA2iuOpF7CP4eUtFsqespN8PTPy79EBYJMdXcGzRbLj7Cdam-zPhge77plPLvtnn0BZ1aFQd5YjO_YGAma3OV2K9LY74L_1hkwVj6eLU9t2dXlIIWk8XzvR4D-4eRgg66BBt8BqilMLfY8waIcK1cvHLv4okgSjNHyrsUvF8YJ9&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;3088&quot; data-original-width=&quot;2316&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjygR_Nqy3oJBA2iuOpF7CP4eUtFsqespN8PTPy79EBYJMdXcGzRbLj7Cdam-zPhge77plPLvtnn0BZ1aFQd5YjO_YGAma3OV2K9LY74L_1hkwVj6eLU9t2dXlIIWk8XzvR4D-4eRgg66BBt8BqilMLfY8waIcK1cvHLv4okgSjNHyrsUvF8YJ9&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The workshop started with a session delivered by &lt;a href=&quot;https://www.linkedin.com/in/richardjbannister/&quot; target=&quot;_blank&quot;&gt;Richard Bannister&lt;/a&gt; from Google. His talk focused on building AI agents on Google Cloud using the &lt;a href=&quot;https://google.github.io/adk-docs/&quot; target=&quot;_blank&quot;&gt;Agent Developer Kit&lt;/a&gt; (ADK), which is a framework designed to help developers create, deploy, and scale AI-driven agents efficiently.&lt;/p&gt;&lt;p&gt;Key takeaways from the session:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;A structured architecture for agent development includes:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Agent Build:&amp;nbsp; Capabilities to design, build and test individual AI agents and multi-agent systems&lt;/li&gt;&lt;li&gt;Agent Ops: Capabilities to deploy, manage, evolve and optimise AI agents&lt;/li&gt;&lt;li&gt;Data Platforms for Agents: Capabilities to acquire, prepare, store and access data for AI agents&lt;/li&gt;&lt;li&gt;Security for Agents: Capabilities to implement guardrails to manage unique risks of autonomous AI system&lt;/li&gt;&lt;li&gt;Governance for Agents: Capabilities to establish policies, frameworks and procedures to govern AI Agents rollout&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Open standards of connection:&amp;nbsp;MCP (Model Context Protocol) and&amp;nbsp;A2A (Agent-to-Agent)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;After the talk, we dove straight into hands-on labs designed to experience ADK on Google Cloud. Here are the lab links:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://goo.gle/aaiwcr-1&quot;&gt;https://goo.gle/aaiwcr-1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://goo.gle/aaiwcr-2&quot;&gt;https://goo.gle/aaiwcr-2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://goo.gle/aaiwcr-3&quot;&gt;https://goo.gle/aaiwcr-3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://goo.gle/aaiwcr-4&quot;&gt;https://goo.gle/aaiwcr-4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://goo.gle/aaiwcr-5&quot;&gt;https://goo.gle/aaiwcr-5&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Working through the exercises also gave me a glimpse of Google Cloud CloudShell, which now includes a surprisingly fancy Gemini CLI interface. It was fun to explore and definitely felt “state of the art”.&lt;/p&gt;&lt;p&gt;Even though the labs were Google Cloud specific, they introduced several Python tools and libraries that are also useful for development in other platforms:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/astral-sh/uv&quot; target=&quot;_blank&quot;&gt;uv&lt;/a&gt;: A new Python package &amp;amp; project manager&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gofastmcp.com/&quot; target=&quot;_blank&quot;&gt;FastMCP&lt;/a&gt;: A framework for building MCP applications&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://locust.io&quot; target=&quot;_blank&quot;&gt;locust&lt;/a&gt;: A powerful and easy-to-use load testing tool&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/googleapis/genai-toolbox&quot; target=&quot;_blank&quot;&gt;MCP Toolbox for Databases&lt;/a&gt;: An MCP server for database interactions&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhc0NFe94DEKm4XyurUir_EJE5B5qoq6m-9cfZblUuQAbw0zlAH_xuGQJ64lAo6mIcnIGw7id-VDaYZjCl350B8O9WVoVvzFN8qeiM_aOnf4TwZPK4mqOd0Rmds46E5Uh_UQB3mxZ9sr1qEFcnygChyAKSgtEoW8TXfDQEOdp-KP_9ILhZqYPdP&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhc0NFe94DEKm4XyurUir_EJE5B5qoq6m-9cfZblUuQAbw0zlAH_xuGQJ64lAo6mIcnIGw7id-VDaYZjCl350B8O9WVoVvzFN8qeiM_aOnf4TwZPK4mqOd0Rmds46E5Uh_UQB3mxZ9sr1qEFcnygChyAKSgtEoW8TXfDQEOdp-KP_9ILhZqYPdP&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I’m new to Google Cloud, and this workshop really opened my eyes to how fast the technology is moving and how much more there is to explore. I’m excited to keep learning and dive deeper into this area.&lt;/p&gt;&lt;p&gt;&lt;i&gt;References:&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://www.bbourgeois.dev/blog/2025/03-adk-core-concept/&quot;&gt;https://www.bbourgeois.dev/blog/2025/03-adk-core-concept/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://google.github.io/adk-docs/agents/&quot;&gt;https://google.github.io/adk-docs/agents/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/5183935412357159099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/5183935412357159099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5183935412357159099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5183935412357159099'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2025/11/event-accelerate-ai-with-cloud-run.html' title='[Event] Accelerate AI with Cloud Run'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjygR_Nqy3oJBA2iuOpF7CP4eUtFsqespN8PTPy79EBYJMdXcGzRbLj7Cdam-zPhge77plPLvtnn0BZ1aFQd5YjO_YGAma3OV2K9LY74L_1hkwVj6eLU9t2dXlIIWk8XzvR4D-4eRgg66BBt8BqilMLfY8waIcK1cvHLv4okgSjNHyrsUvF8YJ9=s72-c" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>11 Portland St, Manchester M1 3HU, UK</georss:featurename><georss:point>53.4795969 -2.2364449</georss:point><georss:box>-2.1228300285441932 -72.5489449 90 68.0760551</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-6617268725582531675</id><published>2025-10-19T20:18:00.003+00:00</published><updated>2025-10-19T20:24:28.201+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jupyter"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Mathematical Animation Engine</title><content type='html'>&lt;p&gt;I recently discovered an interesting Python library called &lt;a href=&quot;https://www.manim.community/&quot; target=&quot;_blank&quot;&gt;Manim&lt;/a&gt;. It’s a powerful tool that allows us to create beautiful animations of mathematical concepts and geometric shapes such as polygons, graphs, and functions.&lt;/p&gt;&lt;p&gt;What makes Manim even more exciting is that it can be used directly in Jupyter Notebook. This means I can combine code, text, and animation all in one place — perfect for explaining mathematical ideas in a more dynamic and visual way.&lt;/p&gt;&lt;p&gt;To try it out, I created a simple example using Manim to illustrate &lt;a href=&quot;https://en.wikipedia.org/wiki/Fourier_transform&quot; target=&quot;_blank&quot;&gt;the Fourier Transform&lt;/a&gt;, one of my favourite topics from university. With just a few lines of code, Manim can generate smooth, professional-looking animations that show how complex waveforms are built from simple sine components.&lt;/p&gt;&lt;p&gt;I’m excited to explore more possibilities with Manim and use it to present other mathematical concepts in a creative and engaging way.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;iframe class=&quot;BLOG_video_class&quot; allowfullscreen=&quot;&quot; youtube-src-id=&quot;bKCpsAOWpK8&quot; width=&quot;800&quot; height=&quot;600&quot; src=&quot;https://www.youtube.com/embed/bKCpsAOWpK8&quot;&gt;&lt;/iframe&gt;

&lt;style&gt;
.code-container {
  background-color: #2d2d2d;
  color: #f8f8f2;
  border-radius: 8px;
  padding: 15px;
  font-family: &quot;Fira Code&quot;, monospace;
  font-size: 14px;
  line-height: 1.5;
  overflow-x: auto;
  border: 1px solid #444;
  margin-bottom: 20px;
}
.code-container .command { color: #66d9ef; }      /* cyan */
.code-container .package { color: #a6e22e; }      /* green */
.code-container .version { color: #fd971f; }      /* orange */
.code-container .keyword { color: #f92672; }      /* pink/red */
.code-container .function { color: #66d9ef; }     /* cyan */
.code-container .string { color: #e6db74; }       /* yellow */
.code-container .comment {
  color: #75715e;
  font-style: italic;
}
&lt;/style&gt;

&lt;!-- 1️⃣ Installation --&gt;
&lt;h3&gt;1. Installation&lt;/h3&gt;
&lt;div class=&quot;code-container&quot;&gt;
&lt;code&gt;
&lt;span class=&quot;command&quot;&gt;!sudo apt update&lt;/span&gt;&lt;br&gt;
&lt;span class=&quot;command&quot;&gt;!sudo apt install&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;libcairo2-dev&lt;/span&gt; \&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;package&quot;&gt;texlive&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;texlive-latex-extra&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;texlive-fonts-extra&lt;/span&gt; \&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;package&quot;&gt;texlive-latex-recommended&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;texlive-science&lt;/span&gt; \&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;package&quot;&gt;tipa&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;libpango1.0-dev&lt;/span&gt;&lt;br&gt;
&lt;span class=&quot;command&quot;&gt;!pip install&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;manim&lt;/span&gt;&lt;br&gt;
&lt;span class=&quot;command&quot;&gt;!pip install&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;IPython&lt;/span&gt;&lt;span class=&quot;version&quot;&gt;==8.21.0&lt;/span&gt;
&lt;/code&gt;
&lt;/div&gt;

&lt;!-- 2️⃣ Configuration --&gt;
&lt;h3&gt;2. Configuration&lt;/h3&gt;
&lt;div class=&quot;code-container&quot;&gt;
&lt;code&gt;
&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;manim&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;as&lt;/span&gt; mn&lt;br&gt;
&lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;manim&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; *&lt;br&gt;&lt;br&gt;

config.media_width = &lt;span class=&quot;string&quot;&gt;&quot;75%&quot;&lt;/span&gt;&lt;br&gt;
config.verbosity = &lt;span class=&quot;string&quot;&gt;&quot;WARNING&quot;&lt;/span&gt;&lt;br&gt;&lt;br&gt;

&lt;span class=&quot;function&quot;&gt;print&lt;/span&gt;(mn.__version__)
&lt;/code&gt;
&lt;/div&gt;

&lt;!-- 3️⃣ Fourier Transform Animation (full) --&gt;
&lt;h3&gt;3. Fourier Transform Animation&lt;/h3&gt;
&lt;div class=&quot;code-container&quot;&gt;
&lt;code&gt;
%%manim -qm FourierSineMixed&lt;br&gt;
&lt;span class=&quot;comment&quot;&gt;# Fourier Transform animation: sin(2x) + 2*sin(x + π/4)&lt;/span&gt;&lt;br&gt;&lt;br&gt;

&lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;manim&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; *&lt;br&gt;
&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;package&quot;&gt;numpy&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;as&lt;/span&gt; np&lt;br&gt;&lt;br&gt;

&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;FourierSineMixed&lt;/span&gt;(Scene):&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;construct&lt;/span&gt;(self):&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Title&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title = Text(&lt;span class=&quot;string&quot;&gt;&quot;Fourier Transform of sin(2x) + 2·sin(x + π/4)&quot;&lt;/span&gt;, font_size=32).to_edge(UP)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Write(title))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(0.8)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Time-domain signal&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t = np.linspace(0, 2 * np.pi, 400)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signal = np.sin(2 * t) + 2 * np.sin(t + np.pi / 4)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Time-domain axes (shifted left)&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;time_axes = Axes(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_range=[0, 2 * np.pi, np.pi / 2],&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_range=[-3.5, 3.5, 1],&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_length=6,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_length=3.5,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;axis_config={&lt;span class=&quot;string&quot;&gt;&quot;color&quot;&lt;/span&gt;: BLUE},&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tips=False,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;).shift(LEFT * 3.3)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;time_label = time_axes.get_axis_labels(Text(&lt;span class=&quot;string&quot;&gt;&quot;t&quot;&lt;/span&gt;), Text(&lt;span class=&quot;string&quot;&gt;&quot;x(t)&quot;&lt;/span&gt;))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;time_wave = time_axes.plot(lambda x: np.sin(2 * x) + 2 * np.sin(x + np.pi / 4), color=YELLOW)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# y-axis numerical labels&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_min, y_max = -3.0, 3.0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_min_label = Text(f{&lt;span class=&quot;string&quot;&gt;&quot;{y_min:.1f}&quot;&lt;/span&gt;}, font_size=22).next_to(time_axes.c2p(0, y_min), LEFT, buff=0.15)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_max_label = Text(f{&lt;span class=&quot;string&quot;&gt;&quot;{y_max:.1f}&quot;&lt;/span&gt;}, font_size=22).next_to(time_axes.c2p(0, y_max), LEFT, buff=0.15)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Create(time_axes), Write(time_label))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Create(time_wave))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Write(y_min_label), Write(y_max_label))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(0.8)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Fourier Transform computation&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;freqs = np.fft.fftfreq(len(t), d=(t[1] - t[0]))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fft_vals = np.fft.fft(signal)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;magnitude = np.abs(fft_vals) / len(t)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mask = freqs &amp;gt;= 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;freqs_pos = freqs[mask]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mag_pos = magnitude[mask]&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Frequency-domain axes (0–0.4)&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;freq_axes = Axes(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_range=[0, 0.4, 0.05],&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_range=[0, max(1.0, np.max(mag_pos) * 1.2), 0.2],&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_length=3.5,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_length=3.5,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;axis_config={&lt;span class=&quot;string&quot;&gt;&quot;color&quot;&lt;/span&gt;: GREEN},&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tips=False,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;).shift(RIGHT * 3.0)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Axis labels (explicitly positioned)&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_label = Text(&lt;span class=&quot;string&quot;&gt;&quot;f&quot;&lt;/span&gt;, font_size=24).next_to(freq_axes.x_axis, DOWN, buff=0.15)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_label = Text(&lt;span class=&quot;string&quot;&gt;&quot;|X(f)|&quot;&lt;/span&gt;, font_size=24).rotate(PI / 2).next_to(freq_axes.y_axis, LEFT, buff=0.35)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Create(freq_axes), Write(x_label), Write(y_label))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(0.6)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Bars and labels&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bars = VGroup()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bar_labels = VGroup()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;amp_labels = VGroup()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bar_width = 0.35&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; f, m &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; zip(freqs_pos, mag_pos):&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; m &amp;lt; 0.005 or f &amp;gt; 0.4:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x = freq_axes.c2p(f, 0)[0]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_bottom = freq_axes.c2p(0, 0)[1]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_top = freq_axes.c2p(0, m)[1]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height = y_top - y_bottom&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Bar itself&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bar = Rectangle(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width=bar_width,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height=height,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color=ORANGE,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fill_color=ORANGE,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fill_opacity=0.9&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;).move_to([x, y_bottom + height / 2, 0])&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bars.add(bar)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Frequency label (below bar)&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f_label = Text(f&lt;span class=&quot;string&quot;&gt;&quot;f = {f:.2f}&quot;&lt;/span&gt;, font_size=20).next_to(bar, DOWN, buff=0.1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bar_labels.add(f_label)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Magnitude label (above bar)&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_label = Text(f&lt;span class=&quot;string&quot;&gt;&quot;{m:.2f}&quot;&lt;/span&gt;, font_size=20).next_to(bar, UP, buff=0.05)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;amp_labels.add(m_label)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Transition from time → frequency&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Transform(time_wave, bars),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FadeOut(time_axes),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FadeOut(time_label),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FadeOut(y_min_label),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FadeOut(y_max_label),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;run_time=3&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(0.6)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Create(bars), Write(bar_labels), Write(amp_labels))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(1.2)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Highlight peaks&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;peaks = []&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; f, m &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; zip(freqs_pos, mag_pos):&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; 0 &amp;lt; f &amp;lt;= 0.4 and m &amp;gt; 0.05:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;peaks.append(freq_axes.get_vertical_line(freq_axes.c2p(f, m), color=RED))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; peaks:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(*[Create(p) &lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; p &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; peaks])&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(1.5)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# Cleanup &amp; final text&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;# -------------------------&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FadeOut(VGroup(title, bars, freq_axes, x_label, y_label, bar_labels, amp_labels, *peaks, time_wave)),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;run_time=1.2&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br&gt;&lt;br&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_text = Text(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&quot;Fourier Transform Reveals Frequency Components&quot;&lt;/span&gt;,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font_size=28&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;).to_edge(DOWN).shift(DOWN * 0.5)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.play(Write(end_text))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.wait(2.5)
&lt;/code&gt;
&lt;/div&gt;

</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/6617268725582531675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/6617268725582531675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6617268725582531675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6617268725582531675'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2025/10/mathematical-animation-engine.html' title='Mathematical Animation Engine'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/bKCpsAOWpK8/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-2325594527487388325</id><published>2025-08-10T21:18:00.010+00:00</published><updated>2026-01-17T22:21:40.800+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Berlin"/><category scheme="http://www.blogger.com/atom/ns#" term="Travel"/><title type='text'>Reichstag building, Berlin</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgDx2IeDJDdZnmDUCS77bnyY6Ph1Fo5SXjGuAhqKMXdL-nDjsFAngQr3pSPZVB90r4UGs0GE1pn2ZTZ8f_yIcxNht2vLtn0rs-hbnK2xoiF7YbPnxMJmuoaHpOrsgnGp79x4xlVwiuhoVsp9AilVGd_XnMer1g617t19IsSO21EgxUd0Hk8Ufky&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;768&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgDx2IeDJDdZnmDUCS77bnyY6Ph1Fo5SXjGuAhqKMXdL-nDjsFAngQr3pSPZVB90r4UGs0GE1pn2ZTZ8f_yIcxNht2vLtn0rs-hbnK2xoiF7YbPnxMJmuoaHpOrsgnGp79x4xlVwiuhoVsp9AilVGd_XnMer1g617t19IsSO21EgxUd0Hk8Ufky&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Reichstag building&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Berlin, the capital of modern democracy&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/2325594527487388325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/2325594527487388325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/2325594527487388325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/2325594527487388325'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2025/08/reichstag-building-berlin.html' title='Reichstag building, Berlin'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgDx2IeDJDdZnmDUCS77bnyY6Ph1Fo5SXjGuAhqKMXdL-nDjsFAngQr3pSPZVB90r4UGs0GE1pn2ZTZ8f_yIcxNht2vLtn0rs-hbnK2xoiF7YbPnxMJmuoaHpOrsgnGp79x4xlVwiuhoVsp9AilVGd_XnMer1g617t19IsSO21EgxUd0Hk8Ufky=s72-c" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Platz der Republik 1, 11011 Berlin, Germany</georss:featurename><georss:point>52.5186202 13.3761871</georss:point><georss:box>24.208386363821155 -21.7800629 80.828854036178853 48.532437099999996</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-6439643155325720663</id><published>2025-06-13T21:14:00.143+00:00</published><updated>2025-06-14T21:55:13.863+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>[Event] JManc 2025</title><content type='html'>&lt;p&gt;I had the opportunity to attend JManc again this year—and once more, it was fabulous. The sessions were organic, deeply technical, and full of insights shared by developers across different domains. Here&#39;s my wrap-up from the day, highlighting a few memorable sessions and conversations.&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVG8pQAkzJHavUggeEJUeh90g1YhfiIA-n99JcG0HKMpii-pwBjXTYKPmrNdLsqNZcVGEK9CTtiFYEIVmE_ynkvQf5QzEPpVH-wqS6ewHTJhv-oZPtiUgb6J2CzgzihnbN2c1CEI_U4SVY_dmFndbcsEdCurwnD5u8xgEfdcDTDk0c2c6YPsMT/s2048/When_JManc_2025_started.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVG8pQAkzJHavUggeEJUeh90g1YhfiIA-n99JcG0HKMpii-pwBjXTYKPmrNdLsqNZcVGEK9CTtiFYEIVmE_ynkvQf5QzEPpVH-wqS6ewHTJhv-oZPtiUgb6J2CzgzihnbN2c1CEI_U4SVY_dmFndbcsEdCurwnD5u8xgEfdcDTDk0c2c6YPsMT/s320/When_JManc_2025_started.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;1 Tony Wilson, Manchester&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;30 Years of Java — Jim Gough’s Retrospective&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://jpgough.github.io/&quot; target=&quot;_blank&quot;&gt;Jim Gough&lt;/a&gt; delivered a fantastic keynote on the evolution of Java over three decades. As a Java Champion, his perspective mixed historical insight with a touch of humor and lived experience. Here are some of the milestones he covered:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Applets &amp;amp; Early UI: Java’s original fame came from applets—tiny applications that ran inside web browsers.&amp;nbsp;&lt;/li&gt;&lt;li&gt;AWT &amp;amp; Swing: Early GUI development in Java involved the AWT toolkit, later replaced by the more versatile Swing.&lt;/li&gt;&lt;li&gt;JavaFX: The modern Java UI framework that succeeded Swing. It was eventually removed from the JDK and spun out as an open-source project. While less commonly used in modern web-first development, JavaFX remains powerful for rich desktop applications.&lt;/li&gt;&lt;li&gt;Collections API: Java didn’t always have the familiar List, Map, and Set interfaces. The collections framework demonstrates Java&#39;s characteristic of Object Oriented Design.&lt;/li&gt;&lt;li&gt;Generics: Added in Java 5, generics brought compile-time type safety to the language.&lt;/li&gt;&lt;li&gt;Date/Time APIs: The original Date and Calendar classes were messy and mutable. Java 8’s LocalDateTime and related classes (from &lt;a href=&quot;https://jcp.org/aboutJava/communityprocess/pfd/jsr310/JSR-310-guide.html&quot; target=&quot;_blank&quot;&gt;JSR-310&lt;/a&gt;) finally gave Java a clean, immutable time API.&lt;/li&gt;&lt;li&gt;Lambdas &amp;amp; Streams: Java 8 also introduced lambdas, allowing functional programming and vastly simplifying code for iteration, filtering, and transformation.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Jim also asked audience members to share their Java stories. I shared:&lt;/p&gt;&lt;p&gt;&lt;i&gt;“My first Java program was in 2002, working with JCA for encryption and decryption. Even now, I still find JCA reliable. I also used Servlets and JSP—technologies that may be seen as legacy now, but I still find them elegant in their simplicity. I&#39;m hopeful for future UI innovations in Java, especially in areas like JavaFX or beyond.”&lt;/i&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghsC3uE2ajhfwUKFNppSVzRi7o2mD9qU1I43mJEPSts0_NhLKbJPkUbbfD4yKhuobQKBG4N7rjxOaTHqy0Z5knx0Zhzjf9MkZAC89ntFnX60WzMmCc5hI8HgE5KNevaERJyQLe-hXW_znyjQg1wpYoPpInOpa8TfBftlK66Rr0dKx24YIBnVmQ/s2048/with_Jim_Gough.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghsC3uE2ajhfwUKFNppSVzRi7o2mD9qU1I43mJEPSts0_NhLKbJPkUbbfD4yKhuobQKBG4N7rjxOaTHqy0Z5knx0Zhzjf9MkZAC89ntFnX60WzMmCc5hI8HgE5KNevaERJyQLe-hXW_znyjQg1wpYoPpInOpa8TfBftlK66Rr0dKx24YIBnVmQ/s320/with_Jim_Gough.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Selfie with Jim Gough&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 1: Quarkus vs Spring&lt;/h2&gt;&lt;p&gt;This session compared two popular choices for building backend applications in Java. The discussion was grounded in real-world experience and focused on trade-offs.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://quarkus.io/&quot; target=&quot;_blank&quot;&gt;Quarkus&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Designed for cloud-native workloads and microservices&lt;/li&gt;&lt;li&gt;Emphasizes fast startup times and low memory usage—ideal for containers, serverless, and Kubernetes deployments&lt;/li&gt;&lt;li&gt;Lightweight, developer-friendly with hot reload&lt;/li&gt;&lt;li&gt;Lacks the breadth of built-in libraries and abstraction layers that Spring provides&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://spring.io/&quot; target=&quot;_blank&quot;&gt;Spring&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Complete and mature ecosystem (Spring Boot, Spring Security, Spring Data, etc.)&lt;/li&gt;&lt;li&gt;Extensive support for dependency injection, configuration, and modularity&lt;/li&gt;&lt;li&gt;XML-based configuration was noted as both flexible and hard to test&lt;/li&gt;&lt;li&gt;Rich in community tooling and documentation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;To wrap up, Spring offers completeness and convenience, especially for enterprise systems. Quarkus is leaner and optimised for performance-critical, containerised deployments.&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW3q4XpBCQqal2eqG8Y5SMvCjINleXA0KoDiTpNVdCF8ue0PUWGSAteRcug0WNiCIiyXwNX-UoJqnrve06b9gbrvse3ljU4XW5zcoGQ77QRKk7vkWVAfkFk4fl6uSgxWtMggfePiUoqAffrIuW-yQhg3uF0JXDIx90xl7uNmTpSg2aUSkdWbk1/s2048/Autotrader_Breakfast.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW3q4XpBCQqal2eqG8Y5SMvCjINleXA0KoDiTpNVdCF8ue0PUWGSAteRcug0WNiCIiyXwNX-UoJqnrve06b9gbrvse3ljU4XW5zcoGQ77QRKk7vkWVAfkFk4fl6uSgxWtMggfePiUoqAffrIuW-yQhg3uF0JXDIx90xl7uNmTpSg2aUSkdWbk1/s320/Autotrader_Breakfast.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Breakfast&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMqu9FN3PprnI9tp6NJFdOYO36P5mFcu1SGmnCHgEhj-tzf_xx2tL5hh9_DjqwTsTT6p30ThJA8wLvh-MLYfKQ2VTmH9DsQTie56EI3_a6SsykOBLnhBuj6sQ8rlb7aFb0cJSPu0lnob31kLcAHxwV_-93UctM03ZXgyT5_QhWdqlsAl_fDZJQ/s2048/Autotrader_Coffee.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMqu9FN3PprnI9tp6NJFdOYO36P5mFcu1SGmnCHgEhj-tzf_xx2tL5hh9_DjqwTsTT6p30ThJA8wLvh-MLYfKQ2VTmH9DsQTie56EI3_a6SsykOBLnhBuj6sQ8rlb7aFb0cJSPu0lnob31kLcAHxwV_-93UctM03ZXgyT5_QhWdqlsAl_fDZJQ/s320/Autotrader_Coffee.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Cappuccino&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 2: What is TDD?&lt;/h2&gt;&lt;div&gt;&lt;div&gt;We started with a simple question: What is Test-Driven Development (TDD)?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The discussion opened up several threads:&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;TDD isn’t about testing, but about designing with feedback. Writing tests first helps shape APIs and logic with clarity.&lt;/li&gt;&lt;li&gt;Working with legacy code that wasn’t built with TDD in mind is difficult. Often, these systems are tightly coupled and require significant refactoring before becoming testable.&lt;/li&gt;&lt;li&gt;TDD encourages modular design, which makes code more adaptable.&lt;/li&gt;&lt;li&gt;Cultural factors are just as important—communication and team mindset are crucial for successful TDD adoption.&lt;/li&gt;&lt;li&gt;We also explored the difference between TDD (writing tests before code) and BDD (writing specs that describe behavior).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;“TDD is not about coding tests—it’s about teamwork, communication and designing cleaner, more reliable systems from the ground up.”&lt;/div&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Session 3: Event-Driven Architecture and Apache Kafka&lt;/h2&gt;&lt;p&gt;In this session, we explored the principles of event-driven systems, focusing on &lt;a href=&quot;https://kafka.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Kafka&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Key points discussed:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Kafka promotes loose coupling between producers and consumers&lt;/li&gt;&lt;li&gt;It provides durability and scalability, but introduces challenges:&lt;/li&gt;&lt;li&gt;No ordering guarantee across partitions&lt;/li&gt;&lt;li&gt;Possibility of duplicate events&lt;/li&gt;&lt;li&gt;Systems built on Kafka are often stateless, requiring thoughtful design for consistency and orchestration&lt;/li&gt;&lt;li&gt;Event-driven design is powerful for decoupling systems but requires careful thinking around delivery guarantees and idempotency&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Hallway Conversations&lt;/h2&gt;&lt;p&gt;As always, some of the best insights came outside the sessions.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;AI in DevOps&lt;/h3&gt;&lt;p&gt;In a conversation with &lt;a href=&quot;https://www.linkedin.com/in/wmarshid/&quot; target=&quot;_blank&quot;&gt;Waqas&lt;/a&gt;, we explored ideas around using AI in CI/CD pipelines. I shared that AI could:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Detect flaky or failing tests based on patterns&lt;/li&gt;&lt;li&gt;Recommend release rollbacks or retries&lt;/li&gt;&lt;li&gt;Even automate state-driven workflows, such as those involving Stripe payments&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Data Pipeline with Apache projects&lt;/h3&gt;&lt;p&gt;With &lt;a href=&quot;https://www.linkedin.com/in/lorenzo-piovesan-327b90b0/&quot; target=&quot;_blank&quot;&gt;Lorenzo&lt;/a&gt;, we dived into data integration stacks in addition to Apache Kafka:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://atlas.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Atlas&lt;/a&gt; for metadata and lineage&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://storm.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Storm&lt;/a&gt; for real-time streaming&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://camel.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Camel&lt;/a&gt; for declarative integration and routing across systems&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjUl8svZmAwdBlfDxlb0eeWKRa1kB-JjqGOYjVDp7Nv3lAQd_6c7C_TskMk7ltmZPt1yudeTQbgij2D6DGYYX7gqpLnwSuO6h0tF7IE4R_kM7uC2ysT5Rv3nHejjrCv9GgfQcI7BG2G9xupl3xFJLUuyocW1-ptW-0qGBkvM-6BpTzBHas7ayw/s2048/JMac_2025_Marketplace.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjUl8svZmAwdBlfDxlb0eeWKRa1kB-JjqGOYjVDp7Nv3lAQd_6c7C_TskMk7ltmZPt1yudeTQbgij2D6DGYYX7gqpLnwSuO6h0tF7IE4R_kM7uC2ysT5Rv3nHejjrCv9GgfQcI7BG2G9xupl3xFJLUuyocW1-ptW-0qGBkvM-6BpTzBHas7ayw/s320/JMac_2025_Marketplace.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;JManc 2025 Marketplace&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Final Thoughts&lt;/h2&gt;&lt;p&gt;Big thanks to the &lt;a href=&quot;https://manchesterjavacommunity.org/&quot; target=&quot;_blank&quot;&gt;Manchester Java Community&lt;/a&gt; helpers for organising such a smooth and welcoming event, and to &lt;a href=&quot;https://www.autotrader.co.uk/&quot; target=&quot;_blank&quot;&gt;Autotrader&lt;/a&gt;, who generously hosted us in a modern, comfortable space.&lt;/p&gt;&lt;p&gt;The JManc covered a wide range of technical and strategic topics. What stood out for me most was how grounded and honest the discussions were—whether we were talking about Quarkus, TDD, or event-driven architecture. All were just about developers sharing, our experiences, our problems, our ideas.&lt;/p&gt;&lt;p&gt;Java is 30 years old and still evolving—and so are we.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/6439643155325720663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/6439643155325720663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6439643155325720663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6439643155325720663'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2025/06/event-jmanc-2025.html' title='[Event] JManc 2025'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVG8pQAkzJHavUggeEJUeh90g1YhfiIA-n99JcG0HKMpii-pwBjXTYKPmrNdLsqNZcVGEK9CTtiFYEIVmE_ynkvQf5QzEPpVH-wqS6ewHTJhv-oZPtiUgb6J2CzgzihnbN2c1CEI_U4SVY_dmFndbcsEdCurwnD5u8xgEfdcDTDk0c2c6YPsMT/s72-c/When_JManc_2025_started.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename> Autotrader UK</georss:featurename><georss:point>53.473164399999987 -2.2466593</georss:point><georss:box>53.473004754972713 -2.2469275209014894 53.473324045027262 -2.2463910790985109</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-1151278560555603711</id><published>2024-10-29T21:47:00.000+00:00</published><updated>2024-10-29T21:47:20.537+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Career"/><category scheme="http://www.blogger.com/atom/ns#" term="FinTech"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>[Event] Shape The Future with Lloyds</title><content type='html'>&lt;p&gt;I attended the talk called &quot;Shape The Future with Lloyds&quot;. It was exciting to see a legacy bank break out of its monolithic shell and dive into Digital Transformation.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://www.lloydsbank.com/&quot; target=&quot;_blank&quot;&gt;Lloyds Bank&lt;/a&gt; team shared insights into their journey of innovation; their commitment and the challenges faced in reshaping such a large institution. It was a great reminder of how iterative progress drives change across any industry.&lt;/p&gt;&lt;p&gt;A special thanks to &lt;a href=&quot;https://www.linkedin.com/in/david-underwood-6b929858/&quot; target=&quot;_blank&quot;&gt;David Underwood&lt;/a&gt; for not only posting this event but also for sharing his experience in making daily multiple deployments possible; a true marker of transformation in action!&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GzVT4M4Xqca4YShjRjrZ0ZNt6xfBXVLSO-eskzhMy2ldb8Nsa8G3cM2sPyoS1d7dxhx9UZK9v_bOQpE1Au53QvJMX0_EuzN31B_KzIEihujxngA0r2naicgb6b1L5BJuN2KQvOjhPVJWmSBIId1R4QOMhsu4e5raPK1K9tcFlw5qhVSJOn2z/s4032/Lloyd_with_David_241029.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GzVT4M4Xqca4YShjRjrZ0ZNt6xfBXVLSO-eskzhMy2ldb8Nsa8G3cM2sPyoS1d7dxhx9UZK9v_bOQpE1Au53QvJMX0_EuzN31B_KzIEihujxngA0r2naicgb6b1L5BJuN2KQvOjhPVJWmSBIId1R4QOMhsu4e5raPK1K9tcFlw5qhVSJOn2z/s320/Lloyd_with_David_241029.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/1151278560555603711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/1151278560555603711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/1151278560555603711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/1151278560555603711'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/10/event-shape-future-with-lloyds.html' title='[Event] Shape The Future with Lloyds'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GzVT4M4Xqca4YShjRjrZ0ZNt6xfBXVLSO-eskzhMy2ldb8Nsa8G3cM2sPyoS1d7dxhx9UZK9v_bOQpE1Au53QvJMX0_EuzN31B_KzIEihujxngA0r2naicgb6b1L5BJuN2KQvOjhPVJWmSBIId1R4QOMhsu4e5raPK1K9tcFlw5qhVSJOn2z/s72-c/Lloyd_with_David_241029.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Westminster House, 11 Portland St, Manchester M1 3HU, UK</georss:featurename><georss:point>53.4795969 -2.2364449</georss:point><georss:box>25.169363063821152 -37.3926949 81.789830736178843 32.9198051</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-5990339615500358463</id><published>2024-07-28T22:11:00.000+00:00</published><updated>2024-07-28T22:11:00.227+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PC"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Building a Gaming PC: A Personal Journey Through Time</title><content type='html'>&lt;p&gt;Building a PC for my son recently brought back memories from my first build over two decades ago. I feel fascinated to see how much has changed and how much has stayed the same. The fundamental concept of assembling a PC remains, but the technology has advanced significantly, making this easier. Here is my lesson learnt during this build.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZx-xRmLY4HCFQVHLKvdw2KOurM5B4a3aOFkPs0p_ixQGVNHlx5e6JJ2-u7ns1xJhc5irCg_a4iXk5GjjarPYziDFneSyJ0O6Gk3y7W8ZTx-4Qnc764leKTgW3BkUfJRZjOeFyZFAmOYj_x0bZbl0uCuugXxGpH9FqWvgqupKBivEDnAXx0wI9/s1024/pc_packages.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;577&quot; data-original-width=&quot;1024&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZx-xRmLY4HCFQVHLKvdw2KOurM5B4a3aOFkPs0p_ixQGVNHlx5e6JJ2-u7ns1xJhc5irCg_a4iXk5GjjarPYziDFneSyJ0O6Gk3y7W8ZTx-4Qnc764leKTgW3BkUfJRZjOeFyZFAmOYj_x0bZbl0uCuugXxGpH9FqWvgqupKBivEDnAXx0wI9/s320/pc_packages.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;CPU: AMD Ryzen 5 5600X&amp;nbsp;&lt;/h3&gt;&lt;p&gt;The CPU market is still dominated by Intel and AMD, just as it was two decades ago. Unlike the past, where you could simply install a CPU out of the box, modern processors require an efficient cooling system. The additional CPU fan has become a minimal necessity to cool down these powerful processors.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Motherboard:&amp;nbsp;ASUS ROG STRIX B550-F&lt;/h3&gt;&lt;p&gt;ASUS remains my favourite brand for motherboards. The advancements here are remarkable. Gone are the PS/2 ports, replaced by USB ports. Sound cards, which were once an essential component, are no longer needed as modern motherboards come with integrated sound. Setting jumpers manually is a thing of the past. In addition, LED decorations add a touch of stylishness, turning the motherboard from a plain piece of metal into a visually appealing entertainment.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Graphic Card:&amp;nbsp;MSI GeForce RTX 3050 LP 6G OC&lt;/h3&gt;&lt;p&gt;In the past, a SVGA card with a VGA port was essential for any build. Today’s motherboards come equipped with HDMI ports, but for a gaming PC, a dedicated graphics card with a powerful GPU is indispensable. GPUs are not only crucial for 3D games but also play a significant role in machine learning programs.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Storage:&amp;nbsp;Crucial BX500 SATA SSD 1TB&lt;/h3&gt;&lt;p&gt;Storage technology has dramatically transformed. The bulky SCSI 3.5&quot; HDDs have been replaced by sleek SATA 2.5&quot; SSDs. SSDs are lighter, faster, and more shock-resistant. CD-ROM drives and 1.44&quot; floppy drives have vanished in modern PCs, thanks to the widespread adoption of USB storage. And yes, jumpers are no longer a part here either.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Network Card:&amp;nbsp;TP-Link Archer TX55E&lt;/h3&gt;&lt;p&gt;Both my old and new builds required external network cards. The network card was previously essential for Ethernet connections. Today, the motherboard comes with a built-in Ethernet port, and the network card I added provides WiFi and Bluetooth connectivity.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;OS: Windows 11 Home&lt;/h3&gt;&lt;p&gt;Setting up the operating system was another area where I noticed significant improvements. Two decades ago, I spent hours installing Windows 98 from the OS CDs as well as hardware drivers&#39; CDs. This time I installed Windows 11 from the USB drive and all drivers were automatically recognised by the latest OS. The system was ready to use almost instantly.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Building this PC today was still a delightful experience, bridging the gap between past and present. It was my personal testament to how far technology has come.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/5990339615500358463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/5990339615500358463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5990339615500358463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5990339615500358463'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/07/building-gaming-pc-personal-journey.html' title='Building a Gaming PC: A Personal Journey Through Time'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZx-xRmLY4HCFQVHLKvdw2KOurM5B4a3aOFkPs0p_ixQGVNHlx5e6JJ2-u7ns1xJhc5irCg_a4iXk5GjjarPYziDFneSyJ0O6Gk3y7W8ZTx-4Qnc764leKTgW3BkUfJRZjOeFyZFAmOYj_x0bZbl0uCuugXxGpH9FqWvgqupKBivEDnAXx0wI9/s72-c/pc_packages.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-3171586955361084440</id><published>2024-07-19T23:16:00.006+00:00</published><updated>2024-07-19T23:16:55.661+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Game"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Scratch"/><category scheme="http://www.blogger.com/atom/ns#" term="STEM"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Horse Racing Game by PyGame</title><content type='html'>&lt;p&gt;My little son inspired me 🤗 to create a Horse Racing game using Pygame, based on &lt;a href=&quot;https://scratch.mit.edu/projects/878571836/&quot; target=&quot;_blank&quot;&gt;his original Scratch game&lt;/a&gt;. 🎮🐴&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://github.com/tekichan/py_horse_racing/raw/main/images/screenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1010&quot; data-original-width=&quot;1280&quot; height=&quot;253&quot; src=&quot;https://github.com/tekichan/py_horse_racing/raw/main/images/screenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This project is not only a simple game but also serving as a step-by-step tutorial to help kids and beginners transition from Scratch to Python programming.&lt;/p&gt;&lt;p&gt;Find the full game and tutorial: &lt;a href=&quot;https://github.com/tekichan/py_horse_racing&quot;&gt;https://github.com/tekichan/py_horse_racing&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Let’s encourage the next generation of coders! 💻✨&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/3171586955361084440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/3171586955361084440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3171586955361084440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3171586955361084440'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/07/horse-racing-game-by-pygame.html' title='Horse Racing Game by PyGame'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-9218431874363445625</id><published>2024-06-29T14:22:00.002+00:00</published><updated>2024-06-29T14:47:16.496+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GenAI"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaFX"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>[Event] JManc (28th June 2024)</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr8_4VeGiCHfL0GCDSQgTXxdfBZ7wM5a03G-TTxzA0ugZoyuruBVCePkXYYs4bIXQIWCf8-OePiADs3GckbfX4REfjbg6NTf7gLIHu7tTV6YhpGmf8Jek-w9ivNugNPpDAUbAM4WpHUR4M3YzFSMV0ySd9UkGUCUm4Z9ViYxSLS81RBn6Bxrtm/s1920/my_topic_m.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1920&quot; data-original-width=&quot;1920&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr8_4VeGiCHfL0GCDSQgTXxdfBZ7wM5a03G-TTxzA0ugZoyuruBVCePkXYYs4bIXQIWCf8-OePiADs3GckbfX4REfjbg6NTf7gLIHu7tTV6YhpGmf8Jek-w9ivNugNPpDAUbAM4WpHUR4M3YzFSMV0ySd9UkGUCUm4Z9ViYxSLS81RBn6Bxrtm/s320/my_topic_m.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;My Sharing about JavaFX&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Attending &lt;a href=&quot;https://jmanc.org/&quot; target=&quot;_blank&quot;&gt;JManc&lt;/a&gt;, an unconference organised by &lt;a href=&quot;https://manchesterjavacommunity.org/&quot; target=&quot;_blank&quot;&gt;Manchester Java Community&lt;/a&gt; and hosted at &lt;a href=&quot;https://www.autotrader.co.uk/&quot; target=&quot;_blank&quot;&gt;Auto Trader&lt;/a&gt;&#39;s offices, was an exciting experience. This unique event demonstrating the essence of participant-driven learning and collaboration, set the stage for a series of engaging and enlightening sessions.&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFXPha32DjdVl9fClYKMWJbYaHFzOuL39ZOQd7ff4TP6j87hM8L9k_rwAnV_h1ztjPmIoap5V-SzK6i4SQrrtFt7lwvdDnFAimPQaOK8bJ79OI7hjQ4d93qGkgsypGkF7NcfmvjgC7_fqQ3BNWnTNY7wQSyXxsDT5GHvA5c_l_HH2_-BxzwgI3/s4032/Me_Joining_JManc.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFXPha32DjdVl9fClYKMWJbYaHFzOuL39ZOQd7ff4TP6j87hM8L9k_rwAnV_h1ztjPmIoap5V-SzK6i4SQrrtFt7lwvdDnFAimPQaOK8bJ79OI7hjQ4d93qGkgsypGkF7NcfmvjgC7_fqQ3BNWnTNY7wQSyXxsDT5GHvA5c_l_HH2_-BxzwgI3/s320/Me_Joining_JManc.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Propose and vote for topics&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;In the morning, we proposed topics using sticky notes. Afterward, we voted on these topics with dots, shaping the day&#39;s agenda based on collective interest. This process itself was a testament to the community&#39;s diverse interests and expertise.&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSmyL8HDtBMzcU_GbDIKK7n3KWHvZDWbh_CBsNUHZTBhjIxeXnBaMeCwCqlhIWYLDPfgXEnET7xYESuY3-TI9nM1VJsYnm_j_IjrRVN4VIO8v2_ti0OLk_7A6rj5lLYCQFKbTifM6Lmqu3qKdfcs-1L9AQtLu3JZxIh2dVfvNNGzsUn1Gal1QI/s4032/breakfast.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSmyL8HDtBMzcU_GbDIKK7n3KWHvZDWbh_CBsNUHZTBhjIxeXnBaMeCwCqlhIWYLDPfgXEnET7xYESuY3-TI9nM1VJsYnm_j_IjrRVN4VIO8v2_ti0OLk_7A6rj5lLYCQFKbTifM6Lmqu3qKdfcs-1L9AQtLu3JZxIh2dVfvNNGzsUn1Gal1QI/s320/breakfast.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Breakfast&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Keynote by Helen Scott&lt;/h3&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsfM9Pn6FFjHrYvdwIl4vo8knHhyTFGvKPt4Yf6TLP-kFQ-8fWWn2os7biGiJ2BKzO-emDOgi0Lg9zYQ8uIPKhJC5mAU4Zo0muiU3lP1QNNiylnFqiT1Xnu2OGcEA15omDkkBRyZ9EIZyWbyW1l9kdtvrHwlvqDQ6xhcBRMVufFjd28QsoM1f5/s4032/helen_scott_and_organisers.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsfM9Pn6FFjHrYvdwIl4vo8knHhyTFGvKPt4Yf6TLP-kFQ-8fWWn2os7biGiJ2BKzO-emDOgi0Lg9zYQ8uIPKhJC5mAU4Zo0muiU3lP1QNNiylnFqiT1Xnu2OGcEA15omDkkBRyZ9EIZyWbyW1l9kdtvrHwlvqDQ6xhcBRMVufFjd28QsoM1f5/s320/helen_scott_and_organisers.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Keynote by Helen Scott&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;The unconference kicked off with a keynote by &lt;a href=&quot;https://www.helenjoscott.com/&quot; target=&quot;_blank&quot;&gt;Helen Scott&lt;/a&gt; from &lt;a href=&quot;https://www.jetbrains.com/&quot; target=&quot;_blank&quot;&gt;JetBrains&lt;/a&gt;. Helen&#39;s talk centered on AI, a topic so crucial and timely that, as she humorously noted, audience would have thrown her out of the window if she did not speak of AI. Her insights into AI&#39;s impact on development and the future of programming set a thought-provoking tone for the day.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;New Features&lt;/h3&gt;&lt;p&gt;The next session delved into the latest features in Java, highlighting enhancements that developers can leverage to improve their productivity. We explored the new switch syntax, Records, new Collections APIs, Java Modularity, and the Java Native Interface. Each feature was dissected to understand its benefits and potential use cases.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Troubleshooting Applications in Containers&lt;/h3&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZDL_WvvbhRWqN58IO2eyUU6dw6KIfcPewmY2Unhik1BmfRN2mS5PUTKosjSjr-FHTZ99Q-q6atchmvF95nne217FbIrqef9QksZK8xCjA_sj1eFItSn0RkTu9Lxt6etgPVtZC20CunyZCkJBTa4zyEEH4qReBsiv_CRGFeQQoDwwYa7dDdu1i/s4032/troubleshoot_in_containers.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZDL_WvvbhRWqN58IO2eyUU6dw6KIfcPewmY2Unhik1BmfRN2mS5PUTKosjSjr-FHTZ99Q-q6atchmvF95nne217FbIrqef9QksZK8xCjA_sj1eFItSn0RkTu9Lxt6etgPVtZC20CunyZCkJBTa4zyEEH4qReBsiv_CRGFeQQoDwwYa7dDdu1i/s320/troubleshoot_in_containers.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Troubleshoot in Containers&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;This session focused on the challenges and solutions for troubleshooting Java applications running in containers. We covered stress testing with JMeter, analysing heap dumps, configuring Garbage Collection, and the division of labor between image building and container deployment. The practical insights shared were invaluable for anyone working with containerised Java applications.&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-H7Yb_yaols6_QbVX5mFzArp1SqjHpNy3HliPiQPighODTp1iOg0VjaAkmjSMRAWl5v5ESn6L76Ccf_KGhJwnstnOwhduNnppcjdnuanxW3ZS0xXAkMcg3xVT3BBJELwwAXB0YUrqWkf0b9Qz9aqfO5wfHg6vhI3L2QCuVFitbU4_1S1rNF3w/s3390/lunch.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2170&quot; data-original-width=&quot;3390&quot; height=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-H7Yb_yaols6_QbVX5mFzArp1SqjHpNy3HliPiQPighODTp1iOg0VjaAkmjSMRAWl5v5ESn6L76Ccf_KGhJwnstnOwhduNnppcjdnuanxW3ZS0xXAkMcg3xVT3BBJELwwAXB0YUrqWkf0b9Qz9aqfO5wfHg6vhI3L2QCuVFitbU4_1S1rNF3w/s320/lunch.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Lunch&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;JavaFX, Home Automation and Stable Diffusion&lt;/h3&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-QHkwT7PRKLjybRl63lDos573jpTxuQvbGd9qfMibKx4smSlIfGMa6SkzmQEggz2zylxQUS771QWNSnBAMD2WaUHcKmqgcU7HDppYNZfqcLY1hQbNlnvIQjj8O2JQHtSpg3ik9gW5KM9tK40yPj2p-1fcabUNCPXfcS8WgneFNmfxwr1_YU2a/s4032/java_fx_board.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-QHkwT7PRKLjybRl63lDos573jpTxuQvbGd9qfMibKx4smSlIfGMa6SkzmQEggz2zylxQUS771QWNSnBAMD2WaUHcKmqgcU7HDppYNZfqcLY1hQbNlnvIQjj8O2JQHtSpg3ik9gW5KM9tK40yPj2p-1fcabUNCPXfcS8WgneFNmfxwr1_YU2a/s320/java_fx_board.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;JavaFX&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;After lunch, I had the pleasure of partnering with &lt;a href=&quot;https://www.neilcsmith.net/&quot; target=&quot;_blank&quot;&gt;Neil Smith&lt;/a&gt; and &lt;a href=&quot;https://github.com/SwapnilGaikwad&quot; target=&quot;_blank&quot;&gt;Swapnil Gaikwad&lt;/a&gt; for a session on JavaFX. We discussed a range of applications, from home automation and image recognition to Java and Python integration, &lt;a href=&quot;https://tekiedit.blogspot.com/2024/03/happy-to-share-my-recently-developed.html&quot;&gt;text-to-image generative AI&lt;/a&gt;, and game development. The collaborative nature of this session highlighted the versatility of JavaFX and its potential in various domains.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Java vs Other Programming Languages&lt;/h3&gt;&lt;p&gt;In this session, we compared Java&#39;s capabilities with those of other popular programming languages like Kotlin and Python. We discussed Java&#39;s unique advantages, such as its robustness, extensive ecosystem, and long-term stability, as well as factors influencing its popularity.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Tiered Compilation&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;h4&gt;&lt;/h4&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The final session of the day tackled Java&#39;s Tiered Compilation, an advanced topic that delved into the intricacies of the Java compiler. We explored how developers can fine-tune their applications for optimal performance by understanding the secrets of Java&#39;s compilation process.&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjGFrA58RjVtRbiVU08sfppdvMI0guaDj2NJKaG3lX4nVKZMCNRKhHVxr9wiCd1DNmfQ3j5yXTXE_hoIhlUFGFGbJU3c0l4kWPTeBbSxMwN9mlFVEC9SMNnRgYziT_9p85pwgqFb7C1p8nmZoLLDccxYeMmKwdvjrek8_E3oBM0TnUuhzcTVYv/s4032/fault_injection.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjGFrA58RjVtRbiVU08sfppdvMI0guaDj2NJKaG3lX4nVKZMCNRKhHVxr9wiCd1DNmfQ3j5yXTXE_hoIhlUFGFGbJU3c0l4kWPTeBbSxMwN9mlFVEC9SMNnRgYziT_9p85pwgqFb7C1p8nmZoLLDccxYeMmKwdvjrek8_E3oBM0TnUuhzcTVYv/s320/fault_injection.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Fault Injection - another interesting topic&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;JManc was a resounding success. Every participant brought their ideas, experiences, and knowledge, contributing to a vibrant and dynamic setup. The unconference format allowed for deep dives into a wide range of topics, fostering both learning and collaboration. A big thanks to the organisers and every helper who made this event possible. JManc was a fruitful activity that everyone is definitely looking forward to it next year.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;References&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://gist.github.com/helenjoscott/70e36ba686bd47bdacbe7044c6422fae&quot; target=&quot;_blank&quot;&gt;Java Manchester Keynote&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/SwapnilGaikwad/devoxx22&quot; target=&quot;_blank&quot;&gt;JIT Compilation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.baeldung.com/jvm-tiered-compilation&quot; target=&quot;_blank&quot;&gt;Tiered Compilation in JVM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/google/guice&quot; target=&quot;_blank&quot;&gt;Guice&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gstreamer.freedesktop.org/&quot; target=&quot;_blank&quot;&gt;GStreamer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.praxislive.org/&quot; target=&quot;_blank&quot;&gt;PraxisLive&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/AlmasB/FXGL&quot;&gt;FXGL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/google-ai-edge/mediapipe&quot; target=&quot;_blank&quot;&gt;Mediapipe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Fault_injection&quot; target=&quot;_blank&quot;&gt;Fault Injection&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/9218431874363445625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/9218431874363445625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/9218431874363445625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/9218431874363445625'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/06/jmanc-28th-june-2024.html' title='[Event] JManc (28th June 2024)'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr8_4VeGiCHfL0GCDSQgTXxdfBZ7wM5a03G-TTxzA0ugZoyuruBVCePkXYYs4bIXQIWCf8-OePiADs3GckbfX4REfjbg6NTf7gLIHu7tTV6YhpGmf8Jek-w9ivNugNPpDAUbAM4WpHUR4M3YzFSMV0ySd9UkGUCUm4Z9ViYxSLS81RBn6Bxrtm/s72-c/my_topic_m.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>4th Floor, 1 Tony Wilson Pl, Manchester M15 4FN, UK</georss:featurename><georss:point>53.473164399999987 -2.2466593</georss:point><georss:box>25.162930563821142 -37.4029093 81.78339823617884 32.9095907</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-1489848031856775420</id><published>2024-03-18T23:00:00.011+00:00</published><updated>2024-05-07T12:34:07.495+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GenAI"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaFX"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Stable Diffusion User Interface for Java</title><content type='html'>&lt;p&gt;Happy to share my recently developed GUI application built entirely in Java! The app, called &lt;a href=&quot;https://github.com/tekichan/sdui4j&quot; target=&quot;_blank&quot;&gt;SDUI4J&lt;/a&gt;, serves as an intuitive platform for Text-To-Image and Image-To-Image generation, seamlessly integrated with &lt;a href=&quot;https://stability.ai/&quot; target=&quot;_blank&quot;&gt;Stable Diffusion APIs&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/tekichan/sdui4j/main/sdui4j_screenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;499&quot; data-original-width=&quot;800&quot; height=&quot;499&quot; src=&quot;https://raw.githubusercontent.com/tekichan/sdui4j/main/sdui4j_screenshot.png&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Using &lt;a href=&quot;https://openjfx.io/&quot; target=&quot;_blank&quot;&gt;JavaFX&lt;/a&gt; along with &lt;a href=&quot;https://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm&quot; target=&quot;_blank&quot;&gt;FXML&lt;/a&gt;, I&#39;ve crafted a modern and structured GUI, ensuring a user-friendly experience while tapping into Java&#39;s full potential in the realm of Generative AI.&lt;/p&gt;&lt;p&gt;I&#39;m passionate about discovering Java&#39;s capabilities in the field of AI, and this project is a testament to that. I&#39;m excited to continue exploring the convergence of Java and AI.&lt;/p&gt;&lt;p&gt;If you&#39;re interested in learning more about this project or exploring potential collaborations, feel free to reach out. Let&#39;s drive Java forward in Generative AI together!&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/1489848031856775420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/1489848031856775420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/1489848031856775420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/1489848031856775420'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/03/happy-to-share-my-recently-developed.html' title='Stable Diffusion User Interface for Java'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-8832959635126081587</id><published>2024-01-31T23:00:00.002+00:00</published><updated>2024-05-07T12:44:25.364+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>[Event] Live Coding: Functional Refactoring in Java</title><content type='html'>&lt;p&gt;Just experienced a fantastic moment at the deep-dive live coding session hosted by &lt;a href=&quot;https://youtube.com/@programmingwithmati?feature=shared&quot; target=&quot;_blank&quot;&gt;Matias Salerno&lt;/a&gt; at Auto Trader UK this evening. We were watching the live transformation of imperative legacy Java code into a concise and declarative Functional Programming style. Another interesting thing is how participants with background of JS and Python grasped more OOP concepts in Java during the session.&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQqNofJrhQcCt0l78QZxucSG1WM8yWJAmBJlmy3C-HUmDMIcCGK_rqxX7C3v1sxEdwhIATN-pnulM5TOLjTGY5MICmOI4SPYzXiymnmh5QNyB9OS-LG2IoQmBGCa_LYYw-y5xP97-F3nlR8wahAzP_7LxaVXG89_yWeK5FZet0BBOWpZ1CNX6/s800/With_%20Matias_Salerno.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;600&quot; data-original-width=&quot;800&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQqNofJrhQcCt0l78QZxucSG1WM8yWJAmBJlmy3C-HUmDMIcCGK_rqxX7C3v1sxEdwhIATN-pnulM5TOLjTGY5MICmOI4SPYzXiymnmh5QNyB9OS-LG2IoQmBGCa_LYYw-y5xP97-F3nlR8wahAzP_7LxaVXG89_yWeK5FZet0BBOWpZ1CNX6/s320/With_%20Matias_Salerno.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Matias Salerno (right)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Kudos to Manchester Java Community for organising such a hands-on session, and not to mention, the delicious refreshments!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/8832959635126081587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/8832959635126081587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/8832959635126081587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/8832959635126081587'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/05/event-live-coding-functional.html' title='[Event] Live Coding: Functional Refactoring in Java'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQqNofJrhQcCt0l78QZxucSG1WM8yWJAmBJlmy3C-HUmDMIcCGK_rqxX7C3v1sxEdwhIATN-pnulM5TOLjTGY5MICmOI4SPYzXiymnmh5QNyB9OS-LG2IoQmBGCa_LYYw-y5xP97-F3nlR8wahAzP_7LxaVXG89_yWeK5FZet0BBOWpZ1CNX6/s72-c/With_%20Matias_Salerno.jpeg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>1 Tony Wilson Pl, Manchester M15 4FN, UK</georss:featurename><georss:point>53.4731245 -2.246743</georss:point><georss:box>33.122851441917376 -37.402993000000009 73.823397558082618 32.909507000000005</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-6729100027224268797</id><published>2024-01-11T22:35:00.002+00:00</published><updated>2024-01-16T22:42:12.107+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Event: Manchester Coding Dojo</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEyHgAJtTIdO0WjJHSPEARgJB6K-kmCRQf8GRLIGwAtCjiYGbDH_Tz-r7bpLeskI2BMEWA6hPA4iyf_jnceLPCvaxA2z7hYVv3e-2fn3CnF9JMELB_NKpJKJjEP3-P8DoNZPrWp5rSQmXW4CYz76zvrT3Y8BEZktFiQCM6k1cg4kyUma_xFfHr/s1920/CodeDojo.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1440&quot; data-original-width=&quot;1920&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEyHgAJtTIdO0WjJHSPEARgJB6K-kmCRQf8GRLIGwAtCjiYGbDH_Tz-r7bpLeskI2BMEWA6hPA4iyf_jnceLPCvaxA2z7hYVv3e-2fn3CnF9JMELB_NKpJKJjEP3-P8DoNZPrWp5rSQmXW4CYz76zvrT3Y8BEZktFiQCM6k1cg4kyUma_xFfHr/s320/CodeDojo.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Coding Dojo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Thank you to &lt;a href=&quot;https://www.codurance.com/&quot; target=&quot;_blank&quot;&gt;Codurance&lt;/a&gt; for organising Coding Dojo to learn &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot; target=&quot;_blank&quot;&gt;Test Driven Development&lt;/a&gt;. We did not only taste TDD and JS but also explored &lt;a href=&quot;https://copilot.microsoft.com/&quot; target=&quot;_blank&quot;&gt;Copilot&lt;/a&gt;, Team Collaboration, Project Management, Methodology, etc. Networking seemed endless after the talk. No wonder why &lt;a href=&quot;https://www.manchesterdigital.com/&quot; target=&quot;_blank&quot;&gt;this city&lt;/a&gt; became a hub of talents.&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijY2jtCq46dBC-Jx_pn5GfOgOT_Kc0VPJwC_cXjY1X_x4ZICBGqVjC2dC7_XIDb-G13zGWVpjW5uelBSyJp1oHsf-Gv8NWT97sWSWWbhX25zk5My1Ayxch6UNV8hHSl245w00fmK6QM0LoAfHyZfecfXlS39310F67ceapYDiPmTeNhpgexoYi/s4032/Department_Bonded_Warehouse.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijY2jtCq46dBC-Jx_pn5GfOgOT_Kc0VPJwC_cXjY1X_x4ZICBGqVjC2dC7_XIDb-G13zGWVpjW5uelBSyJp1oHsf-Gv8NWT97sWSWWbhX25zk5My1Ayxch6UNV8hHSl245w00fmK6QM0LoAfHyZfecfXlS39310F67ceapYDiPmTeNhpgexoYi/s320/Department_Bonded_Warehouse.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Outside Department Bonded Warehouse&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDTSYX_hulOCuEyoYbviuaqv7r6wRAsy51ayzQQ7UBDNF4orR6SsAe_FWP31BIW_JF-u_5y1HbZDDD1g08Ht1r27EIdQcphxH8r9bGQyoqUXsZh-UFBrKRB4pm7f9zqZX2zt-QiHbSjm-wnyn-1_LPEJcpb_WgdoGlwQXRB0eq27PzshYUOtYV/s4032/Inside_DB_Warehouse.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDTSYX_hulOCuEyoYbviuaqv7r6wRAsy51ayzQQ7UBDNF4orR6SsAe_FWP31BIW_JF-u_5y1HbZDDD1g08Ht1r27EIdQcphxH8r9bGQyoqUXsZh-UFBrKRB4pm7f9zqZX2zt-QiHbSjm-wnyn-1_LPEJcpb_WgdoGlwQXRB0eq27PzshYUOtYV/s320/Inside_DB_Warehouse.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Inside Department Bonded Warehouse&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/6729100027224268797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/6729100027224268797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6729100027224268797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6729100027224268797'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2024/01/event-manchester-coding-dojo.html' title='Event: Manchester Coding Dojo'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEyHgAJtTIdO0WjJHSPEARgJB6K-kmCRQf8GRLIGwAtCjiYGbDH_Tz-r7bpLeskI2BMEWA6hPA4iyf_jnceLPCvaxA2z7hYVv3e-2fn3CnF9JMELB_NKpJKJjEP3-P8DoNZPrWp5rSQmXW4CYz76zvrT3Y8BEZktFiQCM6k1cg4kyUma_xFfHr/s72-c/CodeDojo.JPG" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>18 Lower Byrom St, Manchester M3 4AP, UK</georss:featurename><georss:point>53.4778198 -2.2561198</georss:point><georss:box>25.167585963821153 -37.4123698 81.788053636178844 32.9001302</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-3212016244929821364</id><published>2023-12-25T22:22:00.001+00:00</published><updated>2024-01-16T22:30:34.393+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Probability"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Monty Hall Problem Simulation</title><content type='html'>&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;This is a simulation of Monty Hall Problem.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;https://en.wikipedia.org/wiki/Monty_Hall_problem&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;Suppose you&#39;re on a game show, and you&#39;re given the choice of three doors: Behind one door is a car; behind the others, goats.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;You pick a door, say No. 1, and the host, who knows what&#39;s behind the doors, opens another door, say No. 3, which has a goat.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;He then says to you, &quot;Do you want to pick door No. 2?&quot; Is it to your advantage to switch your choice?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4c1130; font-family: courier;&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;color: #2b00fe;&quot;&gt;import&lt;/span&gt; random&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;NUM_DOORS = 3&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# three doors in the game&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;MAX_ROUND = 10000&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# number of rounds for statistics&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;change_win_count = 0&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;color: #2b00fe;&quot;&gt;for&lt;/span&gt; _ &lt;span style=&quot;color: #2b00fe;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #ffa400;&quot;&gt;range&lt;/span&gt;(MAX_ROUND):&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# randomly to put a car behind a door&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; car_door = random.&lt;span style=&quot;color: #ffa400;&quot;&gt;randint&lt;/span&gt;(0, NUM_DOORS - 1)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# the player firstly selects a door&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; player_first_guess = random.&lt;span style=&quot;color: #ffa400;&quot;&gt;randint&lt;/span&gt;(0, NUM_DOORS - 1)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# the host opens another door without a car&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; host_door = random.&lt;span style=&quot;color: #ffa400;&quot;&gt;choice&lt;/span&gt;([&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; x &lt;span style=&quot;color: #2b00fe;&quot;&gt;for&lt;/span&gt; x &lt;span style=&quot;color: #2b00fe;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #ffa400;&quot;&gt;range&lt;/span&gt;(NUM_DOORS) &lt;span style=&quot;color: #2b00fe;&quot;&gt;if&lt;/span&gt; x != player_first_guess &lt;span style=&quot;color: #2b00fe;&quot;&gt;and&lt;/span&gt; x != car_door&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; ])&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# the option if the player changes his mind&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; player_second_guess = random.&lt;span style=&quot;color: #ffa400;&quot;&gt;choice&lt;/span&gt;([&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; x &lt;span style=&quot;color: #2b00fe;&quot;&gt;for&lt;/span&gt; x &lt;span style=&quot;color: #2b00fe;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #ffa400;&quot;&gt;range&lt;/span&gt;(NUM_DOORS) &lt;span style=&quot;color: #2b00fe;&quot;&gt;if&lt;/span&gt; x != player_first_guess &lt;span style=&quot;color: #2b00fe;&quot;&gt;and&lt;/span&gt; x != host_door&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; ])&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;# count the win if the second guess is correct&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #2b00fe;&quot;&gt;if&lt;/span&gt; player_second_guess == car_door:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; change_win_count += 1&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #274e13; font-family: courier;&quot;&gt;# Print the statistics result&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;print(&quot;&lt;span style=&quot;color: #800180;&quot;&gt;Win percentage if you switch the choice is {r:.2f}%&lt;/span&gt;&quot;.&lt;span style=&quot;color: #ffa400;&quot;&gt;format&lt;/span&gt;(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; r=(change_win_count * 100) / MAX_ROUND))&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/3212016244929821364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/3212016244929821364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3212016244929821364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3212016244929821364'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2023/12/monty-hall-problem-simulation.html' title='Monty Hall Problem Simulation'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-2238054358068386026</id><published>2023-09-08T12:47:00.002+00:00</published><updated>2023-12-26T13:14:45.287+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cheshire"/><category scheme="http://www.blogger.com/atom/ns#" term="History"/><category scheme="http://www.blogger.com/atom/ns#" term="National Trust"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><category scheme="http://www.blogger.com/atom/ns#" term="Travel"/><title type='text'>Small Step, Giant Leap</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtySiZmwucc13TtN7-L1ukABGmFTzaV5Rz-kW6U1C5ZsG2otGX5A5_rdwFaGchWVcR7AXZs77E92z40IdkGp4ebvvtpKDWJNCFT5m_jynfBf1DnlwD6KkBuE4w9c88BW1Sd1vLUgxlCoOOIlRIce-4MAilIlF_QA6eWf-7ftgtgQWFNr3zlY2Z/s828/1694384811395.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;621&quot; data-original-width=&quot;828&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtySiZmwucc13TtN7-L1ukABGmFTzaV5Rz-kW6U1C5ZsG2otGX5A5_rdwFaGchWVcR7AXZs77E92z40IdkGp4ebvvtpKDWJNCFT5m_jynfBf1DnlwD6KkBuE4w9c88BW1Sd1vLUgxlCoOOIlRIce-4MAilIlF_QA6eWf-7ftgtgQWFNr3zlY2Z/s320/1694384811395.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Looms in Quarry Bank&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Check out these two antique looms displayed in Quarry Bank of National Trust&amp;nbsp;&lt;/p&gt;&lt;p&gt;Although they look similar, the left one comes with a tiny gadget called Flying Shuttle. This small improvement dramatically increased the productivity over tenfold. John Kay might not have even imagined how much his invention would become a catalyst for the Industrial Revolution and have profound effects on the world history.&amp;nbsp;&lt;/p&gt;&lt;p&gt;You know what? Keep dreaming, innovating, and moving ahead. You never know your next small step could be a giant leap for mankind.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/2238054358068386026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/2238054358068386026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/2238054358068386026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/2238054358068386026'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2023/09/small-step-giant-leap.html' title='Small Step, Giant Leap'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtySiZmwucc13TtN7-L1ukABGmFTzaV5Rz-kW6U1C5ZsG2otGX5A5_rdwFaGchWVcR7AXZs77E92z40IdkGp4ebvvtpKDWJNCFT5m_jynfBf1DnlwD6KkBuE4w9c88BW1Sd1vLUgxlCoOOIlRIce-4MAilIlF_QA6eWf-7ftgtgQWFNr3zlY2Z/s72-c/1694384811395.jpeg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Styal Rd, Styal, Wilmslow SK9 4HP, UK</georss:featurename><georss:point>53.345190500000008 -2.2469358</georss:point><georss:box>25.034956663821163 -37.4031858 81.655424336178854 32.9093142</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-6741892293436938987</id><published>2023-09-06T13:04:00.000+00:00</published><updated>2023-09-06T13:04:26.785+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Reading"/><title type='text'>Pluses and Minuses: How Math Solves Our Problems</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.amazon.co.uk/Pluses-Minuses-Math-Solves-Problems/dp/0143134582&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;499&quot; data-original-width=&quot;332&quot; height=&quot;499&quot; src=&quot;https://m.media-amazon.com/images/I/41G869uQ9xL._SX330_BO1,204,203,200_.jpg&quot; width=&quot;332&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.amazon.co.uk/Pluses-Minuses-Math-Solves-Problems/dp/0143134582&quot; target=&quot;_blank&quot;&gt;Pluses and Minuses: How Math Solves Our Problems&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&quot;Pluses and Minuses: How Math Solves Our Problems&quot; by&amp;nbsp;Stefan Buijsman is a thought provoking book about the role of Mathematics in our daily life.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The book starts with examples of Google Map and Netflix to present that Maths is not only an abstract exercise in a classroom but also closely related with us everyday. Following that, it describes how human being interpret Maths and its development along the history in various cultures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The later chapters demonstrate about the history and applications of two advanced topics, Calculus and Probability. The last topic is about graph theory and explores its usage in navigation, streaming service, cancer treatment and social media.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last chapter is not only a conclusion but also rethinks the nature of Maths and how we correctly and mistakenly apply it in our daily experiences.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While the book contains a few content describing Maths formula and theorems in this book, it primarily focuses on the interactions between Maths and human being, including historical context, cultural significance, and practical uses. They sound quite engaging. They also reflect how deeply the author understands Maths in the position of our society.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One more thing I learnt from this book is how to illustrate some complex concept, e.g. a brand new system solution, to audience regardless of their background. Like this book, we can start an immediate example which is related with the concept, then trace what if the concept is not in place, some stories of its development (not a big bang, not a surprise) and behind the scenes, and finally bring out how the complication leads opportunity. This approach is to package the new concept to sound easier, familiar and more pleasant.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In summary, this book is such captivating and accessible that effectively bridges the gap between Maths and our everyday life. The author is able to connect mathematical concepts with real-world examples, historical context, and cultural significance makes this book a compelling read for anyone interested in understanding the pervasive role of mathematics in our society.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/6741892293436938987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/6741892293436938987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6741892293436938987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/6741892293436938987'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2023/09/pluses-and-minuses-how-math-solves-our.html' title='Pluses and Minuses: How Math Solves Our Problems'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-926331469206168122</id><published>2023-08-17T22:04:00.003+00:00</published><updated>2023-09-06T11:51:57.734+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><category scheme="http://www.blogger.com/atom/ns#" term="Reading"/><title type='text'>Event: Developer Productivity Engineering: What&#39;s in it for me?</title><content type='html'>&lt;p&gt;Manchester Java Community hosted another great session in &lt;a href=&quot;https://www.thoughtworks.com/&quot; target=&quot;_blank&quot;&gt;Thoughtworks&lt;/a&gt;. The speaker is &lt;a href=&quot;https://trishagee.com/&quot; target=&quot;_blank&quot;&gt;Trisha Gee&lt;/a&gt;, co-author of the renowned book &lt;a href=&quot;https://www.amazon.co.uk/Head-First-Java-3rd-Brain-Friendly/dp/1491910771&quot; target=&quot;_blank&quot;&gt;Head First Java&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The speaker pointed out that the productivity of developers did not mainly come from individual developer themselves but from the organisation which offers productive environments or not. The factor includes work space size, quietness, privateness, any diversion or needless interruption.&lt;/p&gt;&lt;p&gt;On technology side, productivity can be improved by consistency and reliability of builds. Very fast feedback can improve productivity and quality, thus increase revenue, reduce cost and improve brand.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;References:&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://trishagee.com/presentations/developer-productivity-engineering-whats-in-it-for-me/&quot; target=&quot;_blank&quot;&gt;DEVELOPER PRODUCTIVITY ENGINEERING: WHAT’S IN IT FOR ME?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://tidelift.com/subscription/managed-open-source-survey&quot; target=&quot;_blank&quot;&gt;The 2019 Tidelift managed open source survey results&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.amazon.co.uk/Peopleware-Productive-Projects-Tom-DeMarco/dp/0932633439&quot; target=&quot;_blank&quot;&gt;Peopleware: Productive Projects and Teams&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://trace.tennessee.edu/cgi/viewcontent.cgi?article=1010&amp;amp;context=utk_harlan&quot; target=&quot;_blank&quot;&gt;Software Productivity&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.amazon.co.uk/Goal-Process-Ongoing-Improvement/dp/0884271951&quot; target=&quot;_blank&quot;&gt;The Goal: A Process of Ongoing Improvement&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://docs.gradle.org/current/userguide/performance.html&quot; target=&quot;_blank&quot;&gt;Improve the Performance of Gradle Builds&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://builds.gradle.org/project/Gradle&quot; target=&quot;_blank&quot;&gt;CI fanout&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gradle.com/blog/netflix-pursues-soft-devex-goals-with-hard-devprod-metrics-using-test-distribution/&quot; target=&quot;_blank&quot;&gt;Netflix Pursues Soft DevEx Goals with Hard DevProd Metrics using Test Distribution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://arxiv.org/pdf/1810.05286.pdf&quot; target=&quot;_blank&quot;&gt;Predictive Test Selection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://scans.gradle.com/&quot; target=&quot;_blank&quot;&gt;Get started with Build Scan for Gradle, Apache Maven, and sbt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtube.com/playlist?list=PLLQbIfXVLZqH4Ag5Og8VXYpJV9AworvXm&quot; target=&quot;_blank&quot;&gt;Using the Build Scan Service to Troubleshoot Build Failures&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://mcminn.info/publications/Parry2022a.pdf&quot; target=&quot;_blank&quot;&gt;Surveying the Developer Experience of Flaky Tests&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=vHBzZHE4tJ0&quot; target=&quot;_blank&quot;&gt;5 Reasons Your Automated Tests Fail&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.amazon.co.uk/Release-Design-Deploy-Production-Ready-Software/dp/1680502395/ref=pd_lpo_sccl_1/261-6846402-0747155?pd_rd_w=wkUZJ&amp;amp;content-id=amzn1.sym.efc89c20-c5a9-4620-b6cd-2f4e51bac956&amp;amp;pf_rd_p=efc89c20-c5a9-4620-b6cd-2f4e51bac956&amp;amp;pf_rd_r=40TPBV3Q88FFT6GQ4SAS&amp;amp;pd_rd_wg=TmkUY&amp;amp;pd_rd_r=0eb2f7a1-af43-4234-84d5-d37fe66bc104&amp;amp;pd_rd_i=1680502395&amp;amp;psc=1&quot; target=&quot;_blank&quot;&gt;Release It! Design and Deploy Production–Ready Software&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1eUv58fqCVy23YvD4RwJsKtKZez_wfU2AT6rtSXbu3TWyBGYYxm-RPTTP6yy0cFdmPWgHgnn1Rb3QZll4M5Mt5-qsU6QgA3noMn45DJrY-lanft46_pIuoP_DmaG3qP1b8t_zrfOVNIYdvwpTW_Woz6IHhvjw06TVQXc-6Xh_BCNjDvs6AARq/s2662/Trisha_and_Teki.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2662&quot; data-original-width=&quot;2662&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1eUv58fqCVy23YvD4RwJsKtKZez_wfU2AT6rtSXbu3TWyBGYYxm-RPTTP6yy0cFdmPWgHgnn1Rb3QZll4M5Mt5-qsU6QgA3noMn45DJrY-lanft46_pIuoP_DmaG3qP1b8t_zrfOVNIYdvwpTW_Woz6IHhvjw06TVQXc-6Xh_BCNjDvs6AARq/s320/Trisha_and_Teki.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Trisha Gee and Head First Java&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcDvvY-nUnpvbnsHojrCEdkE76Si4Zwb0ltC_T1ncUxKkAH-9CBTim06Px9X7gLdoeP7ZxxK6o990ptzAmvXmrHM2ji5T8Q7bpR7kVosdvJpnOR3J2bMNp0Yrn7EeLPkHUu7mQOjwhh8P4u9Iv-dkf4op7T0uCyKV2qy_GQ1XWhRbRzAECE5aw/s3905/author_signature.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2929&quot; data-original-width=&quot;3905&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcDvvY-nUnpvbnsHojrCEdkE76Si4Zwb0ltC_T1ncUxKkAH-9CBTim06Px9X7gLdoeP7ZxxK6o990ptzAmvXmrHM2ji5T8Q7bpR7kVosdvJpnOR3J2bMNp0Yrn7EeLPkHUu7mQOjwhh8P4u9Iv-dkf4op7T0uCyKV2qy_GQ1XWhRbRzAECE5aw/s320/author_signature.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Author Signature&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo7bvcOsSGm2SbQduYaypSwdpxqEIsom5FOqdzMPsrYwFjejqQU_rZu2vv6htni4b0j0tNusclkyBN-evZ8LYBQaTIsyYuGSmjHV6yr66GCa94X79ADpXHjtmlNfBJFFXhNhdxcMmQDLeiDe6XMnDfrNL2XlQGb7BUsewsE2NQMfS_kC1XfMnS/s4032/In_ThoughtWorks.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo7bvcOsSGm2SbQduYaypSwdpxqEIsom5FOqdzMPsrYwFjejqQU_rZu2vv6htni4b0j0tNusclkyBN-evZ8LYBQaTIsyYuGSmjHV6yr66GCa94X79ADpXHjtmlNfBJFFXhNhdxcMmQDLeiDe6XMnDfrNL2XlQGb7BUsewsE2NQMfS_kC1XfMnS/s320/In_ThoughtWorks.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Inside Thoughtworks&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBfVPVpWasjgTblmoRRrLYeMUATlj_xNYZ5K00ex9wImc9RoH899tq24bPKj32gHy8H-OigjmuxuXeL0PWt0UiDaMldubD4XWdxlOZLi8pAIbq9ah43Oj0IR45xVqxbVyJOvJoLr3j55tdjWo1OB_4l5biFFqsa72z7maDb7dCSkn_9JiTZWoa/s4032/In_ThoughtWorks_2.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBfVPVpWasjgTblmoRRrLYeMUATlj_xNYZ5K00ex9wImc9RoH899tq24bPKj32gHy8H-OigjmuxuXeL0PWt0UiDaMldubD4XWdxlOZLi8pAIbq9ah43Oj0IR45xVqxbVyJOvJoLr3j55tdjWo1OB_4l5biFFqsa72z7maDb7dCSkn_9JiTZWoa/s320/In_ThoughtWorks_2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Inside Thoughtworks&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqFWlIQ-WD1XAxrJ6IFHKQICkyQLFdGFzE64M6Kdk5AdoX0lD6V0BndFbRNlFvKjpbXvYgqCL4LJbDxcRRDS7VZS5RqmYO_gizoukuZPJatq4cnFCqfBm0m5qAQ8GYCozOg1fby9Xf7vLFtYtwkK48pNeOqjz1dakmmpQk0DfLORZpQJIesqsj/s4032/Out_ThoughtWorks.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqFWlIQ-WD1XAxrJ6IFHKQICkyQLFdGFzE64M6Kdk5AdoX0lD6V0BndFbRNlFvKjpbXvYgqCL4LJbDxcRRDS7VZS5RqmYO_gizoukuZPJatq4cnFCqfBm0m5qAQ8GYCozOg1fby9Xf7vLFtYtwkK48pNeOqjz1dakmmpQk0DfLORZpQJIesqsj/s320/Out_ThoughtWorks.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Outside Thoughtworks&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/926331469206168122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/926331469206168122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/926331469206168122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/926331469206168122'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2023/08/event-developer-productivity.html' title='Event: Developer Productivity Engineering: What&#39;s in it for me?'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1eUv58fqCVy23YvD4RwJsKtKZez_wfU2AT6rtSXbu3TWyBGYYxm-RPTTP6yy0cFdmPWgHgnn1Rb3QZll4M5Mt5-qsU6QgA3noMn45DJrY-lanft46_pIuoP_DmaG3qP1b8t_zrfOVNIYdvwpTW_Woz6IHhvjw06TVQXc-6Xh_BCNjDvs6AARq/s72-c/Trisha_and_Teki.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>4, Federation House, 2 Federation St, Manchester M4 4BF, UK</georss:featurename><georss:point>53.4860507 -2.239902</georss:point><georss:box>25.175816863821154 -37.396152 81.796284536178845 32.916348</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-3876796924107064453</id><published>2023-07-13T22:25:00.003+00:00</published><updated>2023-07-13T22:51:11.915+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Career"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><title type='text'>Event: Be a better Java developer, learn faster and get more results!</title><content type='html'>&lt;p&gt;I joined a meetup brought by &lt;a href=&quot;https://manchesterjavacommunity.org/&quot; target=&quot;_blank&quot;&gt;Manchester Java Community&lt;/a&gt; at &lt;a href=&quot;https://www.roku.com/&quot; target=&quot;_blank&quot;&gt;Roku&lt;/a&gt;&#39;s office. The topic is&amp;nbsp;&lt;b&gt;Be a better Java developer, learn faster and get more results!&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkgnThjnkIPI_IQoP15Cnj3-XGzzDL8GaxTcsvVRmP0rmgQV-sRpP8Xgu1M1LWbk4kPjFjyqFenmVGYYeiuwEDr2pDu3jnne4Y_iDArKWGFkjlXmhhdBr5uoTF6kaGyvdAt03edzuxiEBMY9yHL13ODJZt7Li8jWfYNXHsicp9HnJl1aOWcTCo/s1024/Floor12_One_CircleSquare.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;269&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkgnThjnkIPI_IQoP15Cnj3-XGzzDL8GaxTcsvVRmP0rmgQV-sRpP8Xgu1M1LWbk4kPjFjyqFenmVGYYeiuwEDr2pDu3jnne4Y_iDArKWGFkjlXmhhdBr5uoTF6kaGyvdAt03edzuxiEBMY9yHL13ODJZt7Li8jWfYNXHsicp9HnJl1aOWcTCo/s16000/Floor12_One_CircleSquare.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;The speech started with the dynamic trios:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Fire your neurons: learn by doing&lt;/li&gt;&lt;li&gt;Force to practise&lt;/li&gt;&lt;li&gt;Frequent action&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The captivating speaker also shared back stories of recruitment and his own secret of Reputation Formula, i.e.,&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #274e13; font-family: courier;&quot;&gt;Career Reputation = (Focus * Visibility * Action * Skill [XP] * Giver * Responsibility * Consistency) / ((Me-me-me) * Lies^2 * Difficult)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cUzMIBvtVvXVgrerlCUGcOlsx4djZWPRYwnd2Td1OVOdN14z_69BSjnLCMNT03ToOyD_bECAyImElTS_jBJhXgPfFjPM2TuXMPEZzwkybBUEt5vlokUv7f9dn0oCBV8dUlwJLxQcgv69KUDqdb2pPsq_Ul2FgdHDnSGTyYGCbItKyf-fao6Z/s1024/meetup_230713.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;552&quot; data-original-width=&quot;1024&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cUzMIBvtVvXVgrerlCUGcOlsx4djZWPRYwnd2Td1OVOdN14z_69BSjnLCMNT03ToOyD_bECAyImElTS_jBJhXgPfFjPM2TuXMPEZzwkybBUEt5vlokUv7f9dn0oCBV8dUlwJLxQcgv69KUDqdb2pPsq_Ul2FgdHDnSGTyYGCbItKyf-fao6Z/s320/meetup_230713.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Q&amp;amp;A session, we delved into burning questions like the future of AI in developer jobs and whether Java will be the next COBOL.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thank you very much to&amp;nbsp;&lt;a href=&quot;https://twitter.com/brjavaman&quot; target=&quot;_blank&quot;&gt;Bruno Souza&lt;/a&gt; for his fascinating speech and inspirational career advice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJtSvyoBDVrCArcjhtDVVQipIe7k95YoL3j0atMcfwN0vHZjvMYMLFZZUjo5rlbrJfTtvE4M3trfHXW5ar5ATsPcAlNVVhzIKxOV_P5Qx45rCW_d9xu5R85Q2Bln7gAaeRDNhiBn0oLK8kbkJ0kWHz-FetbalUnYVbMh8zIoyUwESebXD3fAPm/s1024/Bruno_Souza.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJtSvyoBDVrCArcjhtDVVQipIe7k95YoL3j0atMcfwN0vHZjvMYMLFZZUjo5rlbrJfTtvE4M3trfHXW5ar5ATsPcAlNVVhzIKxOV_P5Qx45rCW_d9xu5R85Q2Bln7gAaeRDNhiBn0oLK8kbkJ0kWHz-FetbalUnYVbMh8zIoyUwESebXD3fAPm/s320/Bruno_Souza.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/3876796924107064453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/3876796924107064453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3876796924107064453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3876796924107064453'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2023/07/event-be-better-java-developer-learn.html' title='Event: Be a better Java developer, learn faster and get more results!'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkgnThjnkIPI_IQoP15Cnj3-XGzzDL8GaxTcsvVRmP0rmgQV-sRpP8Xgu1M1LWbk4kPjFjyqFenmVGYYeiuwEDr2pDu3jnne4Y_iDArKWGFkjlXmhhdBr5uoTF6kaGyvdAt03edzuxiEBMY9yHL13ODJZt7Li8jWfYNXHsicp9HnJl1aOWcTCo/s72-c/Floor12_One_CircleSquare.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>3 Symphony Park, Manchester M1 7FS英國</georss:featurename><georss:point>53.473158299999987 -2.2392851</georss:point><georss:box>25.162924463821142 -37.395535100000004 81.783392136178833 32.916964899999996</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-5089282621232507625</id><published>2023-06-27T09:10:00.003+00:00</published><updated>2023-06-27T09:11:49.558+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cyber Security"/><category scheme="http://www.blogger.com/atom/ns#" term="Ethical Hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>Ethical Hacking 101</title><content type='html'>&lt;p&gt;In today&#39;s digital landscape, software security is paramount. To safeguard applications from cyber attacks, developers must embrace Ethical Hacking—an innovative approach that empowers them to uncover vulnerabilities and strengthen security measures.&lt;/p&gt;&lt;p&gt;Ethical Hacking involves adopting the mindset of malicious hackers to identify weaknesses and fortify defences against unauthorised access, data breaches, and other threats. By integrating this practice into the coding process, developers gain valuable insights, proactively mitigating risks and creating more robust and secure software systems.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;TextRun SCXO243379094 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;I took a basic lesson from &lt;a href=&quot;https://snyk.io/&quot; target=&quot;_blank&quot;&gt;Snyk&lt;/a&gt; about Ethical Hacking, which helps me consider security measures in coding.&lt;/span&gt;&lt;span class=&quot;EOP SCXO243379094 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;OutlineElement Ltr BCX0 SCXO224470427&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;h2 style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Process&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Plan &amp;amp; Prepare (&lt;/span&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-US&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-US&quot;&gt;Reconnaissance phase)&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Scan &amp;amp; Enumerate&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Exploit&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Analyse &amp;amp; Report&lt;/li&gt;&lt;li&gt;Communicate &amp;amp; Collaborate&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Continuous Education &amp;amp; Professional Development&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr BCX0 SCXO224470427&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;h2 style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Tools&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;div style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://nmap.org/&quot; target=&quot;_blank&quot;&gt;Nmap&lt;/a&gt;: network scanner&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-US&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;https://portswigger.net/burp&quot; target=&quot;_blank&quot;&gt;Burp Suite&lt;/a&gt;: security testing of web applications&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.metasploit.com/&quot;&gt;Metasploit&lt;/a&gt;: penetration tests&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.wireshark.org/&quot; target=&quot;_blank&quot;&gt;Wireshark&lt;/a&gt;: packet analyser&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.maltego.com/&quot; target=&quot;_blank&quot;&gt;Maltego&lt;/a&gt;: intelligence and forensics,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-US&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-US&quot;&gt;graphical link analysis for real-time data mining.&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-US&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;https://snyk.io/&quot; target=&quot;_blank&quot;&gt;Snyk&lt;/a&gt;: scan, prioritize, and fix security vulnerabilities of codes&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.openwall.com/john/&quot; target=&quot;_blank&quot;&gt;John the Ripper&lt;/a&gt;: password cracking tool&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.wappalyzer.com/&quot; target=&quot;_blank&quot;&gt;Wappalyzer&lt;/a&gt;: Find out what websites are built with&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.kali.org/&quot; target=&quot;_blank&quot;&gt;Kali linux&lt;/a&gt;: for digital forensics and penetration testing&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;ul class=&quot;BulletListStyle1 SCXO224470427 BCX0&quot; role=&quot;list&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; cursor: text; font-family: verdana; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; text-align: left; user-select: text;&quot;&gt;&lt;li&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;h2 style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Best Practices&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: verdana; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: verdana; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Obtain permissions before conducting any testing&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: verdana; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Follow all relevant laws and regulations&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Do not use tools or techniques that could cause damage or disruption&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Use a risk-based approach&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Document your findings and provide a report to the owner&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;NormalTextRun SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: inherit; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;h2 style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;XSS (Cross-Site Scripting)&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 14.6667px; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span face=&quot;Calibri, sans-serif&quot;&gt;Cross-Site Scripting attacks are a type of injection, in which malicious scripts are injected into otherwise benign and trusted websites.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Example: Try to fill in&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;[Totally Safe Link]&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;(javascript&amp;amp;#58document;cookieStore.g et(&#39;super_secret_cookie&#39;8#41;.then((e&amp;amp;#&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;41; =&amp;gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;{document.getElementsByClassName(&#39;v-text-field _slot&#39;8#41;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;[1].childNodes[1].value=&#39;${e.namel = $&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;{e.value}&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;*;document.getElementsByClassName(&#39;v&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;-text-field slot&#39;8#41;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;[1].childNodes [1].dispatchEvent(new&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Event (&#39;input&#39;&amp;amp;#41;8#41;;document.getEl ementsByClassName&#39;v-text-field _slot&#39;8#41;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;[1].nextElementSibling.childNodes[0].clic k(8#41;}8#41;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px 0px 0px 24px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;NormalTextRun SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: inherit; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Then conduct &lt;a href=&quot;https://learn.snyk.io/lessons/prototype-pollution/javascript/&quot; target=&quot;_blank&quot;&gt;Prototype Pollution&lt;/a&gt;, says caused by &lt;a href=&quot;https://lodash.com/&quot; target=&quot;_blank&quot;&gt;lodash&lt;/a&gt;. See detail at&lt;/span&gt;&lt;span class=&quot;TextRun MacChromeBold SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://github.com/Kirill89/prototype-pollution-explained/blob/master/README.md&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://github.com/Kirill89/prototype-pollution-explained/blob/master/README.md&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;NormalTextRun SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: inherit; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;h2 style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Path Traversal&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 14.6667px; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;span face=&quot;Calibri, sans-serif&quot;&gt;A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 14.6667px; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;span face=&quot;Calibri, sans-serif&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;div style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Example: Send a request like &lt;/span&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier; font-size: x-small;&quot;&gt;/82e82e/82e82e/82e82/8282/82e%2e/etc/passwd&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt; , due to some libraries like &lt;a href=&quot;https://security.snyk.io/package/npm/st/0.2.4&quot; target=&quot;_blank&quot;&gt;st@0.2.4&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;a href=&quot;https://security.snyk.io/package/npm/st/0.2.4&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;h2 style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; font-size: 12px; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: left; user-select: text; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Vulnerability Disclosure Program &amp;amp; Bug Bounty&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;https://www.hackerone.com/&quot; target=&quot;_blank&quot;&gt;Hackerone&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.bugcrowd.com/&quot; target=&quot;_blank&quot;&gt;Bugcrowd&lt;/a&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.intigriti.com/&quot; target=&quot;_blank&quot;&gt;Intigriti&lt;/a&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Promote responsible disclosure and incentivizing bug hunting&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Identify and address security weaknesses before they can be exploited by malicious actors&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Improve the overall security of software and systems&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Include scope and objectives, methodology, findings and vulnerabilities, risk assessment and severity ratings, and recommendations for mitigation&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Consider honesty, accuracy, confidentiality. and respect for 3rd-party agreement&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;/span&gt;&lt;span class=&quot;LineBreakBlob BlobObject DragDrop SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;WordVisiCarriageReturn_MSFontService, Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;span class=&quot;SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text; white-space: pre;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br class=&quot;SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text; white-space: pre;&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;Resources&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; text-align: left;&quot;&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://owasp.org/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://owasp.org/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://owasp.org/www-project-juice-shop/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://owasp.org/www-project-juice-shop/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://bugcrowd.com/agilebits&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://bugcrowd.com/agilebits&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://tryhackme.com/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://tryhackme.com/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://www.hackthebox.com/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://www.hackthebox.com/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://www.devseccon.com/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://www.devseccon.com/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://github.com/snyk-workshops/EH-Patch-Todo-App&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://github.com/snyk-workshops/EH-Patch-Todo-App&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://learn.snyk.io/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://learn.snyk.io/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://snyk.io/blog/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://snyk.io/blog/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://snyk.io/ethical-hacking-resources/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://snyk.io/ethical-hacking-resources/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://twitter.com/snyksec&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://twitter.com/snyksec&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://www.youtube.com/snyksec&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://www.youtube.com/snyksec&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://docs.snyk.io/snyk-cli/install-the-snyk-cli&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://docs.snyk.io/snyk-cli/install-the-snyk-cli&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://snyk.io/platform/ide-plugins&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://snyk.io/platform/ide-plugins&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://snyk-chat-goof.snykchallenge.io/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://snyk-chat-goof.snykchallenge.io/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://snyk.io/advisor/&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://snyk.io/advisor/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;Hyperlink SCXO224470427 BCX0&quot; href=&quot;https://security.snyk.io/vuln/SNYK-JS-SIMPLEMARKDOWN-173788&quot; rel=&quot;noreferrer noopener&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;TextRun SCXO224470427 BCX0&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;&quot; xml:lang=&quot;EN-GB&quot;&gt;https://security.snyk.io/vuln/SNYK-JS-SIMPLEMARKDOWN-173788&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;EOP SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span face=&quot;Calibri, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span color=&quot;rgba(0, 0, 0, 0)&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;OutlineElement Ltr SCXO224470427 BCX0&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Segoe UI Web&amp;quot;, Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;&quot;&gt;&lt;p class=&quot;Paragraph SCXO224470427 BCX0&quot; lang=&quot;EN-GB&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;&quot; xml:lang=&quot;EN-GB&quot;&gt;&lt;span class=&quot;TextRun EmptyTextRun SCXO224470427 BCX0&quot; color=&quot;windowtext&quot; data-contrast=&quot;auto&quot; face=&quot;Calibri, sans-serif&quot; style=&quot;-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 17px; margin: 0px; padding: 0px; user-select: text;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/5089282621232507625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/5089282621232507625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5089282621232507625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5089282621232507625'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2023/06/ethical-hacking-101.html' title='Ethical Hacking 101'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-1086162755377923494</id><published>2022-12-07T13:00:00.004+00:00</published><updated>2023-03-08T21:29:39.482+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Driving"/><category scheme="http://www.blogger.com/atom/ns#" term="Macclesfield"/><title type='text'>Driving Test was passed</title><content type='html'>&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px;&quot;&gt;Hurray! I passed the driving test!&lt;/span&gt;&lt;br style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;&quot; /&gt;&lt;br style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;&quot; /&gt;&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px;&quot;&gt;Driving isn&#39;t a rocket science, yet it&#39;s still a challenge, especially when there is noise surrounding your determination, such as &quot;You&#39;re a coder, not a driver&quot;; &quot;You&#39;re too old to learn driving&quot;; &quot;You&#39;re going to a centre with the least passing rate&quot;, etc. Leaving your comfort zone can be intimidating, but when you take a leap, you open yourself up to new experiences, opportunities and growth.&lt;/span&gt;&lt;br style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;&quot; /&gt;&lt;br style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;&quot; /&gt;&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px;&quot;&gt;Embrace a new change with an open mind and a positive attitude. You&#39;ll be pleased at what you can achieve.&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5sjCbKntrqcud7xRepvdpo7_dojE6I1IVToyNfeIZuX1DaQLUMc4w5mTBzp64cWyoD8omNgAEykpN2r_Dp-GnoO87-EQ1ubhYmRx6itXIVI_6YUc7KlBoE-mnScCyUrR_SLuwl7GVyPwkVMXuj6QNT_lwH6kaKsHlDu2mS-jumf0r9eb51Q/s2000/DrivingPassed.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2000&quot; data-original-width=&quot;1126&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5sjCbKntrqcud7xRepvdpo7_dojE6I1IVToyNfeIZuX1DaQLUMc4w5mTBzp64cWyoD8omNgAEykpN2r_Dp-GnoO87-EQ1ubhYmRx6itXIVI_6YUc7KlBoE-mnScCyUrR_SLuwl7GVyPwkVMXuj6QNT_lwH6kaKsHlDu2mS-jumf0r9eb51Q/s320/DrivingPassed.JPG&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/1086162755377923494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/1086162755377923494' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/1086162755377923494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/1086162755377923494'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2022/12/driving-test-was-passed.html' title='Driving Test was passed'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5sjCbKntrqcud7xRepvdpo7_dojE6I1IVToyNfeIZuX1DaQLUMc4w5mTBzp64cWyoD8omNgAEykpN2r_Dp-GnoO87-EQ1ubhYmRx6itXIVI_6YUc7KlBoE-mnScCyUrR_SLuwl7GVyPwkVMXuj6QNT_lwH6kaKsHlDu2mS-jumf0r9eb51Q/s72-c/DrivingPassed.JPG" height="72" width="72"/><thr:total>1</thr:total><georss:featurename>英國麥克爾斯菲爾德馬格斯菲特</georss:featurename><georss:point>53.258663 -2.119287</georss:point><georss:box>24.948429163821153 -37.275537 81.568896836178851 33.036963</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-5112338862271263388</id><published>2022-12-01T17:00:00.027+00:00</published><updated>2023-04-06T12:13:42.352+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Abingdon"/><category scheme="http://www.blogger.com/atom/ns#" term="Personal"/><title type='text'>Merry Xmas 2022</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOM_sMRztSfJJ4zyAD04NYojTeHshKTRo_U5jwY0E2YY9XHlbIXIyeMKPTR8v5WS6jpL7g0kLzS23Ccnbd2IH4ma1mELuhQm9NWMopckvY4aFc-KlRfRhFGHKhgFcMBEoi7p492pi5w2Jq2d9LyhVFgJ7_OdODcXDw02UdA7jupqvSUkL5IA/s4032/Christmas_Party_221201.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOM_sMRztSfJJ4zyAD04NYojTeHshKTRo_U5jwY0E2YY9XHlbIXIyeMKPTR8v5WS6jpL7g0kLzS23Ccnbd2IH4ma1mELuhQm9NWMopckvY4aFc-KlRfRhFGHKhgFcMBEoi7p492pi5w2Jq2d9LyhVFgJ7_OdODcXDw02UdA7jupqvSUkL5IA/w400-h300/Christmas_Party_221201.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Lunch @ The Fox&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I felt trilled when actually meeting up the colleagues who I used to meet online only. The tradition Christmas party in a tradition pub made our gathering warm.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/5112338862271263388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/5112338862271263388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5112338862271263388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5112338862271263388'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2022/12/merry-xmas-2022.html' title='Merry Xmas 2022'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOM_sMRztSfJJ4zyAD04NYojTeHshKTRo_U5jwY0E2YY9XHlbIXIyeMKPTR8v5WS6jpL7g0kLzS23Ccnbd2IH4ma1mELuhQm9NWMopckvY4aFc-KlRfRhFGHKhgFcMBEoi7p492pi5w2Jq2d9LyhVFgJ7_OdODcXDw02UdA7jupqvSUkL5IA/s72-w400-h300-c/Christmas_Party_221201.JPG" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>High St, Steventon, Abingdon OX13 6RZ英國</georss:featurename><georss:point>51.6234872 -1.3193615</georss:point><georss:box>23.313253363821154 -36.4756115 79.933721036178838 33.8368885</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-5177456936530005838</id><published>2022-10-27T10:24:00.003+00:00</published><updated>2022-10-27T10:26:55.706+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Manchester"/><title type='text'>Event: Comparing Native Java REST API Frameworks with Matt Raible</title><content type='html'>&lt;a href=&quot;https://twitter.com/mcrjava&quot; target=&quot;_blank&quot;&gt;Manchester Java Community&lt;/a&gt; hosted a meetup with a fantastic speaker &lt;a href=&quot;https://twitter.com/mraible&quot; target=&quot;_blank&quot;&gt;Matt Raible&lt;/a&gt; in &lt;a href=&quot;https://twitter.com/InfinityWorks&quot; target=&quot;_blank&quot;&gt;Infinity Works&lt;/a&gt;&#39;s office. Matt compared the startup performance and memory usage of &lt;a href=&quot;https://spring.io/projects/spring-boot&quot; target=&quot;_blank&quot;&gt;Spring Boot&lt;/a&gt;, &lt;a href=&quot;https://micronaut.io/&quot; target=&quot;_blank&quot;&gt;Micronaut&lt;/a&gt;, &lt;a href=&quot;https://quarkus.io/&quot; target=&quot;_blank&quot;&gt;Quarkus&lt;/a&gt; and &lt;a href=&quot;https://helidon.io/&quot; target=&quot;_blank&quot;&gt;Helidon&lt;/a&gt; frameworks. He built a REST API application secured by OAuth 2.0 and ran the application in Docker with the four frameworks respectively.

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5sxlogExntabWMxgziUuX3B7xJdanTLPXS0evg1pbCduKkweRxgQ_erxzVsWWyRxpUNUw5T8eg2ZdZSjRsgKIW2F81gNbsG3iKwMC6IaiS5nPiQPvLpVhfFJmmcwZIf6SWfzCKTgUNSpfKK6Yg1NFwR9Y5FFU1FViwqzi5vV-acTtBTstIg/s1600/meetup_221026.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5sxlogExntabWMxgziUuX3B7xJdanTLPXS0evg1pbCduKkweRxgQ_erxzVsWWyRxpUNUw5T8eg2ZdZSjRsgKIW2F81gNbsG3iKwMC6IaiS5nPiQPvLpVhfFJmmcwZIf6SWfzCKTgUNSpfKK6Yg1NFwR9Y5FFU1FViwqzi5vV-acTtBTstIg/s1600/meetup_221026.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

His slides and related resources can be found at &lt;a href=&quot;https://speakerdeck.com/mraible/comparing-native-java-rest-api-frameworks-manchester-jug-2022&quot; target=&quot;_blank&quot;&gt;Comparing Native Java REST API Frameworks - Manchester JUG 2022&lt;/a&gt;. Here is my thought after the talk:
&lt;ul&gt;
  &lt;li&gt;Java is still hugely popular and widely used (&lt;a href=&quot;https://tekiedit.blogspot.com/2022/04/java-and-i.html&quot;&gt;Yay!&lt;/a&gt;). The community should contribute to the language to encourage more younger generation to adopt it.&lt;/li&gt;
  &lt;li&gt;Use &lt;a href=&quot;https://sdkman.io/&quot; target=&quot;_blank&quot;&gt;SDKMAN&lt;/a&gt; to manage multiple JDK in a local computer&lt;/li&gt;
  &lt;li&gt;Use &lt;a href=&quot;https://httpie.io/&quot; target=&quot;_blank&quot;&gt;HTTPie&lt;/a&gt; which is better than cURL for testing API&lt;/li&gt;
  &lt;li&gt;Test OpenID Connect requests and debug responses with &lt;a href=&quot;https://oidcdebugger.com/&quot; target=&quot;_blank&quot;&gt;OpenID Connect debugger&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Build optimized Docker images for your Java applications with &lt;a href=&quot;https://github.com/GoogleContainerTools/jib&quot; target=&quot;_blank&quot;&gt;Jib&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Compare with startup time which does matter for Serverless&lt;/li&gt;
  &lt;li&gt;Take &lt;a href=&quot;https://microprofile.io/&quot; target=&quot;_blank&quot;&gt;MicroProfile&lt;/a&gt; as the baseline platform for Java microservices architecture.&lt;/li&gt;
  &lt;li&gt;Secure API with OAuth 2.1 to capture best practices of 2.0 with extensions&lt;/li&gt;
  &lt;li&gt;Spring provides much better testing support. It can mock up all the things before you reach endpoints. Spring has the strongest and dominent community and ecosystem.&lt;/li&gt;
  &lt;li&gt;Quarkus does not need compilation again when changed&lt;/li&gt;
  &lt;li&gt;Frameworks ease the development. On the other hand, the sophisticated frameworks hide the complexity which developers may not deep-dive it. Thus it may incur a risk of unwanted side effects of other libraries they are not aware of.&lt;/li&gt;
  &lt;li&gt;Spring framework comes with other sister projects like Spring Data and Spring Security. It is not straightforward to migrate from Spring due to dependency of sister projects.&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/5177456936530005838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/5177456936530005838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5177456936530005838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/5177456936530005838'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2022/10/event-comparing-native-java-rest-api.html' title='Event: Comparing Native Java REST API Frameworks with Matt Raible'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5sxlogExntabWMxgziUuX3B7xJdanTLPXS0evg1pbCduKkweRxgQ_erxzVsWWyRxpUNUw5T8eg2ZdZSjRsgKIW2F81gNbsG3iKwMC6IaiS5nPiQPvLpVhfFJmmcwZIf6SWfzCKTgUNSpfKK6Yg1NFwR9Y5FFU1FViwqzi5vV-acTtBTstIg/s72-c/meetup_221026.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>No.2 Circle Square 1 Symphony Park, Manchester M1 7FS英國</georss:featurename><georss:point>53.472687699999987 -2.2389468</georss:point><georss:box>25.162453863821142 -37.3951968 81.782921536178833 32.9173032</georss:box></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-3554214996607828236</id><published>2022-09-26T10:49:00.001+00:00</published><updated>2022-09-26T10:49:21.125+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Unique Random Numbers</title><content type='html'>&lt;p&gt;Thanking Java&#39;s stream feature, it is easy to generate a list of unique random numbers. For example, we want to pick up 6 lucky numbers for Lotto which ranges from 1 to 59.&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&lt;span style=&quot;color: #274e13; font-family: courier;&quot;&gt;new Random().ints(1, 59+1).distinct().limit(6).sorted().boxed().collect(Collectors.toList());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/3554214996607828236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/3554214996607828236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3554214996607828236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/3554214996607828236'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2022/09/unique-random-numbers.html' title='Unique Random Numbers'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12402025.post-8206041412432644625</id><published>2022-08-31T17:07:00.084+00:00</published><updated>2022-08-31T17:07:00.163+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>J Forum</title><content type='html'>&lt;p&gt;I joined an online conference called &lt;a href=&quot;https://skillsmatter.com/conferences/13869-java-forum&quot; target=&quot;_blank&quot;&gt;J Forum&lt;/a&gt; which explored the current state of Java ecosystem, ahead of this September&#39;s release of Java 19. Here are some takeaways:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html&quot; target=&quot;_blank&quot;&gt;Garbage Collector Ergonomics&lt;/a&gt;. There are several GC selections for various situations. Here are the recommendations:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Serial: single core, smal heaps&lt;/li&gt;&lt;li&gt;Parallel: multi-core small heaps; batch jobs with any heap size&lt;/li&gt;&lt;li&gt;G1: responsive in medium to large heaps (request-response/DB interactions); only when processors 2+ and memory 1728MB+&lt;/li&gt;&lt;li&gt;Z: responsive in medium to large heaps&amp;nbsp;(request-response/DB interactions); JDK 17+; Pause &amp;lt; 1ms&lt;/li&gt;&lt;li&gt;Shenandoah: responsive in medium to large heaps&amp;nbsp;(request-response/DB interactions); JDK 17+; Pause &amp;lt;10ms&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;GC Tuning does not only rely on setting heap size (&lt;span style=&quot;font-family: courier;&quot;&gt;-Xmx&lt;/span&gt; for well-sized workloads,&amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;-XX:MaxRAMPercentage&lt;/span&gt; for workloads to be scaled along container memory limits, &lt;span style=&quot;font-family: courier;&quot;&gt;-XX:ActiveProcessorCount&lt;/span&gt;), but also understanding the workload. You should select appropriate GC and have enough CPUs (check &lt;span style=&quot;font-family: courier;&quot;&gt;Runtime.getRuntime().availableProcessors()&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;-XX:+PrintFlagsFinal&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Analyze VM data with JDK Flight Recorder (JFR)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://docs.pact.io/&quot; target=&quot;_blank&quot;&gt;Contract Testing&lt;/a&gt;&amp;nbsp;for testing an integration point by checking each application in isolation to ensure the messages it sends or receives conform to a shared understanding that is documented in a &quot;contract&quot;.&lt;/li&gt;&lt;li&gt;Introduction to &lt;a href=&quot;https://www.jcp.org&quot; target=&quot;_blank&quot;&gt;JCP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;References:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/developer/java/containers/overview&quot; target=&quot;_blank&quot;&gt;Containerize your Java applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.manning.com/books/the-well-grounded-java-developer-second-edition&quot; target=&quot;_blank&quot;&gt;The Well-Grounded Java Developer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/holly-cummins/house-of-microservices-quarkus-contract-testing-sample&quot; target=&quot;_blank&quot;&gt;Demo for Contract Testing&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekiedit.blogspot.com/feeds/8206041412432644625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12402025/8206041412432644625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/8206041412432644625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12402025/posts/default/8206041412432644625'/><link rel='alternate' type='text/html' href='http://tekiedit.blogspot.com/2022/08/j-forum.html' title='J Forum'/><author><name>Teki Chan</name><uri>http://www.blogger.com/profile/10757919473525051617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9H7abegu3UDY3zdcWgnkEqF77pW0lGhZsEcjOXgog4n411OfyokYZG416Mesxh-e8v5laHcCQTDYJIaEZrRfjf8kcWFJAjEyZfEXcHW3Vq3wT5gM0xpeCT1q6Pd33Zg/s1600-r/2211272380064976032DhuNXt_th.jpg'/></author><thr:total>0</thr:total></entry></feed>