Skip to content

Commit

Permalink
Old classes (#92)
Browse files Browse the repository at this point in the history
* replaced custom css class with tailwind one

* cleanup classes
  • Loading branch information
bgalek authored Jul 11, 2024
1 parent 1082797 commit de10ee3
Show file tree
Hide file tree
Showing 14 changed files with 74 additions and 74 deletions.
4 changes: 2 additions & 2 deletions _posts/2016-12-19-deep-learning-for-frame-detection.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Top layers closely resemble a traditional neural network with fully-connected la

Example of a CNN:

<figure class="image"><img src="/assets/img/articles/2016-12-19-deep-learning-for-frame-detection/cnn.png" alt="cnn"><figcaption>(CC BY-SA 4.0 https://en.wikipedia.org/wiki/File:Typical_cnn.png)</figcaption></figure>
<figure><img src="/assets/img/articles/2016-12-19-deep-learning-for-frame-detection/cnn.png" alt="cnn"><figcaption>(CC BY-SA 4.0 https://en.wikipedia.org/wiki/File:Typical_cnn.png)</figcaption></figure>

## Our approach and experiments

Expand Down Expand Up @@ -190,7 +190,7 @@ although given a pixel-annotation dataset &mdash; deep learning can solve the pr
* [NeuralTalkv2](https://github.com/karpathy/neuraltalk2) creates textual descriptions of what is seen on an image.
* [Google deep dream](https://github.com/google/deepdream) is able to create new art-pieces of a given style.

<figure class="image"><img src="/assets/img/articles/2016-12-19-deep-learning-for-frame-detection/DeepDreamingProcess.jpg" alt="dd"><figcaption>(CC BY-SA 4.0 https://commons.wikimedia.org/wiki/File:DeepDreamingProcess.jpg)</figcaption></figure>
<figure><img src="/assets/img/articles/2016-12-19-deep-learning-for-frame-detection/DeepDreamingProcess.jpg" alt="dd"><figcaption>(CC BY-SA 4.0 https://commons.wikimedia.org/wiki/File:DeepDreamingProcess.jpg)</figcaption></figure>

### Resources

Expand Down
4 changes: 2 additions & 2 deletions _posts/2017-03-20-hitting-the-wall.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ If there is no mention of Marathon version, it is 1.3.10 and below; we need
some time to test and deploy the latest 1.4 release.
If you are interested in how our ecosystem is built, take a look at below MesosCon
presentation.
<div class="i-wrapper"><div>

<iframe height="315" width="420" src="https://www.youtube.com/embed/2dlCObSvgBc" frameborder="0" allowfullscreen></iframe>
</div></div>

Expand Down Expand Up @@ -325,7 +325,7 @@ wall.

### How to avoid the wall:

<div class="i-wrapper"><div>

<iframe height="315" width="420" src="https://www.youtube.com/embed/9lzOCVpvcpg" frameborder="0" allowfullscreen></iframe>
</div></div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Before we move on to discuss next stages of the project and tests we carried out
than Hive. Cluster’s infrastructure involves one coordinator and many workers that are ready to process queries right
after being launched, so you do not waste time for creating sessions and spawning Yarn containers.

<figure class="image"><img src="/assets/img/articles/2017-06-13-presto-small-step-for-devops-engineer-big-step-for-big-data-analyst/presto-overview.png" alt="Presto archirecture overview"><figcaption>(Based on: <a href="https://prestodb.io/overview.html">https://prestodb.io/overview.html</a>)</figcaption></figure>
<figure><img src="/assets/img/articles/2017-06-13-presto-small-step-for-devops-engineer-big-step-for-big-data-analyst/presto-overview.png" alt="Presto archirecture overview"><figcaption>(Based on: <a href="https://prestodb.io/overview.html">https://prestodb.io/overview.html</a>)</figcaption></figure>

Data is stored in memory as an optimized internal data structure and streamed between the processes when moving to
consecutive stages of execution plans. Therefore, intermediary data is never saved on a drive when computing the query
Expand Down
16 changes: 8 additions & 8 deletions _posts/2017-11-24-fall-digest.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@ engineers around the web in the one place.
We prepared the digest with all these posts published this Fall.

## [Generating Test Data – jFairy](https://testdetective.com/generating-test-data-jfairy/)
<time class="post-date"><strong>Nov 20</strong> 2017 &middot; Łukasz Rosłonek</time>
<time><strong>Nov 20</strong> 2017 &middot; Łukasz Rosłonek</time>
Test data has been always an issue.
If you are running selenium or backend automated tests based on user-related scenarios,
in order to make your tests more efficient you need to provide unique and realistic user
test data. There’re many ways to deal with this: dumping samples of production databases, writing your own data generators…

## [InfluxDB in IoT world: Hosting and scaling on AWS (Part 2)](https://www.easyitblog.info/2017/11/14/influxdb-in-iot-world-aws-part-2/)
<time class="post-date"><strong>Nov 14</strong> 2017 &middot; Ivan Vaskevych</time>
<time><strong>Nov 14</strong> 2017 &middot; Ivan Vaskevych</time>
In the previous part we took a bird's-eye view of InfluxDB, it's core features and some of the reasons to embrace the database in the wake of IoT data onslaught.
In this part, we're going to see how easy it is to install and start using InfluxDB on AWS…

## [Kafka Streams DSL vs Processor API](http://mkuthan.github.io/blog/2017/11/02/kafka-streams-dsl-vs-processor-api/)
<time class="post-date"><strong>Nov 02</strong> 2017 &middot; Marcin Kuthan</time>
<time><strong>Nov 02</strong> 2017 &middot; Marcin Kuthan</time>
Kafka Streams is a Java library
for building real-time, highly scalable, fault tolerant, distributed applications.
The library is fully integrated with Kafka and leverages
Expand All @@ -35,22 +35,22 @@ What is really unique, the only dependency to run Kafka Streams application is a
Even local state…

## [Gathering valuable feedback for your growth](https://agileandchange.com/gathering-valuable-feedback-for-your-growth-edd510c0f890?source=rss-975f4d88c1de------2)
<time class="post-date"><strong>Oct 15</strong> 2017 &middot; Marcin Konkel</time>
<time><strong>Oct 15</strong> 2017 &middot; Marcin Konkel</time>
Since few months, together with Viktor, we were exchanging our thoughts on gathering valuable feedback and maintaining our growth in various circumstances. We’ve found that feedback continues to be a problem. We don’t seem to give enough of it and what we give often holds low quality…

## [Swift 4 Cookbook - Linux & MacOS, part 1](http://www.marcinkliks.pl/2017/10/11/swift4-server-foundation-cookbook/)
<time class="post-date"><strong>Oct 11</strong> 2017 &middot; Marcin Kliks</time>
<time><strong>Oct 11</strong> 2017 &middot; Marcin Kliks</time>
Swift is powerful, fast and safe programming language. From version 2 it’s open source, and officialy supported on Linux. Its native performance, type safety, interactive (REPL) playground and scripting posibility, is a joy to use.
The main goal for Swift on Linux is to be compatible with Swift on macOS/ios/watchos, and there is an official Apple documentation for Foundation. Howerever, this…

## [Byte my code – new conference](https://geekyprimitives.wordpress.com/2017/09/30/byte-me-code-new-conference/)
<time class="post-date"><strong>Sep 30</strong> 2017 &middot; Jarek Pałka</time>
<time><strong>Sep 30</strong> 2017 &middot; Jarek Pałka</time>
#Wrocław #Java Hey guys, just letting you know that ByteMyCode – a new Java event is taking place in Wroclaw. If these topics are interesting for you: Event Processing in Action Cloud Native Java Guide to Instantaneous Feedback Loops for Java Developers Bringing Structure to Performance Tuning UBS Innovation – DLT Or you’d like to…

## [Three levels of TDD](http://lewandowski.io/2017/02/thre-levels-of-tdd-1/)
<time class="post-date"><strong>Sep 24</strong> 2017 &middot; Michael Lewandowski</time>
<time><strong>Sep 24</strong> 2017 &middot; Michael Lewandowski</time>
IntroductionI’ve been using TDD technique for a few years. Most of the time with satisfactory a result. But it wasn’t an easy journey; it was a trip full of ups and downs. During this period my thinking about TDD has changed dramatically, or maybe I have changed my perception of testing and software development during this time? Indeed, yes I have.Lasse Koskela in his book called “Test Driven:…

## [Idiomatic concurrency: flatMap() vs. parallel() - RxJava FAQ](http://www.nurkiewicz.com/2017/09/idiomatic-concurrency-flatmap-vs.html)
<time class="post-date"><strong>Sep 14</strong> 2017 &middot; Tomasz Nurkiewicz</time>
<time><strong>Sep 14</strong> 2017 &middot; Tomasz Nurkiewicz</time>
Simple, effective and safe concurrency was one of the design principles of RxJava. Yet, ironically, it's probably one of the most misunderstood aspects of this library. Let's take a simple example: imagine we have a bunch of UUIDs and for each one of them we must perform a set of tasks. The first problem is to perform I/O intensive operation per each UUID, for example loading…
4 changes: 2 additions & 2 deletions _posts/2018-01-11-mesos_executor.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ is written by a user to handle custom workloads. It can use V0 or V1 API and
can run single or multiple tasks depending on implementation. In this article
we are focusing on our custom implementation and what we achieved with it.

<div class="i-wrapper"><div>

<iframe height="315" width="420" src="https://www.youtube.com/embed/tzaYXgnYKyQ" frameborder="0" allowfullscreen></iframe>
</div></div>

Expand Down Expand Up @@ -280,6 +280,6 @@ Mesos is totally customizable and able to handle all edge cases but sometimes
it’s really expensive in terms of time, maintainability and stability.
Sometimes it’s better to use solutions that work out of the box instead of reinventing the wheel.

<div class="i-wrapper"><div>

<iframe height="315" width="420" src="https://www.youtube.com/embed/Zm5RgED_1gM" frameborder="0" allowfullscreen></iframe>
</div></div>
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ availability zones.

## Vizceral
Let's have a look at a video showing traffic failover simulation.
<div class="i-wrapper"><div>

<iframe height="315" width="420" src="https://www.youtube.com/embed/KVbTjlZ0sfE" frameborder="0" allowfullscreen></iframe>
</div></div>
At first, you see the normal state. The middle circle represents the Internet, showing how many requests are coming in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ First of all, why is stopping the test after you see the first significant resul
It’s because your chance of getting false positive is rising. **False positive occurs when we see a statistically significant
difference where there is no such difference**.

<figure class="image">
<figure>
<img src="/assets/img/articles/2019-07-23-ab-testing-calculating-required-sample-size/pValue_SampleSize.svg" alt="pValue Sample Size">
<figcaption><center>Figure 1: Changes of p-value during an experiment lifecycle - data generated in a simulation </center></figcaption>
</figure>
Expand All @@ -119,7 +119,7 @@ more samples than when you want to detect a 10% difference. Two weeks might be e
Problem is that the result of your test depends vastly on a number of samples. You can run a test for a year and still not gather enough samples to prove your hypothesis.
You can see on _Figure 2_ that fraction of detected true positives (detecting a difference when there is one) is increasing with sample size.

<figure class="image">
<figure>
<img src="/assets/img/articles/2019-07-23-ab-testing-calculating-required-sample-size/TruePositives_SampleSize.svg" alt="True Positives Sample Size">
<figcaption><center>Figure 2: Dependency between number of detected true positives and sample size - data gathered during simulations </center></figcaption>
</figure>
Expand Down Expand Up @@ -183,7 +183,7 @@ Increasing the power will also result in an enlarged sample size. If you want to

We implemented our own sample size calculator for our experimentation platform. Below, we describe the theory behind our calculator.

<figure class="image">
<figure>
<img src="/assets/img/articles/2019-07-23-ab-testing-calculating-required-sample-size/chi-calculator.png"
alt="Chi sample size calculator" width="90%" style="border:1px solid gray; padding:2%">
<figcaption><center>Figure 3: The sample size calculator implemented by Allegro experimentation team</center></figcaption>
Expand Down
10 changes: 5 additions & 5 deletions _posts/2019-12-19-allegro-tech-meeting.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ ATM is the place where we can meet each other, share our experiences and just ge
Join us in the fascinating journey through the inspiring, exciting and unique stories of Allegro
technologists that we gathered to listen to in the first days of this fall.

<div class="i-wrapper">
<div>
<div>
<iframe height="315" width="560" src="https://www.youtube.com/embed/R8M-aU--TO8" frameborder="0" allowfullscreen=""></iframe>
</div>
Expand Down Expand Up @@ -86,7 +86,7 @@ model evaluation, underfitting/overfitting problem and ending with convolutional
deep reinforcement learning.
The talk contains good practice quotes and also plot twists so if you want to feel bamboozled as well,
check the video below :)
<div class="i-wrapper">
<div>
<div>
<iframe height="315" width="560" src="https://www.youtube.com/embed/XDMNm7PQpxk" frameborder="0" allowfullscreen=""></iframe>
</div>
Expand All @@ -102,7 +102,7 @@ a new communication layer in our microservice setup or deep JVM details?
Paweł Jurczenko chose the latter subject and did a thorough overview of many topics
related to threads on JVM. He talked about threading models, compared some concurrency primitives,
explained challenges with non-blocking I/O and how to tune your application thread pools.
<div class="i-wrapper">
<div>
<div>
<iframe height="315" width="560" src="https://www.youtube.com/embed/Wjg3UxYmw3I" frameborder="0" allowfullscreen=""></iframe>
</div>
Expand All @@ -115,7 +115,7 @@ For example Krzysztof Szłapiński decided to tell us something about teleportat
But not like just normal teleportation: quantum teleportation.
We were really interested in how it works, how we can use it and what the potential problems and limitations are.
If you want to build yourself a teleporter, check Krzysiek’s presentation.
<div class="i-wrapper">
<div>
<div>
<iframe height="315" width="560" src="https://www.youtube.com/embed/_Gqvuxei8DE" frameborder="0" allowfullscreen=""></iframe>
</div>
Expand All @@ -136,7 +136,7 @@ Iza talked about the systems thinking in examples and the methods to see somethi
more than only the tip of the iceberg.

If you want to deep dive into particular cases - watch the video.
<div class="i-wrapper">
<div>
<div>
<iframe height="315" width="560" src="https://www.youtube.com/embed/eroIBiM4Cn8" frameborder="0" allowfullscreen=""></iframe>
</div>
Expand Down
2 changes: 1 addition & 1 deletion _posts/2023-08-22-management-engineering-acrobatics.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ up with a [manager’s schedule](http://www.paulgraham.com/makersschedule.html).

<img src="/assets/img/articles/2023-08-22-management-engineering-acrobatics/flying-trapeze-performers.jpg"
alt ="Circus performers on the flying trapeze, Public Domain image from https://commons.wikimedia.org/wiki/File:Programma_van_Circus_Krone_in_Rotterdam_drie_Alizes_,_vliegende_trapeze_met_o.a.,_Bestanddeelnr_910-4372.jpg"
class="small-image"/>
/>

Over time, your technical skills start deteriorating, and if you miss the right moment, you may find yourself at
a point of no return. Like a circus artist on a flying trapeze, you have to time your actions right to avoid
Expand Down
32 changes: 16 additions & 16 deletions _posts/2023-11-27-how-does-btree-make-your-queries-fast.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@ Let’s start with a simple example of BST:

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/bst-basic.webp"
alt="Binary Search Tree with three nodes"
class="small-image"/>
/>

The greater number is always on the right, the lower on the left. It may become clearer when we add more numbers.

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/bst-bigger.webp"
alt="Binary Search Tree with seven nodes"
class="small-image"/>
/>

This tree contains seven numbers, but we need to visit at most three nodes to locate any number.
The following example visualizes searching for 14.
I used SQL to define the query in order to think about this tree as if it were an actual database index.

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/bst-bigger-searching.webp"
alt="Searching for single node within Binary Search Tree with seven nodes"
class="small-image"/>
/>

## Hardware

Expand Down Expand Up @@ -82,27 +82,27 @@ Memory may be visualized as a line of containers for values, where every contain

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/memory.webp"
alt="Simple memory visualization"
class="small-image"/>
/>

Now let’s assume we want to read data from containers 1, 4, and 6. It requires random access:

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/memory-random-access.webp"
alt="Random access visualized on a small chunk of a memory"
class="small-image"/>
/>

And then let’s compare it with reading containers 3, 4, and 5. It may be done sequentially:

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/memory-sequential-access.webp"
alt="Sequential access visualized on a small chunk of a memory"
class="small-image"/>
/>

The difference between a "random jump" and a "sequential read" can be explained based on Hard Disk Drive.
It consists of the head and the disk.

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/hdd-disk.webp"
alt="Hard Disk Drive with cover removed, Public Domain image
from https://en.wikipedia.org/wiki/Hard_disk_drive#/media/File:Laptop-hard-drive-exposed.jpg"
class="small-image"/>
/>

"Random jump" requires moving the head to the given place on the disk.
"Sequential read" is simply spinning the disk, allowing the head to read consecutive values.
Expand Down Expand Up @@ -138,25 +138,25 @@ That’s how these positions are calculated based on the example (the parent nod

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/tree-representation-in-memory-1.webp"
alt="Binary tree representation in the memory—part 1/2"
class="small-image"/>
/>

According to the calculated positions, nodes are aligned into the memory:

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/tree-representation-in-memory-2.webp"
alt="Binary tree representation in the memory—part 2/2"
class="small-image"/>
/>

Do you remember the query visualized a few chapters ago?

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/bst-bigger-searching.webp"
alt="Searching for single node within Binary Search Tree with seven nodes"
class="small-image"/>
/>

That’s what it looks like on the memory level:

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/tree-representation-in-memory-query.webp"
alt="Binary tree representation in the memory - querying"
class="small-image"/>
/>

When performing the query, memory addresses 1, 3, and 6 need to be visited.
Visiting three nodes is not a problem; however, as we store more data, the tree gets higher.
Expand Down Expand Up @@ -238,7 +238,7 @@ We may obtain trees with different depths if the values are added in an incorrec

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/bst-imbalance.webp"
alt="Two Binary Trees with shapes depending on the order of inserted values."
class="small-image"/>
/>

When the tree has different depths on different nodes, it is called an unbalanced tree.
There are basically two ways of returning such a tree to a balanced state:
Expand All @@ -255,7 +255,7 @@ and adding new values until there is no free space in it.

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/self-balancing-step-1.webp"
alt="Self-balancing, step 1, Add new values until there is a free space in existing nodes."
class="small-image"/>
/>

If there is no space on the corresponding page, it needs to be split.
To perform a split, a „split point” is chosen.
Expand All @@ -264,20 +264,20 @@ The „Split point” is a value that will be moved to the upper page.

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/self-balancing-step-2a.webp"
alt="Self-balancing, step 2a, Splitting the page."
class="small-image"/>
/>

Now, it gets us to an interesting point where there is no upper page.
In such a case, a new one needs to be generated (and it becomes the new root page!).

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/self-balancing-step-2b.webp"
alt="Self-balancing, step 2b, Generating a new root page."
class="small-image"/>
/>

And finally, there is some free space in the three, so value 14 may be added.

<img src="/assets/img/articles/2023-11-27-how-does-btree-make-your-queries-fast/self-balancing-step-2c.webp"
alt="Self-balancing, step 2c, Adding the 14 to B-tree."
class="small-image"/>
/>

Following this algorithm, we may constantly add new values to the B-tree, and it will remain balanced all the time!

Expand Down
Loading

0 comments on commit de10ee3

Please sign in to comment.