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! π
https://jenkov.com/tutorials/python/python-while.html
Hope you will find it useful! π
Jenkov
Python while
The Python while loop is used to loop as long as certain condition is true.
I have updated my P2P networks introduction to give a better overview of the core concepts and ideas:
https://jenkov.com/tutorials/p2p/index.html
https://jenkov.com/tutorials/p2p/index.html
Jenkov
Peer-to-Peer (P2P) Networks
Peer-to-peer (P2P) networks are decentralized systems without a central server to coordinate between the peers in the system. This peer-to-peer tutorial explains the theory behind P2P algorithms like Chord, Kademlia, Pastry etc.
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 ... π€ π
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" π
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" π
Leanpub
P2P Networks
P2P networks can scale to thousands, millions or even billions of individual peers collaborating without a central, coordinating entity. This book explores how!
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!
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!
Jenkov
Java Tutorial
This Java tutorial teaches the core features of the Java language. As the Java language evolves, this tutorial is updated.
Here is the first version of my Java HttpClient tutorial π
There are still things to add, but the basics are there π
https://jenkov.com/tutorials/java-networking/httpclient.html
There are still things to add, but the basics are there π
https://jenkov.com/tutorials/java-networking/httpclient.html
Jenkov
Java HttpClient
The Java HttpClient provides an easy-to-use API for making HTTP 1.1 + HTTP 2.0 requests. The Java HttpClient provides both a synchronous and asynchronous interface. HttpClient also supports web sockets. The HttpClient class was added to Java in Java 11.
I have just published a video about Java Generics π
A frequently requested topic! π
https://www.youtube.com/watch?v=CKWw7J5MsyY&list=PLL8woMHwr36GYaIsv6STX864waOm61gMt&index=11
A frequently requested topic! π
https://www.youtube.com/watch?v=CKWw7J5MsyY&list=PLL8woMHwr36GYaIsv6STX864waOm61gMt&index=11
YouTube
Java Generics
Java Generics enable us to gain type safety in situations where classes and methods that are designed to be able to work with any type would otherwise be designed to work with Object instances. For instance, without Java Generics the Java List, Java Set,β¦
I have just published a short tutorial on Python classes.
https://jenkov.com/tutorials/python/python-classes.html
https://jenkov.com/tutorials/python/python-classes.html
Jenkov
Python Classes
A Python function is a block of instructions which can be called repeatedly - and thus reused. You can pass parameters to the function which can affect the behaviour of the function.
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
https://www.youtube.com/watch?v=IDAf1D0HIOg
#SoftwareDesign
YouTube
Designing for Scalability vs Performance
When the load on a system gets close to the capacity of that system - you will typically have to address that situation by increasing the capacity of that system.
You can increase the capacity of a system in two ways: Via scaling - or via performance optimization.β¦
You can increase the capacity of a system in two ways: Via scaling - or via performance optimization.β¦
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
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
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
Leanpub
P2P Networks
P2P networks can scale to thousands, millions or even billions of individual peers collaborating without a central, coordinating entity. This book explores how!
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
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
GitHub
GitHub - jjenkov/pde-pdl-specification
Contribute to jjenkov/pde-pdl-specification development by creating an account on GitHub.
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
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
YouTube
How to Help Your Co-Developers Grow
Help your co-developers grow - by meeting them where they are (knowledge-wise) and help them grow from there - instead of leaving them to figure out what to learn and where, on their own.
It sounds like simple and obvious advice, but I have experienced thisβ¦
It sounds like simple and obvious advice, but I have experienced thisβ¦
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
https://jenkov.com/tutorials/java/index.html
Jenkov
Java Tutorial
This Java tutorial teaches the core features of the Java language. As the Java language evolves, this tutorial is updated.
I have updated my Java ConcurrentMap + ConcurrentHashMap tutorial - and made a video version of that tutorial. Here are the links:
https://jenkov.com/tutorials/java-util-concurrent/concurrentmap.html
https://www.youtube.com/watch?v=OGXAs9fZYTc&list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4&index=28
https://jenkov.com/tutorials/java-util-concurrent/concurrentmap.html
https://www.youtube.com/watch?v=OGXAs9fZYTc&list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4&index=28
Jenkov
Java ConcurrentMap
This tutorial explains how the ConcurrentMap in Java works.
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 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
GitHub
pde-pdl-specification/pde-specification.md at main Β· jjenkov/pde-pdl-specification
Contribute to jjenkov/pde-pdl-specification development by creating an account on GitHub.
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 π
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 π
GitHub
GitHub - jjenkov/polymorph-fabric-java: Java implementations of technology from my Polymorph project.
Java implementations of technology from my Polymorph project. - jjenkov/polymorph-fabric-java
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! π«’
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 βΊοΈ
* 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 βΊοΈ