Jenkov.com
555 subscribers
26 links
This channel contains news from Jenkov.com - such as new and updated tech arcticles, videos, tools etc.
Download Telegram
I have published a Python while loop tutorial in my growing Python tutorial. While loops are useful for repeating a block of instructions until a certain condition becomes false.

https://jenkov.com/tutorials/python/python-while.html

Hope you will find it useful! 😊
Over the last few weeks I have been working on a search function for my website jenkov.com ... now it is finally online :-) For now it is hidden in the top menu, but I will probably move it out to make it more visible soon (-ish).

It is still pretty basic - but better than no search function. You can at least find most of the bigger topics now. I have several ideas for improving the search in the future.

I coded it myself, by the way, from scratch. No third party search tools used. It wasn't that difficult, once I had the core idea for how it should work. But let's see how easy it will be to improve it... finding the right balance between the weights of different words in a query seems like something one could spend a lot of time on ... πŸ€” 😊
My book about P2P Networks is in progress, and is available on LeanPub. It has actually been available a while now - I just forgot to announce it 😊 Payment is optional 😊

https://leanpub.com/p2p-networks

I started thinking about writing a book about P2P Networks already 1.5 years ago, and I think I have mentioned it a few times inhere too. Now it is finally becoming "reality" πŸ˜‰ 😊

The book is still under 50% finished, but there is enough material for a reader to be able to start learning the basics about the different P2P network topologies that exists. I will be adding a good deal more to the book in the future!

I have books about other topics planned too, by the way, but I will talk about those once they become "reality" πŸ˜‰
I have updated my Java tutorial / introduction to list the major new features in Java 21 and 22. It now contains a listing of the major features in each Java realease going back to Java 7 😊

https://jenkov.com/tutorials/java/index.html

I have not yet written about all the new features. I probably will at some point when / if I get the time for it 😊 ... but it's useful to have the list at least!
Released a short video about the difference between designing for scalability or performance. In other words, should you solve all capacity problems by throwing hardware at the problem? Or should you try to utilize the hardware you already have, better?

https://www.youtube.com/watch?v=IDAf1D0HIOg

#SoftwareDesign
I have finally "figured out" the core principles of what I call Compositional Software Design - which I have been talking about here from time to time on social media. I have published a tutorial explaining these core principles (link below).

There is still more to say about Compositional Software Design than what is currently in this tutorial - but there is enough to understand the central ideas. More will be added in the future, but will probably mostly be more nuances and details around the core principles.

https://jenkov.com/tutorials/software-design/compositional-software-design.html
I have updated my book about P2P Networks with a chapter about the Kademlia P2P topology, and a few more details about the Chord P2P topology.

The book is still less than 50% finished. I plan to cover more P2P topologies, as well as distributed hashtables and a few other topics. I also plan to add more details about each of the covered P2P topologies - once the basic theories are covered.

https://leanpub.com/p2p-networks
My Polymorph Data Language and Polymorph Data Encoding are getting close to "stable". Therefore I have decided to move their specifications to a GitHub repository - in which I can post descriptions and examples - both in text and via example files etc.

It's not all complete yet. I will keep adding details over the coming weeks.

The repository is located here:

https://github.com/jjenkov/pde-pdl-specification
Help your co-developers grow - by meeting them where they are!

That is the theme of this little video I made, by request from Majid Mostafavi from the Iranian JUG (topic was developer soft skills).

Happy International Developers Day 😊

https://www.youtube.com/watch?v=EpEbT5bYNb4
I have updated my Java tutorial introduction to list what is new in Java 23. The list of new features now lists all the major features in each release, back to Java 7.

https://jenkov.com/tutorials/java/index.html
Note: the video link has been fixed now! 😊
I have improved my Polymorph Data Encoding specification significantly, so it is now easier to understand. The specification is hosted in a GitHub repo (see link below).

I will now proceed to provide a proof-of-concept implementation of a reader and writer utility in Java - for anyone to use - or just to see how to implement reader and writer functionality in other languages.

If you are on the lookout for a data encoding that gives you (almost) everything you get with JSON, XML, YAML, CSV, MessagePack, CBOR, Protobuf, ION etc. - and yet also gives you compact tabular data, compact trees and cyclic object graphs (plus other nice features), with high performance and a compact encoding, Polymorph Data Encoding might be an option for you!

https://github.com/jjenkov/pde-pdl-specification/blob/main/pde-specification.md
I have released the first drafts of writer and reader code in Java for writing and reading raw, binary Polymorph Data Encoding (PDE). It's located in this GitHub repository :-)

https://github.com/jjenkov/polymorph-fabric-java

Now PDE is no longer just an idea - no longer just speculative 😊

Now you can see how to actually work with it 😊

More details will come in the future, of course 😊
When being serious about Compositional Software Design (designing your code base for composability) - you will often experience these two phenomena impact your code base size:

1) Decompositional Expansion

2) Compositional Contraction

First, your code base will expand because you are breaking your code base into many smaller pieces that can be composed together to form solutions. This phenomenon (phase) is what I call the "Decompositional Expansion".

Later, your code base will feel like it contracts, meaning it does not grow as fast in size anymore as it did in the beginning. It feels like you can add new functionality with little code (and little effort). This phenomenon (phase) is what I call the "Compositional Contraction". During this phase you are starting to reap the benefits of all those reusable components you created during the Decompositional Expansion.

Have you experienced these two phenomena in your code base size growth? ☺️

I am covering these phenomena in my upcoming video about Compositional Software Design ☺️ Seems like it will be one of my longest videos to date! 🫒
Imagine a desktop platform that:

* Comes with multiple smaller apps embedded.

* Lets you script which apps to open in which Windows, on which screens,
and which data to load in those apps.

* Lets you create your own apps and plug in.

* Can connect all the world's users of this platform into a single global P2P Network, made up of lots of smaller, local P2P Networks connected together in a P2P polyring topology.

* Lets you exchange scripts and data with other users via messaging -
and enable your apps to communicate with other users' apps.

Imagine then all the knowledge and technology that can come out of such a project. And just as importantly - all the fun !! πŸ˜‰ 😊

That is what the Polymorph Personal Compute Platform is aiming at ☺️