Friday, May 12, 2023

Vzkříšení II.

Sledoval, jak se okolní stavby začaly hroutit, jídelna se začala sesypávat s nimi a nakonec zmizela v hromadě sutin. Celou čtvrtinu základny zachvátily plameny a na oblohu se vzneslo množství dronů, pohybujících se v uskupeních, připomínající splašená hejna ptáků.

Základna měla tvar kříže a v jejím středu se nacházel kosmodrom. Každé rameno kříže tvořily dvě dlouhé plošiny s jeřáby a dalším vybavením. Při bližším pohledu se zřetelný tvar rozplynul a celá scéna připomínala obrovské mraveniště hemžící se nespočtem malých dronů a nepravidelných funkčních struktur.

Jedna strana základny byla vážně poškozená, plameny se mísily se sytě oranžovou září hvězdy, která se rozptylovala v atmosféře. Hvězda, která se na obloze jevila dvakrát větší než Slunce, visela nízko, těsně nad obzorem, a její tvar byl zkreslený refrakcí.

To bylo vše, co na záznamu mohl vidět. Jeho poslední vzpomínka před událostí byla jak usínal ve svém pokoji - mezi událostí a touto vzpomínkou byla devatenáctihodinová mezera. K dispozici byly i další videozáznamy, ale na nich byl zachycen pouze při chůzi po chodbách. Rozhodl se, že si je prohlédne později.

"Probudil jste se po šedesáti osmi hodinách, po tom, co se nám podařilo omezit následky výbuchu a zajistit dostatečné zdroje. Útok na základnu byl jedním z několika souběžných útoků v systému. K dalším incidentům došlo na druhé planetě a v důlních zařízeních ve vnějších oblastech. Ztratili jsme téměř veškeré spojení s hypernetem, zůstaly jen dva malé datové portály. Další připojení dorazí v příštích osmi měsících prostřednictvím nadsvětelných lodí z nejbližšího strongpointu," řekl hlas a dodal: "To je vše, co vám mohu prozatím říci."

Hlas byl jeho jediným zdrojem informací od probuzení. Když se odmlčel, obklopilo ho děsivé ticho a prázdnota. Nebylo nic vidět - jen prázdnota a jeho myšlenky.

Monday, May 8, 2023

Vzkříšení I.

Na tmavě modré hladině oceánu byly velkými vlnami zmítány malé úlomky ledu. Ze vzdálenosti pozorovatele se tyto vlny zdály poměrně bezvýznamné. Mrazivý exteriér osvětlovaly slabé oranžové paprsky světla vycházející ze zakrytého obzoru, skrytého hned za věžovou konstrukcí.

Obloha byla směsicí temně rudé a modré barvy, na níž se až na několik jemných cirrových útvarů téměř nevyskytovaly mraky. Chladné počasí bylo naštěstí od útulné jídelny odděleno průhlednou bariérou. V tuto hodinu v jídelně panoval čilý ruch, protože se lidé z okolních laboratoří shromáždili kolem dlouhého bufetového stolu, na kterém se nacházely dvě dlouhé porce in vitro masa - rybího a hovězího.

Korven se však soustředil především na venkovní scenérii, hleděl na oblohu a oběma rukama svíral hrnek teplého čaje. Byl ztracený v hudbě, která mu hrála v uších, nerozptylován žádnými zprávami z domova, jen tak chvíli odpočíval. Právě dojedl a dál pozoroval výhled, rámovaný staveništěm s četnými mechanickými rameny a jeřáby po obou stranách. Přímo pod sekcí, v níž se nacházela jídelna, kotvil osamělý trimaránový dron.

A pak...

Friday, May 5, 2023

Červí hnízdo I.

Matně osvětlené ledové krystalky, sotva viditelné, ležící roztroušené na zemi, se začaly pohybovat v důsledku pohybů pod zemí. Pohybující se půda odhalila podlouhlého, mnohonohého hmyzího tvora, připomínajícího bezbarvého ostnitého červa - nepojmenovaný druh, reprezentovaný pouhým genomickým záznamem v katalogu. Tvor se probudil z letargického sběru energie v podzemí, když ho vyburcovaly teplé poryvy větru. Vítr vycházel ze všudypřítomného karmínového obzoru, občas zastřeného mraky.

Tvor začal zhluboka dýchat čerstvý vzduch z atmosféry, atmosféry s nízkým obsahem kyslíku. Čerstvý vzduch naplnil jeho tělo mnoha nosy, rozmístěnými po celém těle. Zatímco právě stál, začaly se mu na zádech objevovat dva, v porovnání s jeho tělem poměrně malé, páry křídel.

Na obloze vyčnívala o něco jasnější červená tečka - červený trpaslík, dvojče domovské hvězdy planety a součást tohoto dvojhvězdného systému. Ačkoli byl momentálně osamocený, občas ho na obloze doprovázely planety putující ve vnějších částech soustavy. Tvor viděl tuto hvězdu jasněji, protože je jeho zrak posunutý dále do infračerveného spektra, kde červení trpaslíci vyzařují většinu své elektromagnetické energie. Tento typ vidění je zde užitečnější, pomáhá při hledání potravy a úkrytů, typicky míst vyzařujících teplo z podzemí, kde v chladnějších oblastech planety, kousek od terminátoru, sídlí většina živočichů.

Samci se instinktivně pohybují dále od terminátoru, směrem k chladnějším částem planety, aby si zde našli partnerku. Samice, větší a odolnější, žijí v nejchladnějších obyvatelných oblastech, tak, aby odrazovaly predátory, a přinutily samce k celoživotnímu výkonu, který takto vede k přirozenému výběru nejsilnějších jedinců. V rozlehlé zmrzlé pustině se navzájem poznávají za pomoci infračerveného blikání, částečně viditelného i ve viditelném světle. Samec je nakonec zkonzumován - ale stejný osud čeká i samice. Ty se vracejí zpět blíže k terminátoru, kde nakonec slouží jako potrava pro své potomky. V nejlepších případech se na sklonku svého života obětují dravci nebo mrchožroutovi a přenesou svá mláďata jako parazity na nového hostitele.

Cesta tohoto konkrétního samce byla však náhle ukončena. Noha dálkově ovládaného avatara ho rozdrtila a vyřadila z genofondu planety. Avatar ale pokračoval ve své rychlé cestě vydávajíc se hlouběji do temnoty odvrácené strany planety.

Friday, March 31, 2023

Digital Transformation (13. - 19.3.2023)

Two webinars:


MLOps tips and tricks - 75 code snippets

Using MLflow with ATOM to track machine learning experiments


Are expert systems dead? - a review of recent trends, use cases and technologies


ChatGPT - understanding what it can do and what it cannot do

Data as Achilles heel of AI - hindering AI's effectiveness with data silos and dark data

Monday, March 27, 2023

IT links (13. - 19.3.2023)

Custom constructors in Java Records give us greater control during object initialization by allowing for data validation and error handling.

Using Java Records as DTOs in Spring Boot 3 applications with Hibernate 6.

Reminding basics:

9 outdated ideas about Java

What do we know about JDK 20 and JDK 21 now? 

A new family of interfaces representing collections with well-defined sequences or orderings

Spring Data 3 introduces List-based CRUD repository interfaces as a replacement for the existing Iterable-based interfaces. 

Maven Reactor and a multi-module Maven project with inter-module dependencies.

How can a Java heap dump be obtained from an application running on a Kubernetes pod?

Comparing fluent interface design pattern with builder pattern.

RESTful Architecture cheatsheet

Adopting Contract-Driven Development

Troubleshooting and operating AWS resources from Microsoft Teams with AWS Chatbot.

Sunday, March 5, 2023

When is too less code too much?

Let's start with one very nice quotation from 'Java Performance: The Definitive Guide: Getting the Most Out of Your Code' book (available here):

... but the conflict here is that a small well-written program will run faster than a large well-written program. This is true in general of all computer programs, and it applies specifically to Java programs. The more code that has to be compiled, the longer it will take until that code runs quickly. The more objects that have to be allocated and discarded, the more work the garbage collector has to do. The more objects that are allocated and retained, the longer a GC cycle will take. The more classes that have to be loaded from disk into JVM, the longer it will take for a program to start. The more code that is executed, the less likely that it will fit in the hardware caches on the machine. And the more code that has to be executed, the longer it will take.

This summarizes a lot of stuff and I think that does not need any further explanation regarding mentioned cases.

Generally, in programming, there are principles like KISS (Keep It Simple and Stupid), DRY (Don't Repeat Yourself), YAGNI (You Aren’t Gonna Need It), YDNIY (You Don’t Need It Yet) trying to teach us to write as less code as possible. 

You could potentially say that the code is our enemy - quoting:

Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted.

The more code you have, the more places there are for bugs to hide. The longer checkouts or compiles take. The longer it takes a new employee to make sense of your system. If you have to refactor there's more stuff to move around.

... and more.

And one quote, which we can use here also is (unfortunately, I don't have a source or author):

A perfect system is one that does not exist but still fulfills its function.


Benefits of writing less code

Less code is easier to understand, and it decreases cognitive load - the mental effort required to understand the code. When there is less code, it is easier to see the overall structure and flow of the program, and it is easier to understand how each part of the code is related to the rest. This makes it easier for others (and yourself) to work with and modify the code.

Less code is often more efficient. By writing less code, you can avoid unnecessary computations and reduce the number of function calls.

Less code is easier to maintain and debug. This makes it easier to find and fix problems when they do arise. For each new line of code, we need to verify it works properly. So, the lines that don't exist don't need tests, and they are not bringing new bugs. 

But you should not understand it in a way that you should write as less code as possible at all costs.


When to write more code

If you blindly apply the principles like YAGNI, you can hurt yourself later on. There are, of course, reasons why we can "waste" more lines of code. For example for better abstraction, more interfaces, even if it might look like they are not needed right now. Things decreasing coupling. Things that are self-explainable and improve better code organization. 

It is good to think in terms of smaller chunks of code, splitting the application (doesn't matter if we are going to call them functions or methods). This allows us to organize the code in a better way.

Smaller pieces of code are having simpler logic, helping us with easier code analysis (that is provided by current IDEs) - for example easier code duplication detection. We don't need to do the same change in multiple places, which brings fewer bugs. It allows us to use more abstract, reusable patterns.

Shorter pieces of code help us, for example, to avoid conflicts during merging, that can be caused by parallel work on a complex method changed by multiple developers at the same time.

Code splitting helps us with a clearer separation of concerns and Single Responsibility Principle (SRP) application. 

Shorter pieces of code are typically easier to test, as they have fewer code paths and are less complex.

Shorter functions/methods usually have a lower number of parameters, making testing easier. However, if a function/method has too many parameters, it may be a sign that the method is trying to do too much and should be broken up into smaller methods.


Code splitting

Code splitting can follow the rule of ten, which suggests that methods or functions should ideally have no more than ten lines of code. Additionally, one class should not have more than ten functions/methods, and one package should have no more than ten classes. While this is not a hard and fast rule, it promotes more readable and maintainable code as a general guideline.

Another approach is to consider the size of the IDE window - more exactly, the part where you are editing your code. A function/method should fit within the visible part of the window, allowing you to see its entire definition without scrolling.


Grouping chunks of code

Grouping chunks of code into sets that are more focused on one specific concern can help fulfill the Single Responsibility Principle (SRP).  

Proper naming conventions, such as using names containing well-known design patterns (to don't have the codebase just full of various "managers"), can make it easier to understand what the code is doing without the need for in-depth investigation.

These sets (files, classes) of functions/methods can contain more concrete or more abstract functionality and structures. These groups e.g. of classes can be grouped into modules. Separating different levels of abstraction into separate, independently deployable modules can help us to build a more maintainable application, where changes are isolated to specific parts or modules, making testing easier and more focused. We don't need to be so afraid that we broke something in a different part of the application. This makes testing easier and more focused since you don't need to test completely everything.

In object-oriented programming (OOP), more stable and abstract modules can use inheritance - since they should cover code business concepts, that are not going to be changed so often.

While more volatile, concrete modules should rather use object composition to allow for more flexibility in adjusting functionality to business needs.

Generally said - write as less code as possible, but at the same time, maximize positive impact on business in the long-term by prioritizing good architecture to facilitate easier maintenance and extensions.

Monday, October 10, 2022

České investiční platformy a cashback systémy

Investiční platformy

Portu - Automatizovaná investiční platforma. Poplatek od 0,6% ročně z celkové hodnoty portfolia. Registrace zde

Fondee - Automatizovaná investiční platforma. Registrace zde

Indigo - Umožňuje jednoduchou formou nákup ETF, a to jak přes webové rozhraní, tak přes mobilní aplikaci. Poplatek je 1% ročně z celkové hodnoty portfolia. Registrace zde

Fingood - crowfundingová P2B platforma, umožňující investovat do prověřených českých firem. Registrace zde

Bondster - crowdfundingová P2P platforma. Registrace zde

Investown - crowdfundingová platforma, investující do nemovitostí. Registrace zde

Ronda Invest - další crowdfundingová platforma, investující do nemovitostí. Registrace zde


Cashback systémy

Plná peněženka - Registrace zde

Tipli - Registrace zde

Sunday, July 24, 2022

After my first experience with Ryanair I can say: Ryanair never more

My first experience with Ryanair was so discouraging that I've vowed never to travel with them again. We flew from Vienna to Barcelona in early July, having paid for the transportation of three pieces of luggage. Upon arrival in Barcelona, only one of our bags made it. We immediately reported the issue to a Ryanair representative at the airport and filled out a form.

Although we were initially told our bags would likely arrive on the next flight and be sent to our hotel, they never showed up. 

We decided to wait a day or two. I was lucky to have some of my clothes in my hand luggage. Unfortunately, my girlfriend had everything in her luggage, which was lost. In addition, there were also cosmetics for more sensitive skin, and my cream for skin problems on the scalp, which was prepared for me at a pharmacy, based on a prescription. So I had to stop the treatment because of that.

The next day in the evening, I called the airport to ask if our luggage arrived or not - They told us that nothing had arrived yet and that they had not received any response from Vienna, so they have no idea what happened to the luggage.

So we waited two more days - without a result. We had to buy things and clothes that we were missing.

We kept hoping that the luggage would eventually show up at our hotel. Nothing arrived.

The situation was further complicated by the fact that my girlfriend was flying to Argentina, not back to Vienna with me.  And in one of the lost luggage, she had most of the clothes that she had taken with her to Europe and that she would also like to use again at home. Plus souvenirs from her travels in Europe, gifts for her family, and gifts she received during her visit. When I mentioned to a person from the airport during one phone call that I would eventually like to send one of the luggage to a city located approximately 500 kilometers from the capital of Argentina, Buenos Aires, it seemed that they are not happy.

On the last day of our stay in Barcelona, we bought one piece of luggage to accommodate the items we needed and had to buy and a few things from Barcelona. My girlfriend took this luggage with her to Argentina, returning home with only a portion of her belongings, and it was still a mystery to us what happened to our luggage during our farewell.

Upon my return to Vienna, I went to the airport to resolve the issue and, surprisingly, found both missing pieces of luggage, about which no one knew all along, were there. I picked them up, as I was unsure if the one destined for Argentina would ever make it. 

It baffles me how the airline could lose track of bags that were checked in and tagged properly on a direct flight.

Well, in the future, I will automatically exclude Ryanair from my ticket search. With the opportunity to travel again after two years of COVID, we plan to take several flights in the near future. However, we will definitely not be using Ryanair for any of them.

Friday, July 22, 2022

Po mé první zkušenosti s Ryanair mohu říci: Ryanair už ne

První zkušenost se společností Ryanair mně kompletně odradila od dalších cest s nimi. Letěli jsme začátkem července z Vídně do Barcelony. Zaplatili jsme i přepravu tří zavazadel. Do Barcelony dorazilo pouze jedno. Začali jsme to tedy řešit hned na letišti. Vyplnili jsme formulář a bylo nám řečeno, že zavazadla dorazí pravděpodobně v příštím letu (které provádějí mezi Vídní a Barcelonou v podstatě denně) na adresu hotelu, kterou jsme vyplnili do formuláře.

Bylo to poprvé, kdy se podařilo aerolince ztratit má zavazadla, a to jsem už cestoval vícekrát po celém světě, a skoro vždy s minimálně jedním přestupem - vždy bez problémů. A teď v rámci jednoho přímého letu tohle.

Řekli jsme si, že tedy ten den, dva počkáme. Já měl štěstí, že jsem měl něco ze svého oblečení v příručním zavazadle. Má přítelkyně ale bohužel měla vše v zavazadlech, která se ztratila. Navíc tam byla i kosmetika pro citlivější pleť, a můj krém na kožní problém na pokožce hlavy, který mi připravili v lékárně na předpis. Musel jsem tedy kvůli tomu léčbu přerušit.

Příští den k večeru jsem volal na letiště s dotazem jak to s našimi zavazadly vypadá - dověděli jsme se, že zatím nic nepřiletělo a že z Vídně zatím nedostali vůbec žádnou odpověď, tak netuší, co se zavazadly je.

Tak jsme čekali další dva dny - bez výsledku. Museli jsme dokoupit věci a oblečení, které nám chybělo. 

Pořád jsme doufali, že se zavazadla nakonec objeví u nás v hotelu. Nedočkali jsme se.

Dalším problémem bylo to, že se má přítelkyně nevracela se mnou zpět do Vídně, ale letěla domů do Argentiny. A v jednom ze ztracených zavazadel měla většinu svého oblečení, které vzala sebou do Evropy, a které by také ráda opět používala doma. A navíc památky z cest po Evropě, dárky, které nakoupila pro svou rodinu a dárky, které během návštěvy u nás dostala. Když jsem při jednom telefonním hovoru s člověkem z letiště zmínil to, že bych pak případně chtěl jedno ze zavazadel poslat do města, nacházejícího se cca 500 kilometrů od hlavního města Argentiny, Buenos Aires, vypadalo to, že s tím mají celkem problém. 

Skončilo to tak, že jsme nakonec poslední den pobytu v Barceloně koupili jedno zavazadlo, ať máme kam dát věci, co jsme potřebovali a museli koupit, plus pár věcí z Barcelony. Zavazadlo vzala sebou přítelkyně do Argentiny. Vracela se nakonec domů jen s části svých věcí, a při loučení pro nás bylo pořád záhadou, co se s našimi zavazadly stalo.

Po mém návratu do Vídně jsem se tento problém pokusil řešit ještě přímo na letišti - a překvapivě, obě zavazadla, o kterých po celou dobu nikdo nevěděl, byly tam. Tak jsem je vyzvedl obě, protože kdo ví, co by se s tím, co mělo mít jako cílovou destinaci Argentinu, nakonec stalo. Možná by se ztratilo úplně. 

Byl to přímý let, všechna tři zavazadla byla zaplacena a řádně odbavena. Pokud prošly check-inem a byly otagovány, tak bych měl přece vědět, co už es pak do letadla dostalo, a co ještě chybí. Příjde mi, že na tom nejde moc pokazit. Vím, že mi něco chybí, vím i přesně co mi chybí.

No pro příště už tuto společnost automaticky při hledání letenek ignoruji. Konečně po dvou letech COVIDu máme možnost cestovat. A v blízké budoucnosti chceme absolvovat více dalších letů, a nebude to jenom jeden nebo dva. Ale Ryanair při tom určitě nepoužijeme.