Top
Best
New

Posted by celurian92 6 days ago

I completed 100 Days of Java over 5 years and mapped the journey as a graph(mohibulsblog.netlify.app)
71 points | 35 comments
kristianp 4 days ago|
Takes me back to simpler days when Java was THE language to learn and book like this was interesting. It seems the author took each day in the book as an inspiration for a blog post, which gives it value beyond the book itself.
deepsun 4 days ago||
I taught students in Java and Python and noticed that Python is actually harder. Things you don't even notice, like breathing, make a lot of confusion for newcomers.

The biggest one is types -- students think in terms of meaning, not types, e.g. "this my variable contains first name", but they don't realize it's a string. Or "this is products in checkout cart", but the variable is an integer, so it's products count, not a list of product. Once students get idea of getting an item of a collection and getting a field of that item, while watching every type along the way -- that's a major breakthrough during learning.

The easiest to learn would be a language where you have to define all variable types on top, like Pascal (a language created specifically for learning). But Java is still better than Python, as it doesn't even run wit messed types.

DeathArrow 3 days ago||
Java would be fine if it and it's community wouldn't force OOP and GOF patterns everywhere.
bzzzt 3 days ago||
2003 called and wants its arguments against Java back.

Modern Java can be OOP, functional or procedural where useful. GoF patterns were never enforced by the language.

vintermann 3 days ago|||
I'd say GoF patterns were pretty enforced by the language if you include the standard libraries.

Or maybe that's even a bit rude to GoF. Some OO patterns - pretty questionable ones - were pushed pretty hard especially in Java EE.

bzzzt 3 days ago|||
Java EE practically reinvented itself over the last 20 years using the more popular frameworks as inspiration for better or worse.

Even then, you were never forced to use Java EE if you didn't need it.

peterashford 3 days ago|||
Java EE is pretty darn retro right now, and it was never core Java
fragmede 3 days ago||||
Does the name of the class inside the file still break the wall and force what the name of the file needs to be?
whatisthiseven 3 days ago||
There is an argument for that being an opinionated part of the Java language, and as i hear it, opinionated programming languages are all the rage.

Fwiw, I like that class names and file names must match. In python codebases I have had annoyances with this when I adopted others work.

ahoka 3 days ago|||
Unless you write everything from scratch, you are forced to deal with 20 years of bad design. I really wish people would just stop beating this dead horse.
bzzzt 3 days ago||
A lot of de Java standard library is actually quite nice to program with. Of course there are less good parts, but Java is committed to compatibility so you can choose between dealing with an old design versus continually refactoring code to the standard of the day. I prefer having a choice.

As far as Java use in companies is an indicator, the horse is still running.

torginus 3 days ago||
Well I don't want to come along with you, as while Java might be an ok language, and a great runtime, the cultish Clean Code middle management, and design patterns, with intentionally obscure control flow paths thanks to stuff like dependency injection, and state smeared across dozens of objects (hidden behind interfaces ofc).

Javas biggest engineering upside was that its JIT compiler allowed the runtime to see through this mess and extract decent performance out of 5 layers of dynamic dispatch that shouldn't have been there in the first place.

Add to that the unclear licensing, which meant that there wasn't a single Linux distro that shipped it out of the box, and the development culture it fostered which required 10x the people each spending 10x the time to build features, and single-handedly was responsible for coining the term 'code monkey'.

As for the software - remember Eclipse? I sure do, but I haven't seen it in like half a decade or more, and that certainly doesnt make me sad.

gbnwl 4 days ago||
What exactly is the intuition behind taking something inherently linear like a sequence of 100 days and presenting it as a graph with no information given about the rationale or reasoning behind the edges.
gowld 4 days ago||
It's 100 days of Java, not 100 days of Visual Information Architecture.
elric 3 days ago||
Think of each day as a lesson, and then it makes more sense. E.g. Lesson 49 was useful for understanding Lessons 50 and 65.
celurian92 6 days ago||
I completed 100 Days of Java and ended up and it took me roughly 5 years.

Made an interactive map/index of the posts, linked by related topics. I made it to make the series easier to browse by concept instead of only by day number.

evanjrowley 4 days ago|
Nice work! I appreciate the topic and search filters too.
jacobrussell 4 days ago||
I looked around, but can't find the source information this was created off of -- where are the questions/topics for the 100 days listed?
celurian92 4 days ago|
the source is mostly the content tags in each blog posts. https://mohibulsblog.netlify.app/blog/ each post have some content tags. graph is based on that.
fabiensanglard 4 days ago||
This website is very confusing.
celurian92 3 days ago|
would love to know how can i improve if you can give some feedback like which part is confusing.
theowaway213456 3 days ago||
It's very hard to use on mobile. When clicking a graph node, something happens kind of far down in the viewport, which I didn't notice at first. Also clicking "Open post" doesn't seem to work
dxxvi 3 days ago||
Has anybody done like this with Rust (e.g. https://github.com/LiveGray/100-Days-Of-Rust)?
debesyla 4 days ago||
I personally am not sure what's the point of this, when the graph seems like doesn't give any real information + doesn't even work on mobile (no hover), but congrats on finishing up the series!
celurian92 4 days ago|
sorry as UI was not optimized enough for mobile but my intention was to show the adventure of writing and learning more about java
afunk 4 days ago||
You should try rendering the graph in 3js. It’s pretty easy and so so beautiful.

Toto.tech has a decent example. You have flight controls with wasd + mouse

celurian92 3 days ago|
will try it this weekend. Thanks for the suggestion
Zardoz84 3 days ago||
> Day 1: Comparing/ checking equality against multiple Strings.

Just use Apache Commons Lang Strings.CS.equalsAny . If not, List.of or Set.of (if N could be big) should be the best options. Streams are better when you chain many operations.

artenes_dev 4 days ago|
This looks interesting, I worked with Java some time ago, but haven't touched it for some time. I guess since the graph is really not that intuitive this really describes how complicated can be learning Java!
celurian92 4 days ago|
Learning java is not that hard. I really love this language with all its quirks. so i guess i will be little biased here but its my fault not to represent the information in such a way that it can be more intuitive.
ivolimmen 3 days ago||
As a Java Developer that has been coding since Java 1.2.2; it depends on the quirks :D

To name 2:

https://devdocs.io/openjdk~21/java.base/java/util/gregorianc...

https://devdocs.io/openjdk~21/java.base/java/net/url#equals(...

More comments...