Minecraft plugins, a very fun way to learn Java
Programming
All things programming and coding related. Subcommunity of Technology.
This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.
It was 1981. I wanted an Atari 2600. My father bought be an Atari 400 instead. It didn't have the extensive game library but it did have better graphics, and you could write programs on it (Atari Basic). There were monthly magazines with programs you had to type in yourself (no floppy disks yet, just cassette storage). It was pretty easy to learn how things worked as you went, and some other reference books with additional details for new-to-me processes.
My father bought a Radio Shack Tandy TRS-80. I was mesmerized by it. I created basic programs on it.
Then we eventually got a 486DX2 IBM Compatible and I programmed little fantasy adventures.
Those actually built up so that when I was in high school and had a math test I realized my TI-82 was similiar to what I knew and I was able to program my calculator with all of the math equations to spit out the answers for me. This had approvals from my teacher.
I never became a developer, but I still enjoy looking at code and investigating it.
I was able to program my calculator with all of the math equations to spit out the answers for me. This had approvals from my teacher.
Super cool of your teacher to allow that!
Going from a TRS-80 to a 486 must've been like going from a tricycle to a starship.
Yeah the TRS-80 was an oddity that barely worked. The 486 really got me into computing and just loved all of it.
The 486 was remarkable in that it packed a lot of features onto a single chip, including privilege levels, memory protection, virtual memory, floating-point arithmetic, and a 32-bit address space. These were once features you'd only find in a big-iron machine from IBM or DEC. Even when they did become available in smaller computers, like the Motorola 68000 series, they still tended to require additional chips to implement them, like the Motorola 68851 memory management unit and 68881 floating-point unit. The 486 had all that stuff built in. Motorola was behind, but not by much: they matched the 486's features a year later with the 68040.
Intel wasn't always neck-and-neck Motorola, though. When the 68000 was released in 1979, it was even more revolutionary: it was one of the first 32-bit microprocessors, and very fast for its day. IBM engineers wanted to use that for the IBM PC, but if I recall correctly, management wanted Intel instead because they already had a deal, so they went with the more primitive, 16/20-bit Intel 8088 instead.
And that's a shame. Had they used the 68000, PC DOS would have been 32-bit from the start, and the infamous 640kB limit would never have existed.
Back then, when you wanted some new games you could:
- buy them (over expensive)
- trade some on cassette tapes at the schoolyard
- Go to the library, grab some source code books, have fun programming them
Wrote my own text-adventure when I was 10, since then I came across Basic, Turbo Pascal, JS, Java, AS, Lua, Python, C++, maybe some more 😵💫
I'm still new to the space, though I've been dabbling for years now. I don't really have a handle on any language yet. I feel like I'm still trying to wrap my head around the concepts fully and haven't really done any real projects other than a simple Python program that was about 100 lines of code. I've dabbled in Java and HTML/CSS here and there as well.
Between life's challenges with my own health and my family's as well it's tough to find time to learn. But I'm still endlessly fascinated.
Being able to actually develop the skill and become good enough at a language to get a job in the industry would probably be great for my family's situation but it's just so hard to get to that point.
I'm hopeful one day things will line up and I can finally call myself a programmer.
I think my first push was when I was 12 reading a local popular science magazine and it had an article about a 13 year old kid who had made a very successful iOS game. After that I talked about how I want to do programming so much that my parents got me a "Python for Dummies" book.
Self-learning programming at such a young age was very difficult, I tried to turn to online forums for help and was met with extreme amounts of abuse. The worst by far was StackOverflow and I've hated the site with passion ever since. Things turned around when I started to ask for help on a local social network similar to Facebook and people seeing that I was a kid there were extremely helpful. I still remember the founder of the site even answering a couple of questions I had. I really wanted to work there after these positive experiences, but by the time I grew up the site had been ran into the ground.
After that I had some experience doing some game dev stuff. I played around with game maker, later on made some Minecraft server plugins for Bukkit. One of them even reached over 1000 downloads and is still by far the most successful solo project I've ever published haha.
Where I really started to establish my skills was when I switched schools and the new one had a competitive programming extra curricular class. After being a very active participant there I ended up winning many state level awards at competitive programming, even went for some regional international contests.
Then years later I joined university and absolutely hated it. It almost turned me off of programming just being teached decades old programming knowledge. Waterfall project management etc. One memory of mine is explaining basic c++11 features to the TA because he had never seen them. This was in 2018. There was only one good course I had and I enjoyed - Linux System Programming. I hated the rest so much I dropped out and now am a professional software developer. Still feel like the time I spent at university was just extremely wasted.
explaining basic c++11 features to the TA in 2018 yikes!
I feel like universities have a special opportunity to teach really cool concepts that would be impractical in bootcamps and such; learning about the maths behind algorithms and data structures, how to evaluate them objectively, learning about grammars and expressions, building interpreters / compilers, all this stuff that can be really useful if you find yourself working beyond simple CRUD stuff.
That being said, these days so much work is just CRUD, so ymmv.
Waterfall project management etc.
It's interesting you experienced this too, when I was in uni (2014ish) we were taught both waterfall and agile, but they made a point that a lot of businesses will prefer waterfall and that agile isn't professional.
Professionally, I've literally never seen anyone say they want or prefer waterfall project management.
This was a UK university well known for its programming and computing, too.
TI-83 graphing calculator in high school, around 1998. I would sit there in math class coding games in Basic. Ended up developing a reputation as the guy you went to if you needed a program to cheat on a math test.
The highlight of the entire endeavor was a class wherein the teacher announced that before a test, they'd be resetting the memory on everyone's graphing calculators, to prevent cheating. I wasn't planning to cheat, but I did have a few games I was working on, and I didn't want to lose them, so I wrote a program that emulated the graphing calculator's interface, and would let you go through all of the steps to reset the memory, including showing the Programs menu as being empty afterwards, while not actually resetting anything.
I showed this to the teacher just before the test (demonstrated "resetting the memory" with the program running, then demonstrated that the memory was in fact not reset), and he backed off from the compulsory reset policy in favor of the honor system, because he conceded that he wouldn't be able to verify that the memory was actually reset anyway. Made me feel like an absolute hero.
It's honestly funny because I learned the concepts in the math classes a lot better as a result of this - it took a very thorough understanding of how to use a concept to write a program to solve it for you.
It's honestly funny because I learned the concepts in the math classes a lot better as a result of this - it took a very thorough understanding of how to use a concept to write a program to solve it for you.
My experience almost exactly. I built the interest by making/hacking TI-83 games, then made math class programs which i never really used because i had learned the material. It was fun, eye opening, and paved a path to my career!
Now I know how all the old guys felt when I asked this question in 2000.
I got my start making GW Basic programs for classes I had in ... 1996? Visual Basic 6 came to me in '98, ADA95 in 2000, Java 1.5 in 2003, and then I got a job doing it while finishing my degree and mostly writing Coldfusion. Then it turned into Java, Java, Java, more Java, some extra Java, and some more Java on that.
The last few years it's mostly been Python, Rust, C++, C#, Scala, Kotlin, and Java - all because I work in a research org and can just pick the best tool for the job at the time and not worry about much beyond showing our research POCs in the best light possible. For some cases, that's writing Rust with pyo3 Python bindings so the dsci's can still do real high performance computation from their cute little jupyter notebooks, in others it's a quick Python fastapi rest interface; sometimes I gotta write some Azure Functions and pick C#, and sometimes I need something fast and easy to wack out something a bit more enterprise grade and I go back to Java and SpringBoot.
And right now I'm suffering with C++ and trying to track down a sometimes segmentation fault sometimes double free sometimes munmap chunk error that only happens when we use the lib through the pybind11 bindings we've built, and I'm just not having any fun at all. It's amazing how frustrating debugging is without a viable debugging environment. I had forgotten how brutal this is in your early days when you don't know how to set up a good debugging environment until now when my tools have forsaken me. I'm back to ye olden std::cerr << __LINE__ << "here" << std::endl;
insertions like a baby programmer and it's both exceptionally frustrating AND rewarding - mostly because when I go back to a problem space where I can use a debugger, I realize how fucking good I have it.
The one nice thing about becoming a software developer is that, if you want, you can write in any language you want and learn new things constantly. Eventually you'll reach a pretty high level but still a plateau in your given language - and that's awesome. You can stop there if you want. If you're motivated to figure out how everything ticks, though, I urge you to learn a new language. Find a new job if you have to. I would say the biggest boon to my understanding of programming, languages, etc has been when I went deep in LanguageX for a long time, then shifted to something well outside the bounds of LanguageX - like jumping from Java to Scala (diving wholesale into FP), or Scala to Python (giving up on sanity and type checking and a hilariously difficult time to write robust libraries), or Python to Rust , or Rust to C++. So much of what you know from your experience is just you knowing something by looking at one or two sides of it at a time from a fixed position. Learning a different language (to a professional level) is like changing your position around the outside of the room to look at things from a completely different perspective. Suddenly your Java gets better because you've learned Scala. Suddenly your Scala gets better because you've gone to Python. Suddenly your Python gets better because you learned Rust, and suddenly Rust makes sense because you've been strugglebussing with C++.
There's a ton of value in diving deep on a language for a few years. Don't ever regret that opportunity. But for me, I really think changing things up every few years has made me a distinctly better developer overall, and understanding so many more things that I never would have had any insight at all into without my madcap sprint through languages; language features, language constructs, language paradigms; entire ecosystems of different approaches.
I've come a long way since I struggled to write my first hangman game in GW Basic and used variable names like g_string : str
, thinking I was the most clever sob who ever lived (clearly, I was not).
I first got into programming as a kid, when my dad gave me his old DOS PC and a reference manual for QBASIC. I taught myself the language by studying example programs and looking up commands in the manual. I wasn't very good at it (I'm not sure I ever figured out how write a function lol), but I loved it and spent hundreds of hours making little "choose your own adventure" style games.
When I was a bit older, I got into Minecraft and wanted to create my own mods. I taught myself Java and made a few simple tweaks with Modloader. I didn't like Java, but I liked seeing the results of my work in a 3D world so I stuck with it. Most of my friends also played Minecraft so we started a private server running our favorite mods. We quickly found that it was hard to keep modded clients in sync, so I pivoted to Bukkit plugins. I maintained those plugins for years and even published some of them, which introduced me to the concept of OSS. I kept with that all the way into college, when my old friend group collapsed and I finally shut down the server.
Here, I actually pivoted away from programming and studied computer security. I even swapped the software development branch of my major for a cyber security focus instead. I only swung back to programming at the very last minute because I got a software internship and really enjoyed the work. I still graduated with a cyber security focus, but now I'm a professional software developer 🤷♀️
Before college, the only exposure I had was some basic HTML and CSS in high school because I wanted to customize my MySpace and LiveJournal (am I dating myself here? haha). Then I had one class my freshman year of college that involved some C++ programming, which was my first time actually writing a full program. Halfway through college, I wanted to change my major, and I ended up switching to CS since a few of my friends were doing that, and it turned out I liked it well enough.
Since I was little I was into computers and video games. Got into college, dropped out, got a job as an event producer.
Pandemic hit. Got back into code. Learned web stuff. Worked as a freelance for a couple of years. This January got a job as a Java developer.
I started by making myself a small personal website in the early 2000s, and introducing iframes because I was tired of copy-pasting the same navbar into each page. That led me to PHP to achieve the same thing with includes, and then the snowball effect started.
After more amateur and self-taught website work before uni, I then started a CS degree and was taught how to program for the first time: starting with Java, some Haskell, some C and more than enough perl.
The working world came knocking and I expanded my repertoire to include Python and any other language of the day.
Growing up in the 90s, I watched my father work with computers in the US Air Force. In 2001 he gave my brothers and I an HTML book and stated that "With this and Notepad you can write your own websites". We proceeded to tear that book apart and each of us had a web site on our Windows 98 SE computers that were networked together and thus had our sites linked together. Nothing spectacular but it was fun.
I wish now that I had spent more time on the javascript side of the book as I am still pretty weak with JS.
BASIC and eventually Z-80 asm on the Sinclair ZX-81. I didn't have an assembler so I had to translate the instructions on paper and POKE
them in by hand. I managed to write a screen scrolling routine this way. RAND USR 16514
and all that.
Some other Z-80 micros after that and then PCs and jumped on the Linux train pretty early on, been riding that since.
In 2021, I had the same thought as you. Thought websites were cool so learned HTML, then the rest. Went to night college until about a week ago studying web dev and mobile dev.
I got recruited into a company about a year ago now (during college) and have been an employed Front-end developer ever since.
God it was so long ago. I learnt programming on AS/400 mainframes. Started with RPG and IBM C. Hated it and delved into Linux and C programming and just went from there. These days, I can read and do write everything from assembly, C, up to Golang and Python. The language is just a tool to accomplish a goal. I can do a bit of web dev but nothing with the latest and greatest frameworks like react etc. Give me plain HTML/CSS and I can manage though.
It's a silly reason for my case. When I was like 11, I watched so many hacker movies and was like "damn this is cool, I want to be like them" so I dug through the path of "how to become a hacker" and saw that I need to know the program before trying to hack it. Tried learning C but failed because my monkey brain can't handle all that. So I ended up writing random bash and python scripts since that time.
I started 20 years ago when I was in the 4th grade. Asked my dad who was a software consultant to teach me what he new about web dev. From there I got interested in video game development. I dabbled in flash, game maker, and unity over the following decade. By the time I had my BS Computer Science, I was no longer interested in game development. But the passion for solving problems with code remained. So that’s what I do to make a living now.
google appmaker. it had blocks you could drag to do stuff. i made a few games where you click stuff to make other things show and change the color of things, kind of like point nad click adventures but eith just buttons and background colors
then a year later i found scratch and i got addicted. scratch -> python -> html/css/js and nodejs -> visual basic for a bit -> ...
Club Penguin! I loved the game but once I reached 12 or 13 I was a little bored with it and saw some kids making cheat programs. It was mostly harmless, you could make your penguin giant or change your name to something silly client-side.
Eventually I was making bots that would follow you, or scanners for the "celebrities" (like Rockhopper) and then went on to write servers. The socket code was really fascinating to me.
I was forced to learn HTML as a 9-year-old so I could make sick Pet Pages on Neopets and show off to all my Neofriends.
Took a random programming fundamentals course in college. The rest is the rest
Got to use a TRS-80 in school, learned a little Basic. Then saved up to buy a TI-99/4A in 1980. Immediately started playing with the built-in flavor of Basic to make simple games and apps. Progressed from there into the Commodore line (which is where I learned Assembly) and eventually into DOS/Windows. First paid gig was in 1985. Been doing it ever since.
Copied basic code out of computer magazines, read a DOS 3.1 book cover to cover in the 80s as a kid. Just always drawn to it. Today I wrote some bicep code to allow my dev team to access the key vault in the lower environments but not the upper. I've done Vb6, flash actionscript, objective c, Java, C#, python, C++, SQL, ruby, spingboot, jquery, angular, react, Perl, PHP, VBA, Foxpro, T-SQL, and many other languages.
It's still fun.
I started when I was 7 on an old Amstrad CPC464, together with a book teaching you BASIC. I mainly copy/pasted programs from the book until I learned some basics. It's been programmer's life ever since.
What a trajectory your life can take from one simple child's enjoyment.
Grew up playing videogames and always wanted to make my own. Didn't really click for me until I was able to take AP Computer Science in highschool in 2014. Now I'm aiming to finish up my PhD in CS with a focus on ML and CV.
When I was young I always thought programming was mind-bogglingly complex, that I'd never be able to do it, I wrote it off. In school I took IT classes because I was good with computers but they never had any programming so I wasn't exposed to that until I started a computer science degree. There I did my first programming course where I was gently introduced using Windows Forms and C# and was immediately hooked, right after class I went home and started making my own silly Windows Forms apps
I started a WoW guild in 2007, and installed a basic phpbb forum. But that was too generic for my liking, and I had a grand vision of setting ourselves apart via an awesome website built off the back of the forum login system.
What was I going to do? Pay an expert to do a proper job? With my money?
So that's how I got into PHP, and HTML /CSS, and everything since has just spiraled from there.
And yes, one of the first guild applications we got through my swanky new system failed because of an apostrophe. But this is how we learn!
I don't really remember what made me start but I do remember my first project being a hilariously bad c++ blackjack game, all spaghetti code. Also learned a lot by building Minecraft redstone circuits. I remember building a thing that sent a piece of data over a single redstone wire and stored it in redstone memory, I was so proud of myself for figuring it out lol
Did a little java to make Minecraft mods but eventually I stumbled on python and it stuck bc it was so easy to use.
Yeah, I got a lot of fundamental computer science from Minecraft's redstone too. Making a 3x3 piston door was basically a work of art haha
Can't believe how much time I spent as kid squinting at poorly drawn diagrams on the minecraft forums and trying to figure out what the hell I'm supposed to building haha
When I was 9 I started using “Cheat'o'matic” to have infinite health in Diablo 1 in the late 90s and it got me really interested in how computers work. I bought a kid-oriented book that taught Turbo Pascal and it showed some cool algorithms to draw spirographs and I enjoyed tinkering with it. From there I got to Delphi. At that point I was playing some online games and heard that they were written in PHP so I started learning that along with HTML. Then C, x86 ASM (just basics), and Flash's ActionScript, Visual Basic, C++, Java, Python, and now Rust.
I got my PhD in computer security and have been working in Cyber R&D doing automated binary analysis.
Fun fact the author of Cheat'o'Matic now works on VAC anti-cheating system