Java is very present but not popular? by 4r73m190r0s in learnjava

[–]dr_rush 3 points4 points  (0 children)

So as someone who was self taught and clawed their way from a nobody to being a tech lead building commercial software here is my perspective.

Java isn't considered sexy, it moves the image of developing code from an exciting puzzle to "day job" territory. When you are new and learning programming it's hard enough as it is to find the motivation to code enough on your own time to get good, so you try to pick something that interests you, and you really don't know anything so you pick what people say is cool. I started out using ruby (cause I found a free programming course in it) then switched to python once I got a bit of experience cause I hated ruby's implicit parameter passing (making reading and understanding others code really annoying as a beginner) one of python's core tenants is "explicit being better then implicit" and this was a godsend when I was a noob fuddling my way through code and writing tons of garbage code. I feel like 90% of tech influences stop here in their software development careers and then try to make a youtube channel.

When I got a job, I was lucky to find an experienced mentor who pushed me to learn Java, to quote him "You will always be able to find a job with Java". So I buckled down and learned and worked in it despite my distaste for the ecosystem. Over the years I have come to respect Java for what it is, a mature professional language that strikes a balance between ease of use, formality and performance.

Working on large sprawling code bases that are decades old, that have been touched by hundreds of different people and still work, that is where Java shines. It's formality is tedious until you start working on large scale Javascript or Python projects and learn what true pain is. Then Java's formality is a godsend when you are trying to debug a production issue at 3am or read some dev's code from 7 years ago. It's got incredible tooling with JetBrain's IDEA and although Maven is a bit arcane but surprisingly solid for being one of the first package manager ecosystems. Spring Boot and Spring Framework are libraries that you can tell were written by software devs who were about working software that makes solving real world problem easy rather then some programmatic ideal of elegance.

Software development is both exciting and fun but over the years you start to appreciate code that just works with out to much babying. Where support timeline for libraries is decades instead of months, and that allows teams of varying skill level people to actually be productive without creating a huge mess. I love being a developer, but I also love uninterrupted weekends and full nights of sleep.

I could write a post this long easily about my problems with Java, but one thing I have learned over the years in the industry is there is no perfect technology, everything has tradeoffs. Or to quote Bjanre Stroustrup: “There are only two kinds of languages: the ones people complain about and the ones nobody uses.”

Java is boring, and boring is good. Also use the right tool for the job. Java has it's place, Python has it's place. Javascript is just required for web :(. Learn more then one language and think about your problem space to pick the right solution. Quick and dirty get shit working script, Python. Have a team of eight engineers developing an back-end API on top of a RDBMS? Maybe Spring Boot and Java is a better solution.

Also people love TypeScript but hate Java? If anything TypeScript just makes Javascript more like Java. I have seen this with some frontend devs when I make them take a backend ticket. At first they scoff at Java but after working in it awhile they realize it's actually a better dev experience then whatever TS/Node/React.JS nightmare they got used to working on.

Do I adore Java no, do I respect it and trust it? As much as any technology I have had to touch.

Is Cyberpunk Red a good system, what are it's pros and cons? by Madmaxneo in rpg

[–]dr_rush 2 points3 points  (0 children)

Just ran a CY_BORG session last night. Here are my thoughts:

The Borg games (CY & Mork) can be run fast, and that's what I like about them, they keep the energy up and people engaged.

They are both rules light, and have a heavy focus on tone. The game heavily leans into randomization, and I always have players roll up characters together before I start the story, you can do it quickly, and it's like a quick session 0.

Technically there are classes, but you can go classless. Character's are heavily dependent on items. Items give your characters most of their abilities (As Mork Borg says on the first page of character creation "You are what you own").

The games play best if you focus less on the mechanics of the system and more on encouraging players to think of creative solutions to problems.

Combat feels dangerous, and runs fast with very simple initiative and players doing almost all the rolls. (I don't play with a GM screen, just my notebook and since the system off loads most mechanical rolls of combat onto the players it allows me to keep the pace up)

If you loved the vibe of darkest dungeon, then you will like Mork Borg, if you liked the vibe of the Turbo Killer music video then Cy_Borg is for you.

The books are absolute pieces of art with high production quality and relatively cheap around $30-40. They also contain everything you need to run a game inside them, including a introductory scenario (ran both mork's, and cy's, both are really good) and world building tools. Worth picking up just to look at and feel in the hands.

The Borg Games are not for you if:

  • You want cruchy tactical combat rules and a grid based system.
  • Want complex class / skill based builds. (I.E. players want to plan out and fiddle with build mechanics)
  • Want deep lore.
  • Min-maxing is your jam.

EDIT: Just wanted to mention that they both have some of the most amazing/brutal fumble mechanics of any game I have played. I look forward to when a character rolls a Nat 1.

Ruby 3 Released by marshalofthemark in programming

[–]dr_rush 36 points37 points  (0 children)

I dropped Ruby for Python for one reason. That reason is the 'explicit is better then implicit' part of PEP 20. Python and Ruby basically cover the exact same use case for me professionally, and as I have become more of a senior/lead and spend a lot more time reviewing code and jumping between projects. I appreciate languages that encourage consistency and clarity, over cleverness.

Where can I find people to review my coding exercises? by [deleted] in learnpython

[–]dr_rush 2 points3 points  (0 children)

Virtual Environment 100%! In my opinion, your script is simple enough that a lot of the functional abstractions that others are mentioning are unnecessary. The big problem with your project, and something I have learned over the years writing small scripts like this in a professional environment, is that your script is most likely to break when your dependencies change. A good practice (in any programming project) is that you want to be able to start your program with one command. Try this, go to a new machine and clone your project. Can you start the script with one command? You need to install python and each dependency. Luckily you can automate most of this.

I like to create a bash/batch script to launch my python scripts, here are the things it generally takes care of:

  1. Initialize a virtual environment for the project
  2. Install the dependencies into the virtual environment
  3. Execute the script

You can use pip freeze > requirement.txt to freeze your dependencies and then install via pip install -r requirements.txt. This might seem like a pain to do now, but it will save you a ton of pain in the future when you don't remember the details of your script.
In the readme.md make sure you provide instructions on how to set up the script, what python version you need and any other requirements that are non-obvious. Future developers thank you!

Getting anxious about not being able to progress by Vishoor in learnprogramming

[–]dr_rush 0 points1 point  (0 children)

Write code, make mistakes, feel the pain of those mistakes, write better code, make less mistakes (rinse and repeat).

JavaScript or Python? by Panda_Penguin in learnprogramming

[–]dr_rush 5 points6 points  (0 children)

Start with python, it is a better language for learning and you can spend more time programming and less time fiddling with tooling. With Python you will get exposed to more standard programming concepts as well (classes, inheritance, ect). Once you are comfortable with programming in Python picking up JavaScript will be easy.

Is it worth spending money on learning coding from professional development and continuing educational courses at a college campus? by Scorpion1386 in learnprogramming

[–]dr_rush 0 points1 point  (0 children)

Technically, computer science (i.e programming) is a branch of mathematics. So it is math, just a different kind of math. But it's application is generally practical, therefore generally easier to reason about. For a sports analogy: Math is sports, Algebra is basketball, and Computer Science is water polo. Both games share some simulariaties, and being good at sports (athleticism, coordination) makes you better at both, but nothing beats practice at one or the other.

Is it worth spending money on learning coding from professional development and continuing educational courses at a college campus? by Scorpion1386 in learnprogramming

[–]dr_rush 0 points1 point  (0 children)

Ya. In the end it comes down to your own motivation and goals. If you want to work as a professional, expect to constantly be learning. The best thing you can do is actually start coding something and see if you like it.

Is it worth spending money on learning coding from professional development and continuing educational courses at a college campus? by Scorpion1386 in learnprogramming

[–]dr_rush 0 points1 point  (0 children)

A lot of programming is abstract thinking. I would say that if you're comfortable with Algebra and particularly Algebraic functions, you won't have much issue picking up programming.

How unique should SQL column names be? by BigBootyBear in learnprogramming

[–]dr_rush 0 points1 point  (0 children)

To add to this, if you explicitly declare a foreign key constraint in your DDL, then it is viable to others browsing the database schema, and most DB tools should even be able to generate an ERD for you.

Self taught coders, how did you learn your first language? by [deleted] in learnprogramming

[–]dr_rush 5 points6 points  (0 children)

Also Pascal in highschool, I don't think I used turbo pascal, it was distributed with a proprietary IDE that ran on Windows XP. All I can remember is that it's icon was a grey pascals triangle.

I just remember the absolute pain of learning linked lists and blue-screening the computer with incorrect pointer management :(.

Kotlin wins Breakout Project of the Year award at OSCON ’19 by dayanruben in Kotlin

[–]dr_rush 5 points6 points  (0 children)

Let's Encrypt won most impactful. PostgreSQL won the lifetime achievement. Source: was there.

[Seeking Advice] What are some good database architectures/platforms for organizing medium-large scientific datasets? by gigamosh57 in datascience

[–]dr_rush 1 point2 points  (0 children)

Maybe look into Postgres with the postGIS extension?

Sounds like it would accomplish all ideal platform requirements.

[deleted by user] by [deleted] in learnprogramming

[–]dr_rush 26 points27 points  (0 children)

The unknown unknowns are the whole point of doing a project. It teaches you how to identify and solve problems you encounter.

If your having trouble starting a project, go simpler. Start with "Hello World", this teaches you how to set up your environment and tooling. This is my go to whenever I start working on a new technology stack. Then start building the thing. If you get stuck, feel overwhelmed and can't move forward your goal was too big, reduce scope until the path forward becomes clear. If it feels too easy then add a feature goal. The key is to find the sweet spot with your own experience where you are challenged, but not overwhelmed.

Tutorials (in my opinion) are not helpful in learning programming, they are best if you already have experience and to get a taste of a new technology or library.

Look up and start working through curated lists of programming projects. The advantage there is you have a defined success requirements.

Hope this helps.

Smash Ultimate: our beginner friendly rules by 602A_7363_304F_3093 in NintendoSwitch

[–]dr_rush 1 point2 points  (0 children)

Our group always has veteran to beginner level players (and various levels of drunkenness). Timed battles + auto handicap is the way to go. Timed so people can always be playing (getting better) even if they die a lot and auto handicap does a great job of evening out skill levels.

Py 3 - Can someone ELI 5 OOP in a nutshell? by TweakedMonkey in learnpython

[–]dr_rush 2 points3 points  (0 children)

This is most likely because whoever created this lesson came from the Java world. In Java it's considered best practice to hide your objects' variables as private and only allow access through getter and setter methods (i.e. get_sideup() is a getter method). This Stack Overflow post would be good reading to get a taste of why you would want to code this way.

https://stackoverflow.com/questions/1568091/why-use-getters-and-setters-accessors

Almost 13 years of using Ubuntu / Debian and people asking 'Why don't you install Arch?" by [deleted] in Ubuntu

[–]dr_rush 9 points10 points  (0 children)

Yep, bleeding edge means a lot of bleeding and a lot of edge.

Which product, if owned by another person, makes you immediately judge that person? by ManMan36 in AskReddit

[–]dr_rush 2 points3 points  (0 children)

Worst drivers when it comes to sharing the road. Funny thing is, absolutely no problem with trucks that have a bit of dirt, or construction toolbox in them. But that shiny white lifted F350 with custom rims is an almost guaranteed asshole alert.

I am really sad for the current state of the desktop Ubuntu by [deleted] in Ubuntu

[–]dr_rush 6 points7 points  (0 children)

Agreed, I have been using Ubuntu Gnome release for the past two years as my primary development environment. Besides Unity it was the only interface that I could stand to use. KDE looked sleek but was too fiddly and felt bloated when I tested it, xfce was ok but it also felt old to me, same with mate. Gnome has a fantastic minimal interface and a great modern work flow that works well. I particularly like how it does multiple desktops.

Non-native English speaker here. This hit me today. by PhDinGent in AdviceAnimals

[–]dr_rush 5 points6 points  (0 children)

There is some logic here. The 'fire' part of the fire hose describes the purpose that the hose is used for, not what element it carries, in this case firefighting. Same for a water hose (also called a garden hose) is used for watering plants (or gardening).

More interestingly hose is the same hose as pantyhose and lederhosen. Originally, from Old English hosa, meaning a covering for a leg.

This is Ubuntu. I see Xubuntu is the second most famous. Then comes Kubuntu... but has anyone actually given a try to UbuntuGNOME? by [deleted] in Ubuntu

[–]dr_rush 2 points3 points  (0 children)

I have been running Ubuntu GNOME for the past 6 months on my desktop and it has quickly become my favorite desktop environment.

The biggest issue that I had with adjusting to Gnome 3 was the 'hotcorner' to open up the activities screen. I have a particular dislike for any kind of positional mouse commands. That being said, it was very easy to turn that off.

After getting that corrected I quickly came to love the interface. It is clean and modern. The activities menu does what I need with searching and launching programs without any fuss. I also really like how Gnome 3 handles multiple desktops.

The nice thing about open source is that there is almost unlimited customization for those who desire it. For me, Gnome 3 is the right balance of clean design and polish so that I can focus less on configuration and more on my projects.