major cleanup large images, mass-convert png->sRGB jpg

This commit is contained in:
Wouter Groeneveld 2022-07-11 09:11:25 +02:00
parent e1bd0899df
commit 74becb5016
345 changed files with 77 additions and 65 deletions

View File

@ -10,7 +10,7 @@ categories:
When switching over to a new editor and new language, I can sometimes get frustrated by missing features I got (very) attached to. This excludes the obvious difference in shortcut keys.
### Shortcuts and refactoring tools ###
### Shortcuts and refactoring tools ###
One plugin to rule them all: [ReSharpner](http://www.jetbrains.com/resharper/). This productivity tool brings back the incredible development speed to the Visual Studio platform. You can almost map the eclipse (or IntelliJ, since they guys from JetBrains developed it) keys to the ReSharpner keys. If you're used to quickly refactor out variables, introduce classes from parameters or create test classes, you'll be in heaven.
@ -46,11 +46,11 @@ Other interesting links:
- [Default keymap PDF overview](http://www.jetbrains.com/resharper/docs/ReSharper70DefaultKeymap_IDEA_scheme.pdf)
- [IntelliJ keymap PDF overview](http://www.jetbrains.com/resharper/docs/ReSharper70DefaultKeymap_IDEA_scheme.pdf)
### Comparing files with each other ###
### Comparing files with each other ###
Simply comparing two files within the editor can be a pain - the easiest way to do it in Eclipse is just select both files, rightclick and select "compare". No such option here. You can compare a file with a previous version from TFS, but not two physically different files, weird. Install [VSCommands](http://vscommands.squaredinfinity.com/) and that problem is also solved:
![compare files in vstudio](../compare_files_vstudio2012.png)
![compare files in vstudio](../compare_files_vstudio2012.jpg)
It uses the built-in VS2012 comparison window, which is quite nice.

View File

@ -92,7 +92,7 @@ After that, you can start writing tests. Looking at the examples, the test flow
});
![](../siesta.png "The Siesta view test in action")
![](../siesta.jpg "The Siesta view test in action")
Siesta also comes with it's downsides though.

View File

@ -22,7 +22,7 @@ Public Sub MyTestMethod_WithSomeArg_ShouldReturn45
End Sub
```
![simply vb unit screenshot](../simplyvbunit.png)
![simply vb unit screenshot](../simplyvbunit.jpg)
The test code is very readable thanks to the [NUnit](https://nunit.org/index.php?p=documentation) influence on SimplyVBUnit. The package is very easy to install, but there are a few gotcha's.
You need to create a separate VBP file (Visual Basic Project) which acts as your UnitTest project with a reference to the SimplyVBUnit package. That's easy enough, but it's a project. That means it can't reference other projects! Our software is basically one large project with heaps of muddy code. Compiling the EXE and referencing that one is not an option for us. That leaves us with a few alternatives:

View File

@ -28,7 +28,7 @@ But let's return to option two for now.
I forgot about the discussion and moved on.
But taking mental notes is like async AJAX calls: they do return, but you don't know when. That's when it hit me: why don't I email him some details on how to quickly start a blog? Would that be appropriate or not? In any case he's free to delete the email - no harm done. But if he decides to do something with it, all the better. The step from no blog and no experience in Hugo is smaller when a friendly push in the right direction has been given.
![giving](/img/sharing.png)
![giving](../sharing.jpg)
One could say "what have you to gain? Why do you care?" And I don't - I'm not a game developer, but I do care - a bit - about the subject. I do care - a lot - about my friend and his personal growth. [Show your work](/post/teaching-kids-how-to-program/), remember?
I love to inspire others on things that I'm passionate about myself. And sharing is caring. I would love to receive an email with loose ends like this from someone I talked to.

View File

@ -22,7 +22,7 @@ Let's start with different stages of learning. Musashi writes that only after he
This looks like an interpretation of "[Shu - Ha - Ri](https://en.wikipedia.org/wiki/Shuhari)".
![ShuHaRi](/img/ShuHaRi.png)
![ShuHaRi](../ShuHaRi.jpg)
In martial arts, there are 3 stages to learning mastery:

View File

@ -36,7 +36,7 @@ I made something really simple for dinner: tortilla's. That would require someth
Well, not really. I added a fermented shallot to create a sour tang and - of course - some salt. Because it had to be spreadable and because I happen to love olive oil, that was also added.
![YAGNI](/img/yagni1.png "Mozarella and beetroot in a blender.")
![YAGNI](../yagni1.jpg "Mozarella and beetroot in a blender.")
Three ingredients. (Salt and oil doesn't count as an ingredient in my kitchen)
That's it.

View File

@ -24,7 +24,7 @@ That is called a **creative scar** and can be very deadly. If someone ever says
The problem gets worse if you are not aware that you have in facts such a scar. If you're not aware, then how on earth are you going to do something about it? The answer is you won't. You're stuck in the "Unconsciously incompetent" stage of competency. A diagram from [Wikipedia](https://en.wikipedia.org/wiki/Four_stages_of_competence) might help to sketch the situation a bit:
![stages of competence](/img/competences.png)
![stages of competence](../competences.jpg)
> Unconsciously incompetent: The individual does not understand or know how to do something and does not necessarily recognize the deficit.
@ -45,7 +45,7 @@ Somehow, thanks to lots and lots and lots of writing, I started to become more a
Of course concepts like **journaling** aren't new at all: Roman emperor and philosopher Marcus Aurelius wrote down how he should behave centuries ago. Great minds like Wittgenstein, John Locke and Seneca also loved writing. The medium was and is a great fit for rapid note taking - whether it's ideas or feelings, that doesn't really matter. As long as you do something with it afterwards. Or not - that's okay too.
![Aurelius](/img/aurelius.jpg)
![Aurelius](../aurelius.jpg)
So I did not try to reinvent the wheel: I merely looked and copied what worked for me. That very same thing might not work for you at all - you might be one of those digital whizz kids that like to use Evernote or Google Keep. I'm more of an analog guy: it enables me to sketch, write, make mind maps and paste pictures. But what should you do with your piece of work?
@ -76,7 +76,7 @@ Those notes in my journal set me on track to identify what I wanted to do the mo
3. I decided that I should finally [learn to draw](/post/post/teaching-yourself-to-draw/).
4. After falling in love with [sourdough bread](http://www.redzuurdesem.be), I decided to follow a three year long night class to become a professional baker, and did an intensive internship, combined with my full-time job.
![Aurelius](/img/notes.png)
![Aurelius](../notes.jpg)
These examples might sound trivial to you, but mean the world to me. Everything wasn't a simple "okay let's do that" thought but came up organically by tracking what I was thinking on a given moment. When I notice I complain a lot about my bad drawing skills, I might - finally - do something about that.
<br/>Before journaling, I _simply had no idea_!
@ -108,7 +108,7 @@ That's exactly what it feels like.
### In practice
![full journals](/img/boekjes.jpg)
![full journals](../boekjes.jpg)
There are a lot of techniques involved in efficient journaling I like to save for a future blog post to be linked here. (Update: [it's here!](/post/journaling-in-practice/)) But in practice, it all boils down to just starting to write. Do what works for you. If you decide to buy a journal, consider scanning in pages after it's full. I archive everything in Evernote but that requires tagging manually and soaks op a lot of hours. GTD is a nice way to keep track of things to do - if you're the kind of person who likes TODOs. I also like pasting pictures, doodling and sketching and even scrap-booking. Whatever that works.

View File

@ -50,8 +50,7 @@ The **made by hand** part is crucial here. The recent resurgence of "things made
The fancy word "craftsmanship" is sadly often abused thinking it might net you a nice job with a high wage if you spray it around your CV.
![craftsman at work in the Middle Ages](/img/craftsman.jpg)
Craftsman at work in the [Middle Ages](http://www.thomasmorecollege.edu/student-life/catholic-guilds/)
![craftsman at work in the Middle Ages](../craftsman.jpg "The craftsman at work in the Middle Ages.")
Creating something physical has been replaced by something digital: bolts and pieces by lines of code. You're still creating, but that feeling of the material disappeared. Apprenticeship also changed: instead of working and living for years at the bidding of your master, you now hopefully pick up some tips and tricks from a colleague before moving on to the next job. It's become much more implicit and that is definitely for the worse. Googling "the lost art of mentoring" nets me an astonishing amount of recent articles on cool websites like "refresh leadership".

View File

@ -16,7 +16,7 @@ Also worth reading: [Reverse engineering a curriculum](/post/reverse-engineering
I happened to come across a very interesting study path for "game programmers" published at [https://github.com/miloyip/game-programmer](https://github.com/miloyip/game-programmer). It's a nice visual representation of books that help you become a better (game) programmer, starting from zero (game programming for kids) and ending at advanced game physics and Artificial Intelligence. I am not keen on becoming a game programmer but the reason this is interesting is that the author has done a great job trying to categorize the different requirements - what it takes to be a programmer in general. Let's take a closer look at that.
![](../miloyip.png "A cut-out part of the study path, copyright Milo Yip")
![](../miloyip.jpg "A cut-out part of the study path, copyright Milo Yip")
## Study paths for any programmer

View File

@ -68,7 +68,7 @@ Een kanttekening: er zijn reeds eerder brainstorm sessies gevoerd rond de cultuu
### 1. Tevredenheid is de oogst van Hart-werk.
![ethiek img](/img/pratoway/1.png)
![ethiek img](../pratoway/1.jpg)
_**Hart** werken is zeker en vast **hard** werk. Samenwerken en communiceren met respect voor je collega en klant. Tevredenheid ligt ons nauw aan het **hart** omdat we het **hart** op de juiste plaats hebben.<br/>
Een tevreden klant is een gelukkige klant. Een tevreden collega is een gelukkige collega. <br/>
@ -76,14 +76,14 @@ Een goede oogst vol Hart-werk dus!_
### 2. De beste intenties voorkomen klanten interventies.
![ethiek img](/img/pratoway/2.png)
![ethiek img](../pratoway/2.jpg)
_Wij kijken positief naar het leven en nemen aan dat iedereen met de beste intenties handelt, zowel klant als collega. Loopt er al eens iets mis, dan stropen we gewoon de mouwen op en gaan we ertegenaan. <br/>
Anderen helpen is ook jezelf helpen!_
### 3. Echte comPAINons delen meer dan alleen maar brood.
![ethiek img](/img/pratoway/3.png)
![ethiek img](../pratoway/3.jpg)
_Er wordt gezegd dat planten beter groeien als je ze dagelijks complimentjes toefluistert. Dat kunnen we niet hard maken, maar dat collegas daarvan opfleuren is een feit! Het “Je bent me dr eendje” initiatief heeft dit zeker bewezen. Deel daarom meer dan enkel kennis en breek ook eens brood bij een lach en een traan.<br/>
Zet elkaars talenten in de verf. Vier ook kleine successen!_
@ -91,7 +91,7 @@ Zet elkaars talenten in de verf. Vier ook kleine successen!_
### 4. Een gedeelde voedingsbodem kweekt inventieve ideeën.
![ethiek img](/img/pratoway/4.png)
![ethiek img](../pratoway/4.jpg)
_Het magische woord **serendipity**, de “toevallige” samenkomst van ideeën onder de juiste condities, is voor ons al lang geen geheim meer. Die condities zijn heel simpel: een gedeelde voedingsbodem! Wees betrokken in alle initiatieven en deel uw mening om verder te bouwen aan een beter Prato.<br/>
Kruisbestuiving van ideeën zorgt voor vruchtbare concepten._
@ -99,7 +99,7 @@ Kruisbestuiving van ideeën zorgt voor vruchtbare concepten._
### 5. Te midden van de moeilijkheid ligt jouw mogelijkheid.
![ethiek img](/img/pratoway/5.png)
![ethiek img](../pratoway/5.jpg)
_Jouw mogelijkheid staat voor dingen zelf in beweging kunnen zetten. Wij zijn allemaal een uniek radertje in het Prato tandwiel en kunnen allemaal even betrokken zijn - als we dat willen. De pure kracht van verantwoordelijkheid zit in ieder van ons. <br/>
Obstakels zijn er om gezamenlijk uit de weg te ruimen!_
@ -107,7 +107,7 @@ Obstakels zijn er om gezamenlijk uit de weg te ruimen!_
### 6. Goede dingen gebeuren als je openstaat voor verandering.
![ethiek img](/img/pratoway/6.png)
![ethiek img](../pratoway/6.jpg)
_Het buigzame twijgje blijft groeien na een storm, terwijl de grote onbuigzame eik splijt. Durf zelf op zoek te gaan naar verandering en durf mee te gaan met voorstellen van collegas die niet meteen aansluiten met je eigen visie. <br/>
Goede dingen gebeuren als je onderweg af en toe vragen stelt over het pad dat je hebt afgelegd en nog gaat afleggen. Durf dingen in vraag te stellen bij jezelf, je team en Prato._

View File

@ -27,7 +27,7 @@ Als software ingenieur met meer dan een [decennium ervaring](/about) heb ik een
Het traditioneel coachen en lesgeven brengt echter niet altijd even veel op. Dat kan natuurlijk aan mij liggen (de manier waarop), aan het de stof die ik wil overbrengen (het onderwerp) of aan de interesse van het doelpubliek (de ontvanger). Bij veel teams waar ik de afgelopen jaren tijd in heb doorgebracht is het moeilijk om iedereen op dezelfde golflengte te krijgen.
![sw engineering probleem](../sweng_prob.png)
![sw engineering probleem](../sweng_prob.jpg)
Ik begon mij af te vragen hoe ik het probleem zou kunnen identificeren en hier iets concreet rond doen. De vraag werd een **meta-vraag**: in plaats van te vragen wat te leren begon ik te vragen hoe het leren te leren. Dus: _wat zien we over het hoofd wanneer we toegeven dat software schrijven niet altijd gesmeerd loopt?_
@ -128,7 +128,7 @@ Dit concept wil ik graag doortrekken in dit doctoraatsvoorstel. In plaats van ee
Dit sluit beter aan met de _agile proces_ dat ook bij Prato gebruikt wordt om sneller feedback te kunnen verzamelen en ook sneller een meerwaarde te kunnen bieden.
![het agile proces](../agile.png)
![het agile proces](../agile.jpg)
## De toepasbaarheid

View File

@ -19,16 +19,15 @@ Om kwaliteit te produceren moet je soms tot tien jaar geduld hebben. Die tijd wo
Een wijnmaker draait zijn hand niet om voor een jaar meer of minder. Wij in de moderne bedrijfswereld (in context van IT) durven zelfs binnen het jaar meedere keren van werkgever te veranderen. Als je nu zegt dat je 5 jaar voor dezelfde firma hebt gewerkt krijg je gelukwensen en de term _"ancien"_ opgeplakt. 10 jaar voor kwaliteit. 5 jaar voor een label.
<center>
<img src="/img/wine.jpg" class="bordered" />
Onze gids te [Maison Autréau-Lasnot](http://www.champagne-autreau-lasnot.com/maison/)
</center>
![](../wine.jpg "Onze gids te Maison Autréau-Lasnot.")
Druivenvelden zijn in de streek erg duur: de concurrentie aast constant op lapjes grond. Voor grote champagnehuizen in Reims is die kostprijs verwaarloosbaard ten opzichte van een familiebedrijf als Autréau. Ze zijn begonnen in 1932 en van generatie op generatie werd de grond binnen de familie gehouden. Dat is dan ook de enige manier om het te doen: het is zo duur dat het voor kleine bedrijven 50 jaar kost om rendabel te zijn.
Kunnen wij ons dat nog inbeelden? Zo'n grote onkosten maken over generaties heen? Zo in het onzekere durven stappen? Vijf jaar wachten om te weten of je product écht goed is, of maar middelmatige brol geworden is? Om dan daarna ook de ballen te hebben om alles gewoon weg te kappen en opnieuw te beginnen?
Ik denk het niet. <br/>Het is tegenwoordig al een hel om vijf jaar hetzelfde te moeten doen. Als _[polymath](https://en.wikipedia.org/wiki/Polymath)_ is het onmogelijk om zo'n lange periode voor hetzelfde te reserveren. Het [Dreyfus model](https://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition) schrijft een decennium voor als de tijd die nodig is om exceptionaliteit te kweken - daarna wordt het tijd voor iets anders. De geïncarneerde Jezus in [The Man from Earth](https://www.imdb.com/title/tt0756683/) doet ook elke 10 jaar iets anders - wat moet een mens anders als hij eeuwig leeft?
Ik denk het niet.
Het is tegenwoordig al een hel om vijf jaar hetzelfde te moeten doen. Als _[polymath](https://en.wikipedia.org/wiki/Polymath)_ is het onmogelijk om zo'n lange periode voor hetzelfde te reserveren. Het [Dreyfus model](https://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition) schrijft een decennium voor als de tijd die nodig is om exceptionaliteit te kweken - daarna wordt het tijd voor iets anders. De geïncarneerde Jezus in [The Man from Earth](https://www.imdb.com/title/tt0756683/) doet ook elke 10 jaar iets anders - wat moet een mens anders als hij eeuwig leeft?
Champagne maken bijvoorbeeld. Ook al betekenen jaren niets voor onze gids, toch weet hij bij het proeven van champagne zich exact te herinneren welke blend dat was, hoe de oogst dat jaar was en in welke ton het sap aan het gisten was. De ontmoeting leert mij veel gematigder te zijn als het gaat over het spenderen van tijd. Een doctoraat van zes jaar (enkelvoud) doorploeteren hoeft helemaal niets met ploeteren te maken hebben. Die zes jaren (meervoud) zullen zo ook wel voorbij vliegen.
@ -42,4 +41,4 @@ Om af te sluiten met onderzoek: [What happened to the Time? The Relationship of
> There is a connected relationship between time and occupation.
Dus toch.
Dus toch.

View File

@ -79,7 +79,7 @@ That's simply a matter of configuring your `.bashrc` or `.bash_profile` files -
OSX's Finder makes it easy to create shortcuts for directories that have been heavily used, like my `~/development` dir where all repositories live. Luckily, Ubuntu's file manger also has this feature:
![linux files](../files_linux.png)
![linux files](../files_linux.jpg)
##### Taking screenshots of areas

View File

@ -32,7 +32,7 @@ Mijn vrouw heeft van haar jeugd nog een originele SNES console die we ook aanges
Dat digitale aan de SNES Mini stoort me al vanaf het eerste uur dat ik er mee speel: het keuzemenu dat een vrolijk liedje speelt terwijl jij je spel kiest. De vraag is: welk spel? Niet genoeg keuze. Tools als Hackchi2 installeren bevrijdt je Mini van het ronde getal 20 en laat je toe om eender welke ROM die je in je bezit hebt er bij op te proppen. Nog meer keuze. Welk spel? De Hackchi tool heeft addons waarbij emulators van andere consoles geïnstalleerd kunnen worden. Ik kan plots een Playstation 1, DOS(Box) of SEGA MegaDrive spel spelen op mijn Nintendo SNES... Nog meer keuze. Welk spel?
![](/img/snesmini.jpg "SNES Origineel en SNES Classic Mini")
![](../snesmini.jpg "SNES Origineel en SNES Classic Mini")
Hoe meer _luie keuze_ ik heb (een druk op de knop, een selectie uit een menu), hoe minder ik toegewijd ben om een spel van begin tot einde écht te _spelen_. Dit vind ik heel vreemd. Ik ben bijvoorbeeld ook opgegroeid met een Gameboy en tijdens beursbezoekjes schuim ik dan standjes af om herinneringen terug tot leven te laten komen. Die dure heraankopen maken mij blijkbaar wel erg toegewijd. Alle GBA Castlevania's zijn volledig herspeeld. De actie van een fysieke casette in een console te steken en die aan te zetten geeft mij veel meer goesting om er iets langdurig mee te doen dan simpelweg iets te kiezen uit een hoop dingen die reeds beschikbaar zijn.

View File

@ -70,7 +70,7 @@ As you can see, I've been inspired by other well-known C#/Javascript frameworks
Assertions like `reg`, `scratchpad`, `port` verify the correct end state of your Assembly file. Seeing a red or green test in your favorite IDE or in the console is a _huge_ improvement over this:
![](../picoblaze_sim.png "Simulating hardware in a testbench")
![](../picoblaze_sim.jpg "Simulating hardware in a testbench")
Inspecting a wave form after simulating your hardware configuration in tools like Vivado is a huge pain compared to writing separate test cases in software. I know the Test Bench tooling can be used to write test for your synthesis, but when uploading a bitstream into an FPGA, you never know whether it's the HDL that's incorrect, or the Assembly loaded into it.

View File

@ -26,7 +26,7 @@ Na een zware werkdag, die ook nog eens eiste dat je de frustrerende files moest
Onmiddellijke voldoening heeft ook te maken met de onmiddellijke aanwezigheid van alles, dankzij de hyper verbonden wereld en de 150gr zware apparaatjes die precies een extensie van onze hand geworden zijn. Als we nu op vakantie zijn, kunnen we onmiddellijk de familie kiekjes opsturen, waarvan we uiteraard verwachten dat ze onmiddellijk bekeken worden. Wanneer mijn ouders op vakantie zijn, word ik gebombardeerd met foto's van idyllische landschappen, goedkoop bier, en veel te veel 'selfies'. Daar wordt dan onmiddellijk op gereageerd, liefst met zaken als 'leuk! (hartje) (hartje)', of 'amuseer u, hier is het nog steeds kak!'.
Vijfentwintig jaar geleden reden mijn ouders mijn zussen en mij voorbij de Spaanse grens, om een dag later het dorpscentrum in te rijden en peseta's in een telefooncel te steken, hopend op een verbonden lijn die de grootouders geruststellen dat we allemaal nog leven. Vakantiefoto's werden uiteraard pas ontwikkeld na de terugreis.
![](/img/mediamarkt.jpg "Meer wachten dan nodig? Ik ben toch niet gek!")
![](../mediamarkt.jpg "Meer wachten dan nodig? Ik ben toch niet gek!")
Dat klinkt allemaal redelijk pessimistisch, verlangend naar een vervlogen tijdperk van telefoonkaarten in een pre-Euro zone. In feite wil ik dit zeggen: waarom is het nodig om nutteloze foto's van nietszeggende dingen door te sturen op het moment zelf, in plaats van ter plekke te genieten en het verhaal achteraf te vertellen? Want wat valt er de familie te vertellen bij de thuiskomst, als we heel de rit al veel te intens hebben meegemaakt? 'Oh ja, dat wist ik al, ik zag het op foto x'. Iedereen is al op de hoogte van elkaars reilen en zeilen voordat we mekaar effectief zien. Dat betekent dat er op het moment van weerzien maar bitter weinig te vertellen valt. En dan zijn we verwonderd dat sociale capaciteiten toch niet de grote sterktes van tegenwoordig zijn.

View File

@ -71,7 +71,7 @@ The result is not great. Instead of utilizing URLs such as `/page/2/`, as the de
#### The Blog Detail page
!["Invalid brizy content"](../brizy_invalid.png "Did I do something wrong?")
!["Invalid brizy content"](../brizy_invalid.jpg "Did I do something wrong?")
A lot of shortcodes are needed here. Blog title, blog contents, blog metadata (the detail footer), blog comment forms, showing a list of categories, a list of most popular or recent posts in the sidebar, ... The problem for my wife is that while designing this page, there are no placeholders available, so it's a bit of a guess how it will turn out to be.

View File

@ -21,7 +21,7 @@ And it did not happen overnight. I started working on the idea in 2017, but was
To focus on the writing itself, and not the layout and whatnot, I decided to write in Markdown. In a non-fiction book, such as the one I was planning to write, it is important not to overburden readers with flashy layouting - so Markdown's minimalistic approach helped a lot here: underscores to _emphasize_ things is mostly enough.
![subl](../makingof-schrijven.png)
![subl](../makingof-schrijven.jpg)
### The toolchain
@ -64,7 +64,7 @@ The first three pages of the book are the cover pages, and they are set:
An optional fourth page, which I included, contains the copyright, edition information, and so forth. Everything is part of `\frontmatter`, and written in LaTex itself. I got inspired by some examples provided by the memoir fellows:
![subl](../book-coversheet.png)
![subl](../book-coversheet.jpg)
The style is called 'Gentle Madness'. I had no intention of pouring hours into making my own original version of something that was already good enough: it's part of the cover pages... You know, the things you flip through, in search for the actual content?
@ -72,7 +72,7 @@ The style is called 'Gentle Madness'. I had no intention of pouring hours into m
As said before, memoir comes with 'batteries included' - and that is definitely the case for chapter styles. I opted for a minimalistic chapter number and a title - that's it:
![subl](../book-chapter.png)
![subl](../book-chapter.jpg)
The tex needed to do that:
@ -122,7 +122,7 @@ Enter the `perpage` package, where footnote numbering can be tampered with, with
The end result looks like this:
![footnotes](../book-footnotes.png)
![footnotes](../book-footnotes.jpg)
For the header and footer, I wanted to maximize the available space on a page. That means only one of both, so no header. It is important to distinguish footer text from chapter text, so I opted to reduce the harshness of the text by using gray and another font type. It can be configured as a separate chapter style, that should distinctively **not** be applied to 'part x' pages:
@ -138,7 +138,7 @@ For the header and footer, I wanted to maximize the available space on a page. T
For citing work, the rough draft employed a dusty academic way (the default way) of doing that: author and year between brackets: 'in research blabla bla (Surname, 2019).' It gave me a headache: it does _not_ read fluently at all. the '\[10\]' thing at the end of a sentence was not that great either. It is non-fiction, but it should not be a boring piece of academic work! In the end, I opted for superscript with a reduced font size:
![cite](../book-cite.png)
![cite](../book-cite.jpg)
I found that citation style in [zotero.org/styles](https://www.zotero.org/styles) and [https://citationstyles.org/authors/](https://citationstyles.org/authors/), it's called `the-open-university-numeric-superscript.csl` and added as a parameter in the metadata YML file for pandoc to parse. As you can see from the pandoc command, the `pandoc-citeproc` filter was used - it worked well enough and meant not manually fiddling with bibliography tools.
@ -147,7 +147,7 @@ I found that citation style in [zotero.org/styles](https://www.zotero.org/styles
The problem with using LaTeX and the memoir style is that most of the default settings feel a bit too rigid - too academic. I tried shaving off that word 'academic' as much as possible. For lists, this meant reducing it's complexity to simply a pointer to the page instead of numbering them individually:
![figure](../book-figures.png)
![figure](../book-figures.jpg)
After a lot of stackoverflow hints, I managed to nail it down to:
@ -189,7 +189,7 @@ For 'default' inline figures, that works. However, some figures I wanted spread
The end result:
![img](../book-image.png)
![img](../book-image.jpg)
Sadly, to make use of the new LaTeX command, I had to interleave it with the rest of the text in my Markdown chapter file. The above screenshot is the result of this:
@ -254,7 +254,7 @@ I found the solution to the problem on another blog and can't remember which one
The end result, at the bottom of the page:
![starbreak](../book-starbreak.png)
![starbreak](../book-starbreak.jpg)
### The verdict

View File

@ -12,7 +12,7 @@ After the previous months' [reviving of a 80486 PC](/post/2020/09/reviving-a-804
The 486 PC is able to run games from the early eighties to 1995. My Windows XP machine is a late WinXP era PC that is able to play games up to 2011. I needed something that sits comfortably in between these two timelines. The original Pentium CPU wasn't on my mind since a fast 486 (DX4) is able to beat it. As a kid, in the year 2000 I was a proud owner of a newly released AMD Athlon Thunderbird `1GHz`, upgrading from a Pentium II. It was the year of the Gigahertz barrier breach:
![](../ClockSpeed.png "Stock CPU clock speed history. Source: maximumpc.com")
![](../ClockSpeed.jpg "Stock CPU clock speed history. Source: maximumpc.com")
As clearly visible in [the graph](https://web.archive.org/web/20150418074002/http://www.maximumpc.com:80/article/home/history_dream_how_ultimate_pc_has_evolved_15_years), 2000 was a big turning point for CPU speed. The Thunderbird was one of the first, that was also easily overclockable. AMD's K7 Athlon XP breached `2GHz` only two years later. So, the quest became clear and my mind was set: chasing nostalgic values again. I even managed to find my original [AOpen HQ45 mid tower](https://www.cnet.com/products/aopen-hq45-mid-tower-atx-series/) again!

View File

@ -25,7 +25,7 @@ A quote from the book that resonated with me:
### 1. Acceleration
![](../icon-iterm.png#right)
![](../icon-iterm.jpg#right)
_Don't type the same commands again and again_. Find something to do the work for you. Neal suggests to use things that _remember history_: clipboard extenders, history keepers that can be automatically recalled, command prompt plug-ins, and so forth. These things seem so mundane and obvious nowadays. Yet, who knows every [obscure feature](https://iterm2.com/features.html) of their [Zsh](https://www.zsh.org/)-powered [iTerm2](https://iterm2.com/)? A few I just learned yesterday:
@ -35,7 +35,7 @@ _Don't type the same commands again and again_. Find something to do the work fo
Things like a built-in password manager, badges, image integration and clipboard managing are less useful for me, since I use other tools that work outside of a shell. I'm still discovering new features and it's impossible to list them all here.
![](../icon-alfred.png#right)
![](../icon-alfred.jpg#right)
Another saying: _search trumps navigation_. Don't use Finder to click through all directories if you know what you're looking for: let the tools do the work for you. Remember Google's clean and simple search UI? There's one single input box: type and thou shall find. I cannot recount the number of times I've pressed `CTRL+SHIFT+T` in Eclipse in my life, or `⌘+O` in IntelliJ. Why limiting yourself to only use these search tools inside a specific code editor, when you can have it across your Mac?
@ -73,7 +73,7 @@ _"Can I script that?"_ should be the first thing that springs into your mind whe
Another thing Neal was advocating for: use a _real_ programming language when scripting. You never know when that _jig_ will turn out to be a permanent part of your development cycle. If that is the case, it will get expanded. If that is the case, it better damn well be easily unit-testable!
![](../icon-firefox.png#right)
![](../icon-firefox.jpg#right)
In 2010, Selenium and WebDriver was thé tool to automate your browser, and to write acceptance tests with. Nowadays, we have [Cypress](https://www.cypress.io/) and others that are gaining popularity. One thing that struck me in that Devoxx presentation was, why limit the usage of these tools to your workday? They can also be useful to automate mundane things such as form completions - outside of the enterprise application you're working on. [Tampermonkey](https://www.tampermonkey.net/scripts.php) and [MonkeyScripts](https://monkeyscripts.org/) also fall into this category.
@ -93,7 +93,7 @@ This is the single best reason to completely ditch (manually adding) Javadoc. Us
_Learn to get to know your tools._ Do not just "use" them - understand them, click through all menus, write down the shortcuts, and try to learn one (of an action you of course actually use) very day. This isn't limited to just your (code) editor!
![](../icon-sublime.png#right)
![](../icon-sublime.jpg#right)
Talking about editors: pick one and dive deep - it's as simple as that. Editors come and go, but Vi and Emacs will probably stay forever, so both are a solid choice - if you can muster chewing through thick guides and a _very_ steep learning curve. In 2012, I gave up on Vi (sorry, I'm a softie) and bought [Sublime Text](https://www.sublimetext.com/) together with my first MacBook - probably the best decisions I've made that year. Sublime is available on any platform. Funnily enough, eight years later, I'm still learning new Sublime tricks. Admittedly, it takes a lot of effort to deliberately learn new things when actually you want to concentrate at the task at hand. A few recent things I've learned:

View File

@ -31,7 +31,7 @@ A selection of community smells identified by his team, from interviewing many p
These are only a few highlights: there are many more available in [Damian's papers](https://scholar.google.com/citations?user=l7BGAq8AAAAJ). I love these analogies, because it suddenly makes it much easier to _talk about them_! Jumping from code smell to community smell isn't hard, and everybody knows communities don't build themselves. Jessica Kerr goes as far as saying [great teams are "symmathesized"](https://jessitron.com/2018/04/15/the-origins-of-opera-and-the-future-of-programming/).
![](/img/pratoway/1.png "Community work equals a good harvest.")
![](/post/2018/06/pratoway/1.jpg "Community work equals a good harvest.")
My own findings from [a decade in the industry](/post/2018/10/a-decade-in-the-industry/) and [creating a software company culture](/post/2018/06/over-bedrijfsethiek/) aren't far off: work with people, not technology. That means that when programming in teams, the above community smells should receive more attention than "mere" code smells! Nowadays, most software-centered conferences include a social issues track. There certainly is some attention for social and psychological aspects of software engineering, but not nearly enough. That is the most important reason why I chose to [investigate non-technical skills](/tags/phd) in software engineering education.

View File

@ -16,7 +16,7 @@ Sure, the Grey Brick is very old. Sure, it was based on what Nintendo's Gunpei Y
Take a look at the average battery life of Nintendo's handheld systems over the years:
![](../batterychart.png "Average battery life of devices.")
![](../batterychart.jpg "Average battery life of devices.")
Scrambling together these numbers required a lot of guesswork as my own playthroughs and reported numbers from various sources differed quite a bit. [Nerdly Pleasures](https://nerdlypleasures.blogspot.com/2014/10/battery-life-in-8-bit-game-boy-line.html) explains battery life in the 8-bit Game Boy line more thoroughly. [Wired](https://www.wired.com/2012/09/battery-test/) and [IGN](https://www.ign.com/articles/2019/07/17/nintendo-switch-how-the-new-models-battery-life-compares-to-other-handhelds) also conducted bigger tests.

View File

@ -15,7 +15,7 @@ I hate pretending to be a salesmen. Their stereotypical sleezy ways of turning p
I've been attracting a small following of bread baking enthusiasts on Facebook since I started uploading pictures and stories onto it in 2012. Thus, it only seemed natural to announce the release of the book on Facebook. That's exactly what I did in May 2020, with this sale graph as a consequence:
![](../booksalegraph.png)
![](../booksalegraph.jpg)
More than 100 people bought the book the first few months, and I'm very grateful for that. After the initial excitement of a newly released bread adventure book wore off, the monthly sales were still doing all right. Mind you, I wasn't investing any time to promote it, besides putting it on my website [redzuurdesem.be](https://redzuurdesem.be). The total amount of physical books sold since then is 494. That is still awfully low. There are a couple of reasons for that:

View File

@ -24,11 +24,11 @@ If I read a text, and the contents appeals to me, I might go ahead and read a fo
[The Rise of Yeast](https://www.goodreads.com/book/show/34757361) is such a book. I love its contents---I'm a big yeast nut. I wish I read it before writing my own book [about the science of sourdough bread](/post/2021/08/on-selling-self-published-books/). It certainly is a geeky book. One of those books where I love to read the footnotes. But I can't. They could be references! It's a tarp! A missed opportunity.
![](..//theriseofyeast.png "A mish-mash of 'footnotes' in The Rise Of Yeast.")
![](..//theriseofyeast.jpg "A mish-mash of 'footnotes' in The Rise Of Yeast.")
While thinking about the layout for my own book, I ended up making a clear distinction between footnote and reference by using symbols for footnotes---that appear at the end of the very same page---and numbers for references. The used symbols "reset" for every page, as there is space for a new block of footnotes for every page. The numbers do not: each reference is assigned a unique number throughout the whole book.
![](/post/2020/05/book-footnotes.png "Footnotes in my own book.")
![](/post/2020/05/book-footnotes.jpg "Footnotes in my own book.")
Since I self-published my work, I had to decide everything: from font (size, style, spacing) to margins, and yes, footnote styling and placing. Perhaps many authors who work with publishers do not have a saying in this process. Another missed opportunity.

View File

@ -56,7 +56,7 @@ public function subscribe($email, $tag) {
Listmonk uses numbered IDs in the `lists` array, which kind of sucks, so associative array `$tags` "solves" this. Lastly, since we don't want to collect a name, but the API still requires one, I simply submit "anonymous".
![](../listmonk.png "The Listmonk Campaign page.")
![](../listmonk.jpg "The Listmonk Campaign page.")
So far, we're happy with the switch. A few things to take into account:

View File

@ -14,7 +14,7 @@ If you'd like to chime in, you can submit your monthly quiz at http://www.retrog
The November 2021 quiz was themed **Metroidvania**. As a fanboy, I thought I could easily handle it. Yeah. It seems that there's a big difference between guessing and correctly guessing. Here is the quiz picture:
![](../retroguess.png "The November 2021 Quiz.")
![](../retroguess.jpg "The November 2021 Quiz.")
Looks simple enough, right? Samus, Soma, ... Uhh, what's the third one? Oh man! Give it another look (and thought).
@ -48,6 +48,6 @@ Below are all twenty-five answers:
Last month indeed resembled a typical [game meme grid](/post/2021/09/favorite-game-meme/), except this time you have to guess its content based on only a portion of a screenshot instead of the whole box art. Sometimes, the quiz is a fake screenshot consisting of assets of multiple games, such as the one below where The Duke's shotgun appears to blast a Stormtrooper, a Rise of the Triad eye is flying by, a dead imp from DOOM decorates the floor, and the stat bar is taken from Shadow Warrior. Cool! What else can you spot?
![](../retroguess2.png "The Fake Screenshot Quiz.")
![](../retroguess2.jpg "The Fake Screenshot Quiz.")
Most past quizzes are still online, so in case you're bored, taking a peek is highly recommended. Stay tuned for the December one. Thanks again Mr_Horizon, we nerds do love our retro gaming quizzes!

View File

@ -13,7 +13,7 @@ Last December, our energy provider, the [Vlaamse Energieleverancier](https://www
I decided to take a look at the history of charged prices (indicated in red, solid line) in relation to our actual usage (green, dashed line, multiply by `1000`) and the mean temperatures for each quarter in the past five years (blue, dotted line, multiply by `10`). Here's the result:
![](../gasprices.png)
![](../gasprices.jpg)
The final bill isn't in yet so I can't plot the 2021 actual usage part. This only accompanies for central heating (natural gas) prices. We have solar panels installed and I wasn't interested in electricity prices.

View File

@ -12,7 +12,7 @@ After plotting the [natural gas prices of each quarter the last five years](/pos
Let's first take a look at another graph (blue, dotted: actual usage in cubic meters divided by ten; green, slashed: absolute total amount to pay yearly, divided by hundred; red, solid: unit price of water consumption on the bill):
![](../waterprice.png)
![](../waterprice.jpg)
I lack the proper numbers for year 2018, which explains the flat line between 2017 and 2018. It is not too clear from the graph, but the raw unit price of water in 2015 was `€1.2066`, and in 2020 `€1.8364`. That's an increase of more than `51%` over five years, which is by itself quite stunning!

View File

@ -27,7 +27,7 @@ After a bit of trail and error, I found the last 8 bytes of the password being s
**Problem 3**: if we know where the password we _entered_ is stored, can we also figure out the passwords the game will compare it with? That's where GDB's memory access breakpoints come in. Set it to `$DC00` in read-only mode and voila: after pressing start in the password select screen, the debugger breaks at `$7456` in ROM bank 2 with instruction: `ld a, (de)`. Register `de` contains our password pointer.
![](../bgb.png "The password check routine found using the BGB debugger.")
![](../bgb.jpg "The password check routine found using the BGB debugger.")
After breaking my head on the cryptic routines there, I realized I had to scroll up a bit to `$7444` where this specific routine actually starts. You can see that it loads both `$DBFC` (just before where we enter the password in) into `de` and `498A5` into `hl`. Curious! After a lot of `inc` and `ldi` instructions (these increase both pointers, meaning byte per bytes gets read, see the [Game Boy Opcode summary](http://www.devrs.com/gb/files/opcodes.html)), we encounter a couple of `jr nz, x` instructions that form a loop (the check itself). Debugging is annoying because the breakpoint is hit four times per drawn frame.

View File

@ -13,7 +13,7 @@ I don't like running with a smartphone (or music). Even keys can get irritating.
After recharging, my watch still works. Sort of. The GPS locks in quickly (thanks TomTom) and the live stats are still visible. However, as soon as I want to view other data on a computer, I'm out of luck: Nike pulled the plug on the SportWatch ecosystem. Gone are the servers and the syncing software. I wasn't keen on uploading my run data to their server anyway, but the problem is even more severe. The Nike+ Connect software _requires_ a server connection in order to upload GPS and metadata. It's _never_ stored locally!
![](../sportwatch.png)
![](../sportwatch.jpg)
The popularity spike of Strava birthed all sorts of small projects that [automatically export from Nike+ to Strava](https://kodyvajjha.wordpress.com/2016/06/18/exporting-nike-run-data-to-strava-and-as-a-csv-file/). Even if I wanted to use Strava, these are useless nowadays: this exports from the `https://developer.nike.com/services` API, which is defunct. I only found a single GitHub project that attempts to directly pry out the data from the watch itself. Thanks to the closed-source secrets of the Nike software, Dutch university students Leendert van Duijn & Hristo Dimitrov had to listen in on the communication between OS, USB, and Nike server, using BurpSuite, TcpDump, Wireshark, pycap and pyusb. The details can be found in their paper, stored in the [SportWatch hacking GitHub repository](https://github.com/Jurph/sportwatch).

View File

@ -29,13 +29,13 @@ You have basically two options here. Option one: find templates someone else alr
The second option then: create your own custom Game Boy cassette covers that look like this:
![](../cassette-template-gb.png "The Game Boy cassette cover template.")
![](../cassette-template-gb.jpg "The Game Boy cassette cover template.")
You can download the three templates here:
- [For Game Boy](../cassette-template-gb.png);
- [For Game Boy Color](../cassette-template-gbc.png);
- [For Game Boy Advance](../cassette-template-gba.png).
- [For Game Boy](../cassette-template-gb.jpg);
- [For Game Boy Color](../cassette-template-gbc.jpg);
- [For Game Boy Advance](../cassette-template-gba.jpg).
To fill the void, [The Cover Project](http://thecoverproject.net/) is an indispensable resource---most game covers have been scanned in using a high resolution. If all else fails, use a search engine. For the smaller side in-between front and back, I usually paste the logo and fill the color with a primary or secondary color of the front game cover to seamlessly match every side. The shorter flap, the back, matters less to me: as long as the front and middle is okay, I'm happy.

View File

@ -9,7 +9,7 @@ tags:
In my [The Modern QR Code Life](/post/2022/06/the-modern-qr-code-life) rant, I briefly mentioned _Farm Girl_ in Notting Hill, London, as a hipster place we ended up in four Saturday mornings ago, in pursuit of a good bowl of porridge. It turned out that _Good_ was an understatement: it was superbly splendidly amazing. The image below is lifted from the QR-code powered online menu [at arch2order.com](https://o-farmgirl.arch2order.com/menu/notting-hill):
![](../porridge.png "Description: Cherry Ripe Porridge (GF, VG) gluten free oats, coconut milk, desiccated coconut, sour cherry jam, cacao nibs & coconut yoghurt. Allergens: Contains soya and tree nuts.")
![](../porridge.jpg "Description: Cherry Ripe Porridge (GF, VG) gluten free oats, coconut milk, desiccated coconut, sour cherry jam, cacao nibs & coconut yoghurt. Allergens: Contains soya and tree nuts.")
To get to the more nourishing items on the menu, one of course has to scroll past the fancy coffees, lattes, teas, and pastries. As I tried grabbing the URL of the image to include here, I couldn't believe what the Network Inspector reported: by then, your browser has downloaded an eye-watering `52 MB` of content. Fifty-Two. Mega. Bytes. What. The. Fuck? Each beautifully arranged photograph costs a sloppy `5+ MB`, while the images themselves are contained within a `100x100 px` `<div/>`. This is sickening, worrying, and makes me angry at so many levels. The same is true in mobile mode---so when I was dutifully using my international mobile plan in their bar, looking at something to eat, my smartphone already gobbled up fifty-plus megabytes of crap.

View File

@ -1,4 +1,18 @@
[
{
"author": {
"name": "https://jacky.wtf/about",
"picture": "/pictures/jacky.wtf"
},
"name": "",
"content": "Hand-waving is a bit gracious, no? There's an extension that allows for a flexible form of filtering (one could employ WoT for example) via https://indieweb.org/Vouch. There's also solutions people can use: https://brainbaking.com/post/2022/04/fighti...",
"published": "2022-07-09T19:36:57+00:00",
"url": "https://jacky.wtf/2022/7/vZJk",
"type": "mention",
"source": "https://jacky.wtf/2022/7/vZJk",
"target": "https://brainbaking.com/post/2022/04/fighting-webmention-and-pingback-spam/",
"relativeTarget": "/post/2022/04/fighting-webmention-and-pingback-spam/"
},
{
"author": {
"name": "Wouter Groeneveld",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 321 KiB

After

Width:  |  Height:  |  Size: 321 KiB

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 443 KiB

After

Width:  |  Height:  |  Size: 527 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Some files were not shown because too many files have changed in this diff Show More