Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "paradigm"
-
!rant
I've always wanted to son to enjoy the the same feeling I get when I'm developing. Today my son pulled up a chair next to me and started asking questions about my code, it's safe to say I got those proud dad feels.
Feels good man, feels real good.6 -
EDIT: devRant April Fools joke (2021)
-------------------------
Hey everyone,
@trogus and I are happy to make an exciting announcement. With the rapidly increasing success of NFTs, we've decided the devRant community shouldn't miss out on this compelling new paradigm for user-generated content. So, we will soon be offering all rants as NFTs at auction.
To kick things off, we're going to first be offering the first ever rant posted to devRant (https://devrant.com/rants/489/...) at auction for a starting price equivelent to $100,000 USD. We think this is a fair starting price for such a significant piece of devRant history, and we anticipate the final sale price to be significantly higher.
We look forward to hearing everyone's thoughts on this new direction for the devRant community, and we can't wait to see the Rant NFT market take off!
Sincerely,
@dfox & @trogus30 -
Customer: I don't see why you cant just make me something like Facebook for $300 this is ridiculous
Me: ...7 -
Things I wish I could tell my 18 year old self.
1) Accept you will make mistakes.
2) Truly learn the language you are using.
3) Write idiomatic code for the language you are using.
4) Be upfront about not knowing something.
5) Don't let not knowing something stop you from learning it.
6) None of us knew X until we learned it.
7) Understand your strengths and weaknesses as a developer, play to them.
8) Be willing to try new things.
9) X language isn't ALWAYS the best choice, X paradigm isn't ALWAYS the best choice. Choose wisely.
10) You won't know everything, but you might know more than others.
11) Your ideas and ego don't matter more than ensuring the product works.
12) "Perfection is the enemy of the good [enough]" - Voltaire
13) "Perfection is not achieved when there's nothing more to add, but when there's nothing more to remove." - Einstein.
14) Conflicts happen, deal with it.
15) Develop a toolset and really learn them.
16) Try new tools, they may prove better than what you were using.
17) Don't manage your own memory unless you absolutely have to, you are probably not smarter than the collective intelligence of the team that built the various garbage collection methods.
18) People can be dicks, especially online.
19) If you are new and people are being dicks to you, did you skip past the irc message about etiquette? If you did, you're the dick in this situation.
20) It can be tough, but it is fun, so have fun!6 -
Inspired by @h3ll, this is a combination of current and former coworkers:
Awkward Wizard:
This guy has the social skills of a microwaved dog turd. He is a genius, but working with him is about as uncomfortable as sticking a grill skewer in your eye and twisting it repeatedly until close of business. He laughs at inappropriate times, and every time he does, an unborn child tears its own ears off. He explains things in a way that only himself and Satan understand, then talks to you like you're a child when you don't follow his logic. He is the guy you hide when the CEO is around. His code is immaculate.
Backstab McGillacutty:
This bowl of bile is the son of a bitch that takes credit for everybody else's work. When you do something good, he was miraculously involved, but when you mess up, this twat is the dicknose that brings it up in retrospective and calls you out by name to the boss. You can usually find these guys talking shit about the CTO, until the boss quits. Then they buddy up with the CTO and become a Joel Osteen-esque evangelist for everything the CTO wants in a shitty, underhanded attempt to climb the ladder. Fuck this guy.
Professor Fuckwaffle:
This coworker used to teach Computer Science classes. Their resume is amazing, and they can speak to the most complex of design principles. This is the shitstain that you hire because of their skill and knowledge only to find out that ol' fuckwaffle can't apply the shit they spout to save their wretched lives. You'll spend more time listening to fuckwaffle lecture than you will reviewing their code (because they cant fucking write any!) You know the saying, those who can, do, and those who can't, teach? Yeah, that shit was written for Fuckwaffle.
Last but not least:
Scrumdumb:
This guy isn't even a coder. This guy is worse than the the scum you pour out of the bottom of a slow-cooker that you forgot to wash last time you made chicken. He's a non-technical PM. You know the type, right? He usually says "cloud infrastructure," "paradigm," "algorithm," "SDLC," etc but has no grasp of any of them. He often opens his dumpster to spout off something like "You can just create a new class for that" while talking about HTML. I won't waste any more breath on Scrumdumb, he already creates enough work for me.3 -
Reading your code from years back is one of the most painful experiences a developer has to go through.5
-
(c) Creative Tim. Worth to read pips!
How to land a programming job
1. ABC (Always Be Coding) - The more you code, the better you'll get.
2. Master at least one multi-paradigm language - Some good candidates are C#, C++, Java, PHP, Python, and Ruby.
3. Re-invent the wheel - You should implement the most common data structures in your language choice.
4. Solve word problems - Pick those that test your ability to implement recursive, pattern-matching, greedy, dynamic programming, and graph problems
5. Make coding easy - At least, make it look easy.
6. Be passionate - If you don't care, then nobody else will.
7. Don't make assumptions - Ask questions if you're not sure.11 -
Coding has caused a paradigm shift in the way I look at the world. Previously I would look at something and be amazed as to how it happened or was made and then depressed because I would think such things could only be done by geniuses and not by me. Now, I know that complex things are made up of many simple things and anything complex can be kind of deconstructed with enough understanding. Its an empowering feeling knowing that I can create something amaizng.3
-
Sometime in mid 2013 or 2014 as a junior dev I woke up to a call from my company's CEO. He informed me that the legacy system they use for order processing is down nationwide that nobody can add new orders until it's fixed and that I needed to fix it. I had been working there 6 months and was hired along with a senior dev to begin developing a web app to replace this legacy system. The senior dev had left the company two weeks earlier for a better offer so it was put on me to figure it out. I was very frank with the CEO and told him I didn't know if I could fix it and suggested he try to call the company they hired to create it. I didn't even know where the source code was let alone what the design paradigm was or whether or not there was any documentation. He said he would try figuring out who created it and give them a call and asked "As a developer you shouldn't you be able to fix this?" I just told him it wasn't that simple and left it at that.
I get to work and the CEO has discovered that the company who created the software no longer exists and I tell him he may need to find a company to consult on this if I can find the source code and if I can't find the code he might be screwed.
I found the source code in a random IT shared folder there is no source control, no documentation, no unit tests, no test environment, and it looks like nobody had touched it since 2005 or about 8 years.
Despite being completely unfamiliar with the code and the design paradigm I was able to figure out that they were validating customer addresses against an old Google geocoding API that was shutdown the day before and the lack of response was killing the application. I fixed the issue and warned the CEO before deployment that I wasn't able to test but he said to go ahead and thankfully all went well.9 -
Still trying to get good.
The requirements are forever shifting, and so do the applied paradigms.
I think the first layer is learning about each paradigm.
You learn 5-10 languages/technologies, get a feeling for procedural/functional/OOP programming. You mess around with some electronics engineering, write a bit of assembly. You write an ugly GTK program, an Android todo app, check how OpenGL works. You learn about relational models, about graph databases, time series storage and key value caches. You learn about networking and protocols. You void the warranty of all the devices in your house at some point. You develop preferences for languages and systems. For certain periods of time, you even become an insufferable fanboy who claims that all databases should be replaced by MongoDB, or all applications should be written in C# -- no exceptions in your mind are possible, because you found the Perfect Thing. Temporarily.
Eventually, you get to the second layer: Instead of being a champion for a single cause, you start to see patterns of applicability.
You might have grown to prefer serverless microservice architectures driven by pub/sub event busses, but realize that some MVC framework is probably more suitable for a 5-employee company. You realize that development is not just about picking the best language and best architecture -- It's about pros and cons for every situation. You start to value consistency over hard rules. You realize that even respected books about computer science can sometimes contain lies -- or represent solutions which are only applicable to "spherical cows in a vacuum".
Then you get to the third layer: Which is about orchestrating migrations between paradigms without creating a bigger mess.
Your company started with a tiny MVC webshop written in PHP. There are now 300 employees and a few million lines of code, the framework more often gets in the way than it helps, the database is terribly strained. Big rewrite? Gradual refactor? Introduce new languages within the company or stick with what people know? Educate people about paradigms which might be more suitable, but which will feel unfamiliar? What leads to a better product, someone who is experienced with PHP, or someone just learning to use Typescript?
All that theoretical knowledge about superior paradigms won't help you now -- No clean slates! You have to build a skyscraper city to replace a swamp village while keeping the economy running, together with builders who have no clue what concrete even looks like. You might think "I'll throw my superior engineering against this, no harm done if it doesn't stick", but 9 out of 10 times that will just end in a mix of concrete rubble, corpses and mud.
I think I'm somewhere between 2 and 3.
I think I have most of the important knowledge about a wide array of languages, technologies and architectures.
I think I know how to come to a conclusion about what to use in which scenario -- most of the time.
But dealing with a giant legacy mess, transforming things into something better, without creating an ugly amalgamation of old and new systems blended together into an even bigger abomination? Nah, I don't think I'm fully there yet.8 -
Don't get me wrong, I like funcional programming, but this smug „This would neeever happen with FP“ bullshit really gets on my nerve and kind of turns me off the idea of ever wanting to work with FP programmers.
It's just another paradigm, it's still possible to write unmaintainable fuckugly crapcode with functional programming.
And it is still very possible to write beautiful, clean, well maintainable code with OOP. Get over yourselves and understand that it's a tool and not a religion, and a good dev should know when to pick which tool for which job without childish notions of intellectual superiority.4 -
I wish all open source desktop applications had the same combination of expert features and polish as Blender.
The state of FOSS applications for creating diagrams, DB management & ERD, drawing SVGs, editing video, slideshow presentations, document processing, etc -- Yeah just all of it seems to be either stuck in some 90's UX paradigm, or it's a basic-as-fuck Electron app with 12 buttons for toddlers.
I know... I know... it's FOSS, can't be entitled.
But there's a part of me that really wants to be.
Fuck it, I'm just going to be entitled.
FUCK YOU LAZY FOSS DEVS, GET YOUR FUCKING SHIT TOGETHER AND MAKE SOME MODERN APPS. THROW YOUR GTK TOOLKIT BULLSHIT IN THE TRASH, GO CHOKE ON YOUR RETARDED WINDOWS-95 THEMED TOOLBARS, AND START MOTHERFUCKING COMPETING. YOU'RE BEING SURPASSED BY VENDOR LOCKED $50/MONTH CLOUD ABOMINATIONS MADE FOR COKE SNORTING DIMWITS. DON'T GIVE ME THAT "BUT PEOPLE WORK ON IT FOR FREE" CRAP, IF BLENDER CAN MAKE A GREAT COMPETING PRODUCT THEN SO CAN YOU.
Ah, completely unjustified and unfair.
But it still feels really, REALLY great to get it off my chest.
Now that I have descended from my soapbox, I'll go drag my useless developer ass over to the nearest FOSS project and see how I can contribute to a slightly less depressing future.15 -
You know what really pisses me off about the dev community is the circle jerk that ensues when someone bashes something they have no experience in. Take yesterday's React bash on Reddit and DevRant. Thomas Fuchs compared React and JSX to the intermingling of HTML CSS and JS of 15 years ago. If you knew anything about React or spent 1 hour learning what it's about you would immediately know why that isn't true but no, a giant circle jerk ensued comparing it to PHP! I'm sorry but HOW can you compare a pure JS view library that is renderable by the browser, to a full fledged server side language?? Not to mention the React approach uses a completely different programming paradigm of functional programming.
When I first saw React and Redux I realized what this is all really about, a shift in the paradigms of programming. React + Redux is the first time that functional programming has entered mainstream. We've had functional programming available to us via Haskell and more recently Clojure for a while now but it was never very obvious how powerful functional programming could be outside of the niche that used it for more analytical type tools. Now we have things like hot reloading (https://youtube.com/watch/...) and state playback (https://youtube.com/watch/... skip to ~3min to watch the magic) thanks to immutable state.
Before you decide that React is just another flavor of the month library I encourage you to learn about the advantages that functional programming provides (https://medium.com/@cscalfani/...) and checkout Elm (http://elm-lang.org/) as well. The nice thing about React + Redux is that it gives us a way to start programming functionally, without having to learn ML style syntax like Elm and ClojureScript. Keep in mind, when Object Oriented Programming was becoming popular it was widely controversial as well and look at all it has done for us.4 -
I've seen several rants about dumb/useless teachers, college and the CS degree studies; today is a good day to vent out some "old" memories.
Around two semesters ago I enrolled in a Database seminar with this guy, a tall geek from the 80's with a squeaky voice, so squeaky mice could had an aneurysm if they listened to him.
Either way this guy was a mess, he said he was an awesome coder, that we were still "peasants" when it came to coding, that relational databases had nothing on him since he was an awesome freelancer and did databases every day, that we had to redo the programming course with him and with his shitty, pulled out of the ass own C++ style guide with over 64 different redacted rules.
He gave us sample code of "how it should be done" in Java...it ain't my favorite language but fuck me a fucking donkey could have written better code with his ass!! He even rewrote Java's standard input function and made it highly inefficient. He still wrote in a structural paradigm in OOP languages! And he dared to make this code reviews were he would proyect someone's code and mock it in front of the class as he took off points, sometimes going to the negative realm (3,2,1,0,-1...)
But you know what's shittier? That he actually didn't even attend, 90% of the time, it was literally this:
> Good morning class
> Checks attendance. . .
> I'll be back, I'm going to check in...
> 1 hour 45 minutes later (class was 2 hrs long) - comes back
> do you have any doubts?
> O.o no...? I'm ok.
> We're done
Not only that, he scheduled from 4 to 17 homeworks throughout the week, I did the math, that was around 354 files from everyone; of course he didn't check them, other students from higher semesters did and they gained each point taken from students making students from lower semesters get the short end of the stick.
How did I pass? He didn't understood my code or database schema and he knew he couldn't fail me as he had no ground to stand on.
Thanks for listening, if you got to the end of this long ass post and had a similar experience I'd love to read it.13 -
The more depressed you get over the current state of software is how you know you made it.When you start making your own opinions and say"wow these people are full of shit"
Primary example, the web development overblown bullshit. Fuck me dude, you really don't need that full featured react, vue, angular framework to make sense of shit. You are going over the top for fucking ajax functionality and state management that you could do by yourself without needing to learn a full framework, by the time you finish learning react you probably would have been better served with standard vanilla af JS and server side rendering.
Our world is full of fads and many talented people that perpetrate them. Its fine, it is a the nature of the beast. But a lot...A LOT of software is very POORLY written. And adding levels of abstraction over a very broken paradigm (web in this case) does and will not make it better.
Basically I am fucking hating being a web developer and want to go back to a time in which we cared about how much memory consumption our applications made as well as not worrying about the fucking frontend having the ability to implement machine learning.
I want to run sublime.exe and being sure that it is a native application to my system and not using a fucking contained web browser to implement my fucking text editor. With 20mb of ram at most instead of 500mb WTF.
I knew I made it when I could read comments on Hacker news and reddit and say "this idiot is full of shit", I knew I made it when I would sigh heavily at the idea of having another project rather than having a fan girl attitude towards it.
I knew I made it when people writing about software development meant shit to me rather than the wonder of what the fuck they were talking about.
I knew I made it when getting laid was more important to me than fucking around with code.
pussy > code
Fuck you.13 -
Bonus points if you also wrote it in a language entirely new to you, or even in entirely different paradigm. (In my case Haskell.)11
-
Structure: decades of programming in too many languages to enumerate. I lean functional, but only when the language doesn't fight it. No matter what I'm doing, my code is immutable in practice, if not paradigm.
Syntax: No one thing in particular. I code differently depending on the language.
When I start learning a language, I'll find the standard style checker and create a project where I write an example of every single rule.
The end result is generally a quick intro to the language and a bonus understanding of the hot sports opinion in said language. I call this an ocean boiler.
I lean heavily into autoformatting because I've worked on too many projects to care, and I have a general expectation that something which is important enough to make a code standard is important enough to be enforced in tooling. I'd rather spend my time solving problems that thinking about stylistics.5 -
PROCEDURAL PROGRAMMING
You write a list of instructions. The machine reads this list and runs your commands.
OOP PROGRAMMING
Quite similar to procedural programming but you group your functions via objects.
RANDOM PROGRAMMING
Learned of this new paradigm quite recently working with Blue Prism, which is essentially the program doing whatever it wants from crashing, freezing, returning wrong results, sometimes working properly, with no reason whatsoever other than the sheer malice of those beasts of burden who designed it in the first place. Mark my words, BP devs, you will be held accountable for your crimes against God and humanity.6 -
So this happened to me occasionally so I hope none of you cringe:
I was writing some new stacks for a new Cloud IDE that went Open Source (give them a try, they're Coder.com), and because working closely and not releasing till I please majority of people who will use it is my paradigm, I spent reasonable time to fix it. Finally everything is sunshi-
"Wait... It's already 3 in the morning? WHAT THE FUCK"
Yep I started around 21:30, finished around 03:30.
I need an alarm clock4 -
Debate (with rant-ish overtones):
FYI, while it is a debate, its a practiseSafeHex debate, which means there is a correct answer, i'm just interested in your responses/thoughts.
Ok lets kick off. So the remote team I work with had an opening for a new iOS developer (unrelated to anything to do with me). They interviewed and hired a guy based off his "amazing" take home challenge.
The challenge consists of 4 screens and was for a senior level position. For the challenge the interviewee created a framework (a iOS library) for each screen, included all the business logic for each screen inside, each one needs to be built separately, exposed some API/functions from each one and then created a main project to stitch it all together.
Now, my opinion is, this is highly unscalable and a ridiculous approach to take as it would add so much unnecessary overhead, for no benefit (I am correct btw).
The interviewee said he did it like this to "show off his skills and to stand out". The remote team loved it and hired him. The challenge said "show us the code standard you would be happy to release to production". I would argue that he has only demonstrated 1 extra skill, and in exchange delivered something that is unscalable, going to be a nightmare to automate and require huge on-boarding and a paradigm shift, for no reason. To me thats a fail for a senior to not realise what he's doing. This person will be required to work alone (in part), make architecture decisions, set the foundation for others etc. Having someone who is willing to just do mad shit to show off, is really not the type of person suited to this role.
Debate!11 -
Not really a rant.
When you start learning a new prog paradigm focused on a particular branch of math and then see it being used to solve a sudoku puzzle in 3 lines of code. Well, that shit changes you and makes you wonder how much shit in the field we don't focus in for being too concerned with everythingPython and everythingNode
Brain is mush but I am loving this shit.9 -
Just over heard, Dev A was reviewing another team's code ...
Senior Dev A: "I don't understand this teams code. I hate WebAPI. Wish we could use X."
Senior Dev B: "Why can't we use X?"
Senior Dev A: "It's frowned upon."
Senior Dev B: "By whom?"
- couple of seconds of silence -
Senior Dev A: "X is not a Microsoft technology"
- few more seconds of awkward silence -
Senior Dev A: "X is magnitudes slower than WebAPI anyway."
Senior Dev C: "What? How much slower?"
- caught off guard..didn't know Senior Dev C didn't have his headphones on -
Senior Dev A: "Um...I don't know, that is what you told me."
Senior Dev C: "I never said that. I've never used X. I prefer WebAPI anyway, but both WebAPI and X use REST based protocols, I doubt X is magnitudes slower. Actually, I think you told me WebAPI was slower."
Senior Dev A: "Different paradigm."
- second or two of silence -
Senior Dev B: "What?"
Senior Dev A: "Hey, did you see on twitter ..."
Have no idea where he thought that conversation was going. Maybe he was hoping the other devs would dog-pile/attack the code. Pretty funny it backfired. His face when Dev C said 'I never said that' was priceless. Like "Oh -bleep- ..how do I lie out of this one? ...quick, distract with random words or a twitter post" -
[wk249]
My specialty, I don't think I actually have specialised in anything, maybe that's why I never run out of work, shove a problem on my desk and it gets done, don't have experience? Welp, you do now!
Maybe that's the point, you see a lot of people fall of the wagon or get stuck without work, and here I am just plowing through the next problem at hand.
My career was founded on trying something new, seeing something and going, it's needs X, or Y and building my own with it - no degree got me into software, and no degree is going to replace the years of experience gained by just trying new things.
It also allows you to be well versed in a lot of areas and not feel the paradigm shift when changing stack, language, framework, or whatever, it's just another tool in the shed that has its purpose.1 -
@JoshBent and @nikola1402 requested a tutorial for installing i3wm in a windows subsystem for linux. Here it is. I have to say though, I'm no expert in windows nor linux, and all I'm going to put here is the result of duckduck searches, reddit and documentation. As you will see, it isn't very difficult.
First things first: Install WSL. It's easy and there's a ton of good tutorials on this. I think I used this one: https://msdn.microsoft.com/en-us/...
Once you got it installed, I guess it would be better to run "sudo apt-get update" to make sure we don't encounter many problems.
Install a windows X server: X is what handles the graphical interface in linux, and it works with the client/server paradigm. So what we'll do with this is provide the linux client we want to use (in this case i3wm) with an X server for it on windows. I guess any X server will do the work, but I highly recommend vcXsrv. You can download it here:
https://sourceforge.net/projects/...
for i3 just "sudo apt-get install i3"
Configurations to make stuff work:
open your ~/.bashrc file ("nano ~/.bashrc" vim is cool too). You'll have to add the following lines to the end of it:
"""
export DISPLAY=:0.0 #This display variable points to the windows X server for our linux clients to use it.
export XDG_RUNTIME_DIR=$HOME/xdg #This is a temporary directory X will use
export RUNLEVEL=3
sudo mkdir /var/run/dbus #part of the dbus fix
sudo dbus-daemon --config-file=/usr/share/dbus-1/system.conf #part of the dbus fix
"""
Ok so after this we'll have a functional x client/server configuration. You'll just have to install your desktop enviroment of choice. I only installed i3wm, but I've seen unity and xfce working on the WSL too. There are still some files that X will miss though.
*** Here we'll add some files X would miss and :
With "nano ~/.xinitrc" edit the xinitrc to your liking. I only added this:
"""
#!/usr/bin/env bash
exec i3
"""
Then run "sudo chmod +x ~/.xinitrc" to make it an excecutable.
Then, to make a linking file named xsession, run:
"ln -s ~/.xinitrc ~/.xsession"
Now you'll be able to run whatever you put in ~/.xinirc with:
"dbus-launch --exit-with-session ~/.xsession"
There's a ton of personalisation to be done, but that would be a whole new tutorial. I'll just share a github repo with my dotfiles so you can see them here:
https://github.com/DanielVZ96/...
SHIT I ALMOST FORGOT:
Everytime you open any graphical interface you'll need to have the x server running. With vcXsrv, you can use X launch. Choose the options with no othe programs running on the X server. I recommend using "one window without title bar".10 -
Let's invent a new coding paradigm. Its goal is to make code as it naturally really should be: Ugly af
See the current list of rules in the description14 -
To be locked in a dev-centered paradigm. I want personal projects that earn me money. I want my own business. But, it requires marketing. I have no respect for marketing people. I’m a dev, and that’s a common sentiment among devs. I have to get over it to achieve my goals, but it seems like I’m locked in a dev paradigm. I only see engineering.10
-
❤️ Swift ❤️
A new minor version of the compiler has been released !
How sweet !
Which comes with the latest Xcode, which is of course mandatory to deploy on your devices !
How cool !
Let me also break all your code because I've decided to change some obscure programming paradigm, and also because FUCK YOU. -
I’m done with people that derail meetings and discussions.
While I want to seek feedback for an Interface that I wrote, these attention seekers decide it’ll be the perfect opportunity to bring up the topic of “how functional programming paradigm facilitates better encapsulation”.
Everyone else follow suit. I try “time checking” and bringing the talk back on track. Never worked.
I’m concluding that meetings are shit and a COLOSSAL WASTE OF TIME.6 -
When I was in college OOP was emerging. A lot of the professors were against teaching it as the core. Some younger professors were adamant about it, and also Java fanatics. So after the bell rang, they'd sometimes teach people that wanted to learn it. I stayed after and the professor said that object oriented programming treated things like reality.
My first thought to this was hold up, modeling reality is hard and complicated, why would you want to add that to your programming that's utter madness.
Then he started with a ball example and how some balls in reality are blue, and they can have a bounce action we can express with a method.
My first thought was that this seems a very niche example. It has very little to do with any problems I have yet solved and I felt thinking about it this way would complicate my programs rather than make them simpler.
I looked around the at remnants of my classmates and saw several sitting forward, their eyes lit up and I felt like I was in a cult meeting where the head is trying to make everyone enamored of their personality. Except he wasn't selling himself, he was selling an idea.
I patiently waited it out, wanting there to be something of value in the after the bell lesson. Something I could use to better my own programming ability. It never came.
This same professor would tell us all to read and buy gang of four it would change our lives. It was an expensive hard cover book with a ribbon attached for a bookmark. It was made to look important. I didn't have much money in college but I gave it a shot I bought the book. I remember wrinkling my nose often, reading at it. Feeling like I was still being sold something. But where was the proof. It was all an argument from authority and I didn't think the argument was very good.
I left college thinking the whole thing was silly and would surely go away with time. And then it grew, and grew. It started to be impossible to avoid it. So I'd just use it when I had to and that became more and more often.
I began to doubt myself. Perhaps I was wrong, surely all these people using and loving this paradigm could not be wrong. I took on a 3 year project to dive deep into OOP later in my career. I was already intimately aware of OOP having to have done so much of it. But I caught up on all the latest ideas and practiced them for a the first year. I thought if OOP is so good I should be able to be more productive in years 2 and 3.
It was the most miserable I had ever been as a programmer. Everything took forever to do. There was boilerplate code everywhere. You didn't so much solve problems as stuff abstract ideas that had nothing to do with the problem everywhere and THEN code the actual part of the code that does a task. Even though I was working with an interpreted language they had added a need to compile, for dependency injection. What's next taking the benefit of dynamic typing and forcing typing into it? Oh I see they managed to do that too. At this point why not just use C or C++. It's going to do everything you wanted if you add compiling and typing and do it way faster at run time.
I talked to the client extensively about everything. We both agreed the project was untenable. We moved everything over another 3 years. His business is doing better than ever before now by several metrics. And I can be productive again. My self doubt was over. OOP is a complicated mess that drags down the software industry, little better than snake oil and full of empty promises. Unfortunately it is all some people know.
Now there is a functional movement, a data oriented movement, and things are looking a little brighter. However, no one seems to care for procedural. Functional and procedural are not that different. Functional just tries to put more constraints on the developer. Data oriented is also a lot more sensible, and again pretty close to procedural a lot of the time. It's just odd to me this need to separate from procedural at all. Procedural was very honest. If you're a bad programmer you make bad code. If you're a good programmer you make good code. It seems a lot of this was meant to enforce bad programmers to make good code. I'll tell you what I think though. I think that has never worked. It's just hidden it away in some abstraction and made identifying it harder. Much like the code methodologies themselves do to the code.
Now I'm left with a choice, keep my own business going to work on what I love, shift gears and do what I hate for more money, or pivot careers entirely. I decided after all this to go into data science because what you all are doing to the software industry sickens me. And that's my story. It's one that makes a lot of people defensive or even passive aggressive, to those people I say, try more things. At least then you can be less defensive about your opinion.53 -
What fascinates me the most about the industry we work in, is the disruptive and transformative nature of ideas the come out every day.
The technology we use augmented with the software we build have the capability to disrupt and shift the existing paradigm of absolutely any industry today. The solution we construct changes the way in which an industry functions, and brings the horizon closer while making the ocean wider.
So does our capability to design and transform the existing landscape with the ability to visualise the many dimensions of a problem that are otherwise overlooked by others.
I had one of the best feelings today when 3 extremely prolific doctors in the Indian opthalmological industry told me how the solution i built could change the way in which they have been working for almost 20 years ... For the best ...
It's just such a great feeling to know every line of code we write , execute and debug would one day disrupt and transform an otherwise traditional landscape.
So hooray to us and the things we invent, because at the end of the day a PC to code and internet for the outreach ( and stackoverflow ofcourse. 😅 ) Is all that's needed to bring about a metamorphosis of conventional thoughts and theories.1 -
4 years ago I made a personal goal/plan to be a full stack developer. Meaning a good understanding of any development between os level code and web/front end user experience.
Over the years this term 'full stack' has been abused greatly and now basically means 'a javascript developer that generally knows what they are talking about'.
So now, devRant collective I ask you. What do you call a developer with good skills in:
- os level code (c, c++ and os apis)
- database level tech (advanced querying and db aglo/modeling)
- software architecture
- application level (workflow and business logic)
- transport level (protocol design and usage)
- front end tech (graphics programming and event driven paradigm)
- user experience14 -
...sincerely?
FUCK YOUR PASSWORDS
FUCK YOUR PASSWORD REQUIREMENTS.
FUCK YOU thinking you are the most important site in the universe so of course everyone will remember their password mangled beyond the original intention/recognition by your idiotic requirements!
I want to have an insecure password? MY PROBLEM.
I want to have the same password everywhere so I don't have to go through the idiotic "forgot my password" dance each time I try to login into your page? MY PROBLEM!
You're not the most important site in the universe.
I'm getting seriously fed up with this idea in general.
WHAT THE FUCK. Why did nobody come up with nothing better yet?
And the password storages and autocompletions don't count, that's a plaster on top of idiotic paradigm, nothing else.
...how is there nothing more sensible, still, after 18+ years?5 -
Interesting..
From the book Effective Java, third edition:
"1997, when Java was new, James Gosling (the father of Java), described it as a
“blue collar language” that was “pretty simple” [Gosling97]. At about the same time,
Bjarne Stroustrup (the father of C++) described C++ as a “multi-paradigm language”
that “deliberately differs from languages designed to support a single way of writing
programs” [Stroustrup95]. Stroustrup warned:"
"Much of the relative simplicity of Java is—like for most new languages—
partly an illusion and partly a function of its incompleteness. As time passes,
Java will grow significantly in size and complexity. It will double or triple in
size and grow implementation-dependent extensions or libraries."
Bjarne Stroustrup (the father of C++)6 -
When are people going to understand that programming is not about quickly putting something together?
Programming may have its utility in helping us out building solutions, but that's a secondary function of it.
Ultimately and abstractly, as MIT professors said, it's about the imperative paradigm of solving problems.
I really dislike it when people treat programming as if it were a toolbox. It is a great engineering feat. That's like saying math is just about numbers. No, it is about concepts. We're thinkers, not doers.4 -
So, rant!
So, global-huge-paradigm-shift project moving forward. Lots and lots of architects of multiple sites world-wide, stakeholders and business peeps and sub-corp manager and head-of-fucking-everything-of-multi-billion-dollar-CEO involved with different amounts of energy and passion.
Huge amount of money involved. Not only for the multi-year project endeavour but also in licensing costs for the years and years to come.
It's a big deal for the corporation.
And it's clowns everywhere. Leadership, project leads, technical project leads, architects. Am I one of them? I don't think so because everyone is mad at me. Since I cause trouble. Since I tend to say that I don't give a FUCK about the product being a Gartner Visionary player if you can't test the fucker properly...
Last week I attended a workshop in USA (I live in Europe) regarding this change which left me with a bad taste in my mouth. I am so far away from my comfort zone.
To these people (me?) get payed for this work? Is this really relevant? Why the FUCK did I need to go to a different continent? "The "Core team" need to be on site". Yeah, right. Fuck you Mr Project Leader, I can tell you are far, far away of being on-top of this thing...
Pointless.
It's pointless.
But I guess this is why you get payed.
Work.
Tomorrow is Tuesday and I think I will raise my hand yet again and explain to all I meet that I see HUGE risks with this project as it goes along right now. We kind of make things and that has to, you know, work. NOT making things for 1 hour is... well, that is really, really bad.
I give this project ten percent chance of succeeding above the set thresholds for all different areas/functionality. (I am sure the fuckers will alter the thresholds to show off a "successful project". Fuckers.2 -
I continue to internally read and study about Smalltalk in an effort to see where we might have FUCKED UP and went backwards in terms of software engineering since I do not believe that complex source code based languages are the solution.
So I have Pharo. Nothin to complex really, everything is an object, yet, you do have room for building DSL's inside of it over a simple object model with no issue, the system browser can be opened across multiple screens (morph windows inside of a smalltalk system) for which you can edit you code in composable blocks with no issues. Blocks being a particular part of the language (think Ruby in more modern features) give ample room for functional programming. Thus far we have FP and OO (the original mind you) styles out in the open for development.
Your main code can be executed and instantly ALTER the live environment of a program as it is running, if what you are trying to do is stupid it won't affect the live instance, live programming is ahead of its time, and impressive, considering how old Smalltalk is. GUI applications can be given headless (this is also old in terms of how this shit was first distributed) So I can go ahead and package the virtual machine with the entire application into a folder, and distribute it agains't an organization "but why!!!! that package is 80+ mbs!") yeah cuz it carries the entire virtual machine, but go ahead and give it to the Mac user, or the Linux user, it will run, natively once it is clicked.
Server side applications run in similar fashion to php, in terms of lifecycles of request and how session storage is handled, this to me is interesting, no additional runtimes, drop it on a server, configure it properly and off you go, but this is common on other languages so really not that much of a point.
BUT if over a network a user is using your application and you change it and send that change over the network then the the change is damn near instant and fault tolerant due to the nature of the language.
Honestly, I don't know what went wrong or why we are not bringing this shit to the masses, the language was built for fucking kids, it was the first "y'all too stupid to get it, so here is simple" engine and we still said "nah fuck it, unlimited file system based programs, horrible build engines and {}; all over the place"
I am now writing a large budget managing application in Pharo Smalltalk which I want to go ahead and put to test soon at my institution. I do not have any issues thus far, other than my documentation help is literally "read the source code of the package system" which is easy as shit since it is already included inside. My scripts are small, my class hierarchies cover on themselves AND testing is part of the system. I honestly see no faults other than "well....fuck you I like opening vim and editing 300000000 files"
And honestly that is fine, my questions are: why is a paradigm that fits procedural, functional and OBVIOUSLY OO while including an all encompassing IDE NOT more famous, SELECTION is fine and other languages are a better fit, but why is such environment not more famous?9 -
[DISCLAIMER : Potential Troll Topic here] I am self taught python and js (not considering myself as a real developer as I don't push much on github and work in a complete other field than anything related to CS right now) and would be interested to learn another language, with another paradigm. So, as I love you all, I would be interested In your highlights as I am currently considering either C, C++, Rust or Go.
with C, I know I could interface it with python. With C++ (despite Linus considering it evil) I know I could interface it with Node. I don't know currently what to do with Go, but some people seem really enthusiastic about it (not really relevant I know) and Rust seems like the C of today, with a bunch of new cool kid stuff. My main goal, after all, is to learn something new, to have another sight on programming. Either understanding more about hardware or learning another way of coding (like different from oop).
I know it sounds like a troll, but I promise it's not, just a serious genuine question (hopefully it won't be closed here like on SO)
So what do you think devranters ?
Being eternally grateful to all of you, I wish you a good night.10 -
Am I the only backend Web developer with minimal knowledge of frontend? How can frontend be so hard.5
-
I'm an iOS developer, but I also write Java code at work for our servers. I'm pretty appreciative of multiple technologies / implementations, and don't really participate in religious wars. 99.9% of people at my job are hardcore Java server developers who worship the JVM and hate everything else. I work primarily in objective-c and swift. Hearing them bash Apple as a horrible company (while using a Mac btw) and hailing Java as the greatest language since sliced bread, gets pretty fucking annoying after 2 years. So I decide to participate in their flame wars for once, do some digging, and come across this: https://cs.gmu.edu/~sean/stuff/.... They could not nor would believe the post, because the fact that their precious Java could have borrowed at all from the "terrible" Objective-C / Smalltalk paradigm was too much to bear. Talk about close-minded..1
-
Struggling
Started a new job not super long ago with the intention of "learning new tech" and so I get my wish, I'm thrown into a project as the LEAD ENGINEER
And my junior dev proceeds to run circles around me and I know literally nothing about what is going on in this project aside from the architectural / feature planning discussions I've had with marketing/junior
I've been trying to learn vuejs for what seems like weeks and weeks and I'm just not "getting it" I come from a strong oop php background and this paradigm is using tons of tech I know basically nothing about. Every time I talk to junior I get super depressed cause he's speeding along and I'm still completely clueless.. what the FUCK do I do6 -
In my experience object oriented is very good for composing high level abstractions into a complete system. Functional is awesome for validation, parsing and massaging data in any way and imperative is tithe most useful paradigm to handle side effect dependent code that either manipulate the computers state ( read/write) or communicate with external systems.
The people acting as if one of them is the one true way are misleading you.3 -
So we started a new Unity video game project for mobile in June 2021. Hooray!
Being a mobile project, one of the earliest things we think about is scaling the interface across all sorts of device screen resolutions and aspect ratios, right? Well, to preemptively solve this problem early on, I decided to letterbox the game view - just choose one aspect ratio for the game and pad black bars to the sides of the screen. Simple, solves the game's world space problem without trying too hard, and it automatically adapts to Android's split-screen mode.
I showed the early builds to management as well as game design team and they gave me some general nods. Sounds like green light ahead. I spent the next few months building the game logic and scale the UI around a consistent letterboxed game view. If you had experience scaling Unity UI to a letterboxed area, you should already knew that it takes a whole paradigm of its own that's kinda hard to break out of, but the fact that it stays consistent across all screen aspect ratios is so worth it. Regardless, the biggeer benefit of letterboxing is simpler world space setup. You don't worry about whether this particular area will be overflowed horizontally or vertically in a particular device or not. You have a 9:16 window to view the world through, nothing needs to move at runtime and that's about it.
Fast-forward to early September 2021 and 40+ builds later, the GD started having concern that the playing area is not filling up his phone screen and that the letterboxes are bothering him. He wants to get rid of the letterboxes and wants the game world as well as UI to fill up his screen.
Yes. After 40+ builds, for all of which the letterbox was present, nobody in the project raised a concern about the letterbox. It's only NOW that they all of the sudden side with the GD and demand the removal of the letterbox. I feel like almost half of my effort on this game has been wasted. These clueless guys didn't spend one second looking at the early builds thinking of the possibility that the black bars at the top and bottom of their phone screens (which I repeat: has been around since the very first build) is gonna bother them? Somebody must be playing a cruel joke at this company. They had all the chances to bring this up as a potential issue and TODAY is the first time I hear of it.
See, designers. You waste our time and your time by doing this kind of thing. Please raise your issues early. Complain to us ASAP. If you wait for so long before raising an issue that has been in-your-face the whole time, I can't fault any developer for assuming you're trying to play a long prank. I can tell designers right now: it's not funny.1 -
From the moment I started working I knew I wasn't changing the world, creating a new paradigm for the best and all that (even if I avoided working for the best Depression Providers aka Social Medias and other addiction providers)... BUT I never thought about how kind of useless my job was on this "worldly" level...
And lately talking with other seniors profiles in my network (friends having "good careers" ) we kind of concluded that 90-95% of our resumes where in fact CRM/ERP/E-Commerce with a twist...
And fuck, it sucks!! It's useless as fuck at best (let's not talk about the worst cases)... Also, that's most of the startups "innovating" I have met/know... Which also sucks...
I'm baffled by it... And I feel so fucking useless...
fuck... I knew having children was not the best idea...2 -
Let's focus/master computer architectures, coding paradigms, datastructures. Everything comes after that...the problem with todays academics is that they are more focused on immediately deploying students to industry; theyre more focused on teaching specific frameworks and specific language instead of teaching how things work...i bet most students (at least in my country) are having troubles with endianess or encoding or even byte manipulation or what a thread is....If im going to be the teacher for example of an oop subject, ill let the student choose the language they want as long as the oop paradigm is intact ,it will be fine.. i dont friggin care whether you know vue or angular or swing if you dont even know what a callback is..
-
I need to stop treating an OO language as if it were a procedural language.
I have the tendency to turn my code into GOTO spaghetti even though I'm semi-aware that objects exist and that they are distinct.
I still have to get used to this paradigm.
My Java professor always swore by the Plato paradigm, i.e.:
""Platonism" and its theory of Forms (or theory of Ideas) denies the reality of the material world, considering it only an image or copy of the real world.
According to this theory of Forms there are at least two worlds: the apparent world of concrete objects, grasped by the senses, which constantly changes, and an unchanging and unseen world of Forms or abstract objects, grasped by pure reason (λογική). which ground what is apparent." (wikipedia)
Thinking in objects, abstractions and metaphysics is not something I haven't done before (I've practiced it during Sociology and Ethics with the whole Pascal Leibniz, Newton and DesCartes approach) but it's certainly not easy.
Then there was my cool Programming 201 professor who said: "Don't worry man, just read those great UML, Program Design and GOF books and it will all become easy, like a story. It'll all make sense.
I mean, I've graduated, I've passed my Software Engineering I, II and III (hard as hell) but since I haven't focused on those theories and practices anymore, I've lost my touch.
It's definitely not easy for a novice programmer to transition between paradigms..10 -
Object Orientation is not a feature, it is an unneeded layer of complexity over a dying paradigm, Imperative Programming7
-
Anyone in here successfully using a pure FP language/ecosystem on their day to day?
I know of one of you that uses Scala, and myself I have an (admittedly) shitty application at work running in Clojure. These last two languages I mentioned are not pure FP.
I am talking about the likes of PureScript, Haskell, etc. Those mfkas.
If so,what is your experience working in said paradigm? I tried to keep my Clojure program as pure as possible, I failed, but enjoyed it.
And I know that FP is not a silver bullet, but in some scenarios when properly applied it can work beautifully. I also have React based applications with pure components, but Javascript itself is neither a functional(pure or otherwise) programming language, it merely supports functional paradigms.
Just wondering, no flamewars or anything like that, I just want to know your pros and cons.6 -
Whatever the task needs.
New paradigm? Probably a book first approach.
Library/API: their own suggested tutorials and references cause that shit moves quick.
If I have to read a cave painting to understand an ancient card punch language I’ll happily do it.
I’ve found, when I don’t know something yet I get the “brick wall” feeling, that this is all going to be too difficult... I’ve learned to love that feeling.
If all else fails: RTFM. -
I came from a procedural background, then adopted object-oriented programming, and now I am very enthusiastic about functional programming. Is this kind of an evolutionary path as a programmer? Or am I just late to the party?
And what paradigm follows?5 -
Hey, would you mind trying this new powerful JS library?
It has really powerful abstraction over powerful features that compose powerful components using powerful patterns based on a powerful new asynchronous paradigm2 -
I got into development only a short time ago.
My mother paired up with a partner who was a dev making some serious cheddar when I was just barely not a teenager anymore, while I was working shitty low-wage customer service gigs.
Honestly, the only reason either of them could give me for doing it was the money.
A couple years went by, I was extremely fortunate: found a job within 6 weeks of finishing a year-long program at the local technical college which only yielded me a basic cert. By that time, my mother's partner had long lost their job, and I had paid their rent (twice my own) on two separate occasions. I went from usually having about a hundred dollars after bills to last me until next paycheck to five times that.
A couple more years go by, I'm doing pretty well supporting my own family now (my wife and child, not anyone else) and somehow doing way better now than the people who spurred me ever did. I no longer have a reason to compulsively check my bank account out of worry that I'm overdrawn.
Now I'm locked in an endless battle in my mind to find a correction for every flaw in my life, or at the very least a workaround. I go to bed and wake up thinking about the same things: my work. Buuuutttt.... My family has everything they could ever need and more.
So I guess I could say the support I got from my family was:
* an initial nudge in the "right" direction
* a reality check on what the industry can be like
* a sentence to eternal damnation by changing my paradigm on everything -
love hate kinda deal with this. But I am creating a program in answer set programming that would help me analyze famous chess matches from legends such as B Fischer, Carlsen, etc in an effort to stop at one point and predict what could have happened differently in the match in order to make the other player win. I am adding limiters as to not propagate into every fucking solution in existence else the processing power required to solve this shit would be all too hardcore. I learned about this programming paradigm in one of my graduate level classes using a tech known as Clingo, which is similar to Prolog. I am doing it cuz I sucked at Clingo and because of my pride I aim to make this project a reality to properly say that I know how to use it.
current status: failing somewhat miserably4 -
I'm working on a prototype for The New Oil revamped landing page and wanted to know your opinion so far.
Issue for context: https://gitlab.com/thenewoil/...
How do you perceive "clear screens" design paradigm? What could use more improvement?question nate prototyping cybersecurity thenewoil website surveillance report techlore tno design privacy16 -
I've been using dotnet and aspnetcore for years. I've heard people complain about MVC but I never really saw the problem. The controllers are easy to set up for basic endpoints, I have my domain models and DTOs, and our views I guess is our standalone webpage just consuming jsons.
Only now I'm having to work with an *actual* aspnet MVC stack - server-rendered cshtml and all - and it's dawning on me like a truck what people were actually referring to.
Out of all the issues I've had so far, they have all been due to black box enigmatic voodoo because don't worry about it, the framework takes care of it - it should just work. But what if it doesn't? I have no idea because the trail ends at the bit that should just work.
I should know better than to criticize an entire framework and paradigm made by devs with vastly superior experience and expertise than me, and my issues are absolutely due to being new and unfamiliar with this, but imagine coming up with an architecture to obsessively separate the MVC concerns, then you make cshtml.2 -
Still not sold by OO, but I'm hook line and sinker for pharo/smalltalk.
It actually seems to share a lot of fundamentals with Lisp namely extremely tight syntax and live code reloading.
My opinions of a productive language being dependant on a specific paradigm might be changing in favour of the tooling supplied with a technology/language. -
Silly question: what is the main difference between a procedural programming paradigm and a functional paradigm?7
-
Don’t fall for the “language A is better than language B” -it’s all just syntax (within the same paradigm). Learn higher concepts such as: data structures, abstraction, loops, variables, conditionals, functions.
Only then can you decide that your favourite language is better than anyone else’s...5 -
React + Redux + Router is do fucking awesome stack. Love It much more than angular 1.x. App works so fast, is scalable and easy to maintain.
Reactive paradigm for the winner!2 -
2020 Website design trend example
https://www.tn-ict.com/en/
butter smooth transitions, contextualized displaying of information. Break up of the traditional page paradigm.6 -
Finally, I finally got my dream job, but three weeks after starting, I will say I am going into depression.
First, I have to learn a new language (the lang is less than 7 years old) on the job. The language is so different from the paradigm I am used to-from OOP to functional programming, it has very little confusing documentation and a small but growing community.
Though I have been able to show some work, goddamit, it's taking me blood and sand to adjust and be productive.
My onboarding tasks are fixing bugs and implementing a feature, and it has been like walking in a dark tunnel.
I have to face my problem alone as all the devs in the team have swapped.
I rarely sleep, and I recently started to have an existential crisis!
Also, I work part-time on another project, and my output is so poor due to the fact that I am trying to adjust to the new job. Just this evening, I got a call from the manager who was passively aggressive, complaining and asking me to rethink (a passive way of saying "you are fired, if you do not...").
I am feeling anxious. It is taking so much time daily to adjust to the new job.
Will the depression pass?10 -
It's really sick how beginners start to code in Javascript and CSS, and their complex frameworks, without even understanding atleast the paradigm first. Googling your way up can be fine for smart ones, but as least time optimal this learning method sounds, it's as dangerous and non-productive too.
Also once project gets to a certain level, it's practically impossible to revisit and refactor old codes in front-end languages which kills the maintainability. Views?3 -
All u need is C folks seriously fuck the OOP concept you waste more time in a paradigm dilemmas than writing functional code. And that’s a damn fact.
I feel sorry for the mobile developers that are stuck using the OOP methodology6 -
"Abstract all the things!"
Theres so much fucking abstraction and so many different ways to abstract shit that I don't fucking know how anything works anymore.
Fuck this5 -
Programming Paradigm Convergence.
I can already see it in JS and C#. Both have functional/OO aspects and keep growing more similar in terms of language features.
I'd rather see OOP die a fast and horrible death though 🤷♂️6 -
“so i know you folks are up against it with this deadline, but i made a burndown chart i’d like to go through” - every project manager
-
why so little books about enterprise paradigm on developer (best practice/app lifecycle/scrum, etc) when so many resources about coding4
-
I am wondering..i learnt Java, later on PHP and during my internship Clojure and during some remote projects JavaScript and now because of my AI/Data Science ambition, hv been dwelling on Python and about R...am I going crazy or just confused...what paradigm should I focus on and stay there proficiently?!🤕🤕1
-
Start with simple projects then keep improving it until you reach the depth level that you want.
I used to learn a new language/technology every month, I did that all this year until now, I learned 3 new languages, 2 new databases, 1 new paradigm, so many frameworks and methodologies and design patterns applying in real world projects ! -
A very long rant.. but I'm looking to share some experiences, maybe a different perspective.. huge changes at the company.
So my company is starting our microservices journey (we have a 359 retail websites at this moment)
First question was: What to build first?
The first thing we had to do was to decide what we wanted to build as our first microservice. We went looking for a microservice that can be used read only, consumers could easily implement without overhauling production software and is isolated from other processes.
We’ve ended up with building a catalog service as our first microservice. That catalog service provides consumers of the microservice information of our catalog and its most essential information about items in the catalog.
By starting with building the catalog service the team could focus on building the microservice without any time pressure. The initial functionalities of the catalog service were being created to replace existing functionality which were working fine.
Because we choose such an isolated functionality we were able to introduce the new catalog service into production step by step. Instead of replacing the search functionality of the webshops using a big-bang approach, we choose A/B split testing to measure our changes and gradually increase the load of the microservice.
Next step: Choosing a datastore
The search engine that was in production when we started this project was making user of Solr. Due to the use of Lucene it was performing very well as a search engine, but from engineering perspective it lacked some functionalities. It came short if you wanted to run it in a cluster environment, configuring it was hard and not user friendly and last but not least, development of Solr seemed to be grinded to a halt.
Elasticsearch started entering the scene as a competitor for Solr and brought interesting features. Still using Lucene, which we were happy with, it was build with clustering in mind and being provided out of the box. Managing Elasticsearch was easy since there are REST APIs for configuration and as a fallback there are YAML configurations available.
We decided to use Elasticsearch since it provides us the strengths and capabilities of Lucene with the added joy of easy configuration, clustering and a lively community driving the project.
Even bigger challenge? Which programming language will we use
The team responsible for developing this first microservice consists out of a group web developers. So when looking for a programming language for the microservice, we went searching for a language close to their hearts and expertise. At that time a typical web developer at least had knowledge of PHP and Javascript.
What we’ve noticed during researching various languages is that almost all actions done by the catalog service will boil down to the following paradigm:
- Execute a HTTP call to fetch some JSON
- Transform JSON to a desired output
- Respond with the transformed JSON
Actions that easily can be done in a parallel and asynchronous manner and mainly consists out of transforming JSON from the source to a desired output. The programming language used for the catalog service should hold strong qualifications for those kind of actions.
Another thing to notice is that some functionalities that will be built using the catalog service will result into a high level of concurrent requests. For example the type-ahead functionality will trigger several requests to the catalog service per usage of a user.
To us, PHP and .NET at that time weren’t sufficient enough to us for building the catalog service based on the requirements we’ve set. Eventually we’ve decided to use Node.js which is better suited for the things we are looking for as described earlier. Node.js provides a non-blocking I/O model and being event driven helps us developing a high performance microservice.
The leap to start programming Node.js is relatively small since it basically is Javascript. A language that is familiar for the developers around that time. While Node.js is displaying some new concepts it is relatively easy for a developer to start using it.
The beauty of microservices and the isolation it provides, is that you can choose the best tool for that particular microservice. Not all microservices will be developed using Node.js and Elasticsearch. All kinds of combinations might arise and this is what makes the microservices architecture so flexible.
Even when Node.js or Elasticsearch turns out to be a bad choice for the catalog service it is relatively easy to switch that choice for magic ‘X’ or component ‘Z’. By focussing on creating a solid API the components that are driving that API don’t matter that much. It should do what you ask of it and when it is lacking you just replace it.
Many more headaches to come later this year ;)3 -
Trying to be a minimalist, I've always kept to learning a single programming language for each paradigm or type. Now my boredom (probably mild burnout) is making things get out of hand. I want to learn so many languages.
How many programming languages have you learned so far?16 -
I use the ICU format often for translation because it's simple enough and supported on many platforms. It's something of a standard so I can use the same translation string format and similar library functions everywhere.
ICU is like a really simple templating language, somewhere between printf and something like smarty or twig simplified and specifically intended for internationalisation.
I updated a library providing ICU compatible parsing and formatting for one of the platforms I'm using and find tests break. I assume that only thing to change is the API. ICU very rarely changes and if it did it would be unexpected for it to break the syntax in a major way without big news of a new syntax.
The main contributor of the library has changed since some time last year. Someone else picked up the project from previous contributors.
Though the library is heavily advertised as using ICU it has now switched to using a custom extended format that's not fully compatible and that is being driven by use case demand rather than standardisation.
Seems like a nice chap but has also decided for a major paradigm shift for the library.
The ICU format only parses ICU templates for string substitution and formatting. The new format tries to parse anything that looks XML like as well but with much more strict rules only supporting a tiny subset of XML and failing to preserve what would otherwise be string literals.
Has anyone else seen this happen after the handover of an opensource library where the paradigm shifts?3 -
I've been reading more books. The more I read, the more knowledge deficit I feel I have. It's an impostor syndrome circle.
One day death might free me from this misery but until then *opens another book on another programming paradigm.*3 -
For those with hiring experience, or just informed opinions.
Candidate A:
1.5 years self-taught web development, primarily Javascript, but also Ruby & Golang
6 months commercial front end experience
Brucey Bonus: a significant fullstack personal project (deployed), plus lots of smaller projects. Has focused a lot on learning OOP and functional paradigm principles.
Candidate B:
As candidate A, but instead of a personal project, has made a couple dozen PRs on a big open source project (ie Mozilla’s debugger). They seem to have eschewed really dialling down into algorithms/paradigms, preferring to learn “in the wild”.
They both perform equally well in interview tests, and appear to be engaging, hardworking and approachable.
Which one do you pick, and why?24 -
TIL "monorepos" are a thing, where you just whack all your projects into one insanely large repo. And not just a niche thing either - used by some of the biggest tech companies.
I thought this was a code smell that everyone moved past when we abandoned subversion.
I understand the theoretical arguments around ensuring that everything can be compatible, can make large scale changes at once, etc. - but I don't really buy that in practice. Surely if you've got that many inter-dependencies going on that just points to the fact you've got crappy code with way too much internal coupling?!
Does anyone use this paradigm? To me it just sounds like, for the big companies, moving away from one huge repo was too much hassle. So they gave it a fancy new name and pretended it's the new "cool way to work" instead.4 -
rust anyone? i am a c++ person, and it caught my attention as having an oopish-but-actually-functional new programming paradigm whatever... also (don't know if it's just mozilla's successful marketing) i had the impression that people see it as the new whiz kid in town. do you recommend indulging in it for the sake of trying something new?1
-
Sigh!..
https://github.com/tombh/novim-mode
Wtf, vim its not about keybinding paradigm, Its about talking to vim.
Why make vim less special?
Why make this vim cancer?
Who using this, u drunk. (Go home...)
(U miss the point of using vim completely)4 -
I'm reading some react/typescript code and I haven't work much with any other language or paradigm where I might have a function return multiple objects that are different types
e.g.
const { sna, foo, bar } = useWhatever();
I mean I guess it's just unpacking properties from the actual return object but that isn't apparent to a newcomer at a glance (if I remember correctly)
https://softwareengineering.stackexchange.com/...
Looking for additional insights from the wise devrant community30 -
I think that "agile development" paradigm is really bad for programmers when it is directed by incapable people... I mean: "move fast and break things" is not a good philosophy, it is only an excuse for doing incomplete, buggy and "documentless" features that only helps the PM "visibility" (look at all the things that I did, I've been releasing 1 version per week, we have included 3 new features... we are burning 25 scrum points per capita per week)... we have to stand against this stupid way of doing things... Scrum makes that all the responsability is on us, as developers, and PMs can wash their hands freely...2
-
Heroku.
I don't like setting up servers and things. I know how to (I spent 1.5 years using archlinux and I know a lot on what's going under the hood). I like the functional paradigm where the same input yields the same result. I don't like having side effects although I know they can be necessary.
I would have to create a script to handle the configuration process instead of spending hours redoing it.
That's what I love about Heroku even if it's pricey. Almost no configuration at all. Attach some addons, configure a few env variables and everything else is in the code. -
I could probably continue on long enough to reach the character limit, but then... you know... "tl;dr".
So here's just the first three that came to mind.
1. Never get too attached to your code. Sooner or later, by intention or tragedy, it will be gone. Instead, hold value in the lessons you learned when writing it.
2. Always be experimenting. Don't be afraid to try new languages, frameworks, technologies, etc. However, when it comes to projects intended to eventually reach production, stick with what you already know.
3. Ask questions whenever you have them. The explanation of your ignorance can sometimes alone be enough to shed light on some related technical paradigm.1 -
I wrote my first proper promise today
I'm building a State-driven, ajax fed Order/Invoice creation UI which Sales Reps use to place purchases for customers over the phone. The backend is a mutated PHP OSCommerce catalog which I've been making strides in refactoring towards OOP/eliminating spahgetti code and the need for a massive bootstrapper file which includes a ton of nonsense (I started by isolating the session and several crucial classes dealing with currency, language and the cart)
I'm using raw JS and jquery with copious reorganization.
I like state driven design, so I write all my data objects as classes using a base class with a simple attribute setter, and then extend the class and define it's attributes as an array which is passed to the parent setter in the construct.
I have also populateFromJson method in the parent class which allows me to match the attribute names to database fields in the backend which returns via ajax.
I achieve the state tracking by placing these objects into an array which underscore.js Observe watches, and that triggers methods to update the DOM or other objects.
Sure, I could do this in react but
1) It's in an admin area where the sales reps using it have to use edge/chrome/Firefox
2) I'm still climbing the react learning curve, so I can rapid prototype in jquery faster instead of getting hung up on something I don't understand
3) said admin area already uses jquery anyway
4) I like a challenge
Implementing promises is quickly turning messy jquery ajax calls into neat organized promise based operations that fit into my state tracking paradigm, so all jquery is responsible for is user interaction events.
The big flaw I want to address is that I'm still making html elements as JS strings to generate inputs/fields into the pseudo-forms.
Can anyone point me in the direction of a library or practice that allows me to generate Dom elements in a template-style manner.4 -
I see now that a few things that make programing seems so hard are;
1. Over thinking, over thinking will have you in a box not knowing where to start at times.
2. Procrastination, don't put off learning that concept or paradigm. A lot of stuff are interlinked or transferable regardless of language. So you don't need to lean it all but learn as much as you can.
1. Perfectionism, your code early on might just suck, and that's great cause then you can fix it and make it suck less. Nothing is perfect and they don't have to be in over to be good.
These are some of the things I wish I could go back and tell myself.4 -
In most businesses, self-proclaimed full-stack teams are usually more back-end leaning as historically the need to use JS more extensively has imposed itself on back-end-only teams (that used to handle some basic HTML/CSS/JS/bootstrap on the side). This is something I witnessed over the years in 4 projects.
Back-end developers looking for a good JS framework will inevitably land on the triad of Vue, React and Angular, elegant solutions for SPA's. These frameworks are way more permissive than traditional back-end MVC frameworks (Dotnet core, Symfony, Spring boot), meaning it is easy to get something that looks like it's working even when it is not "right" (=idiomatic, unit-testable, maintainable).
They then use components as if they were simple HTML elements injecting the initial state via attributes (props), skip event handling and immediately add state store libraries (Vuex, Redux). They aren't aware that updating a single prop in an object with 1000 keys passed as prop will be nefarious for rendering performance. They also read something about SSR and immediately add Next.js or Nuxt.js, a custom Node express.js proxy and npm install a ton of "ecosystem" modules like webpack loaders that will become abandonware in a year.
After 6 months you get: 3 basic forms with a few fields, regressions, 2MB of JS, missing basic a11y, unmaintainable translation files & business logic scattered across components, an "outdated" stack that logs 20 deprecation notices on npm install, a component library that is hard to unit-test, validate and update, completely vendor-& version locked in and hundreds of thousands of wasted dollars.
I empathize with the back-end devs: JS frameworks should not brand themselves as "simple" or "one-size-fits-all" solutions. They should not treat their audience as if it were fully aware and able to use concepts of composition, immutability, and custom "hooks" paired with the quirks of JS, and especially WHEN they are a good fit. -
Why my friend learns new languages: will it get me a higher salary?
Why I learn new languages: work isn't challenging, I don't have any side projects, don't feel like binging anime...
Just started learning Scala to once again try to pick up FP paradigm.
I'm also thinking it may be better for understanding algorithms?
Yes I know I'm late to the party -
How do you handle error checking? I always feel sad after I add error checking to a code that was beautifully simple and legible before.
It still remains so but instead of each line meaning something it becomes if( call() == -1 ) return -1; or handleError() or whatever.
Same with try catch if the language supports it.
It's awful to look at.
So awful I end up evading it forever.
"Malloc can't fail right? I mean it's theoetically possible but like nah", "File open? I'm not gonna try catch that! It's a tmp file only my program uses come oooon", all these seemingly reasonable arguments cross my head and makes it hard to check the frigging errors. But then I go to sleep and I KNOW my program is not complete. It's intentionally vulnerable. Fuck.
How do you do it? Is there a magic technique or one has to reach dev nirvana to realise certain ugliness and cluttering is necessary for the greater good sometimes and no design pattern or paradigm can make it clean and complete?15 -
I can't stand when people spend a single day familiarizing themselves with a new technology or concept and then come to the conclusion that's it doesn't work and really the old way is great. Not saying all new things are better. In fact, I'm probably more in favor of tried and true methods than shiny new methods. But one day? Really? That's all it took? In this particular case it's code-first DB development. Again, I'm not a fan myself really. But I have a co-worker who said creating tables and and schemas is much harder using code-first instead of DB first. I mean... Neither are hard. I personally think it's easier for basic things like tables and schemas but either way it's not hard. Now SQL triggers and index's all that fun stuff? Yeah code first is probably more complicated (I'm clearly not a database expert or anything). But a day? Really? You know enough to force a design paradigm on the whole company now? Wtf.3
-
It irks me dearly when people look up to me and then copy me. I feel like they're doing it just because I'm doing it and they like it, but whether it's actually something good for them doesn't really matter. Kind of like using a coding paradigm because it's "cool", but it actually makes the code in your case hard to follow, inefficient and suboptimal.
I'm talking about life in general, but in coding as well.
Does this irk you guys as well?1 -
Sometimes I think that TypeScript is like a poor developer's Haskell. I thought "Isn't this supposed to support functional programming?" and searched for a way to do currying or partial application, and only found hackish solutions :/ Then again, maybe I don't know Haskell well enough to make a proper judgment.1
-
This SwiftUI is the best thing since sliced bread. It makes my development time faster and the clients happier. There are some weird things that can get frustrating, but I like where this entire paradigm shift is going.
Why was I so hesitant to adapt to newer techs? I became stagnant for the last 3-5 years. I will rise again.4 -
Backend wise
After a year and a half of working with what i love (nodejs microservices and bit of python) I have to update my php skills and refresh my memory with latest Laravel 😕 (I used it as an authentication/authorisation and REST backend for a react native app early 2016 and did not touch it since)
Passive Job hunting sux and yes PHP ain't my thing anymore 😔 i mean i have next to 6-8 years exp in it but given the choice... 😒
I used to love it (so many good memory with cakephp 😌🙄it teached me a lot early in my carrer) before I discover functional programming paradigm and got deep understanding of JS -
According to a report from ZDNet: IBM's new toolkit give developers easier access to Fully Homomorphic Encryption (FHE) which is a technology with promise for a number of security use cases. In case you do not know about FHE, you can take a look at My Quora Answer (https://qr.ae/pNKR2p).
"While the technology holds great potential, it does require a significant shift in the security paradigm," the report adds. "Typically, inside the business logic of an application, data remains decrypted, [Flavio Bergamaschi, FHE pioneer and IBM Researcher] explained. But with the implementation of FHE, that's no longer the case -- meaning some functions and operations will change."
The toolkit is available on GitHub for MacOS and iOS and it will soon be available for Linux and Android. -
Creating a language that takes the immediate feedback and clean design from Eve language and an functional paradigm like Haskell or Purescript1
-
Design in Motion: Real-Time Rendering's Impact on Architecture
Architecture, a discipline that once relied heavily on blueprints, models, and lengthy render times, has undergone a revolutionary transformation in recent years. The advent of real-time rendering technology has fundamentally altered the way architects visualize, present, and interact with their designs. This paradigm shift has not only enhanced the creative process but has also empowered architects to make more informed decisions and create immersive experiences for clients and stakeholders.
Real-time rendering, a technological marvel that harnesses the power of high-performance graphics hardware and advanced software algorithms, allows architects to generate photorealistic visualizations of their designs in a matter of milliseconds. Gone are the days of waiting hours or even days for a single rendering to complete. This acceleration in rendering time has not only expedited the design process but has also encouraged architects to explore multiple design iterations rapidly.
One of the most significant impacts of real-time rendering on architecture is the ability to visualize a design in various lighting conditions and environmental settings. Architects can now instantly switch between daytime and nighttime lighting scenarios, experiment with different materials, and observe how their designs respond to different seasons or weather conditions. This level of dynamic visualization offers insights into how a building's appearance and functionality evolve throughout the day, contributing to more holistic and thoughtful design solutions.
Moreover, real-time rendering has transformed client presentations. Architectural concepts can now be communicated with unprecedented clarity and realism. Clients can virtually walk through spaces, observing intricate details, exploring different angles, and even experiencing the play of light and shadow in real-time. This immersive experience fosters a deeper understanding of the design intent, enabling clients to provide more targeted feedback and make informed decisions.
The impact of real-time rendering on collaboration within architectural teams cannot be overstated. Traditionally, architects and designers would need to wait for a rendering to complete before discussing design changes or improvements. With real-time rendering, team members can make adjustments on the fly, observing the immediate effects of their decisions. This seamless collaboration not only enhances efficiency but also encourages interdisciplinary collaboration as architects, engineers, and other stakeholders can work together in real-time to refine designs.
The integration of virtual reality (VR) and augmented reality (AR) into the architectural workflow is another transformative aspect of real-time rendering. Architects can now create VR environments that allow clients to step inside their designs and explore every nook and cranny. This not only enhances client engagement but also enables architects to identify potential design flaws or spatial issues that might not be apparent in 2D drawings. AR, on the other hand, overlays digital information onto the physical world, facilitating on-site decision-making and construction supervision.
Real-time rendering's impact extends beyond the design phase. It has proven to be a valuable tool for public engagement and community involvement in architectural projects. By creating virtual walkthroughs of proposed structures, architects can offer the public an opportunity to experience the design before construction begins. This transparency fosters a sense of ownership and allows for constructive feedback, contributing to the development of designs that resonate with the community's needs and aspirations.
The environmental implications of real-time rendering are also noteworthy. The ability to visualize designs in various environmental contexts contributes to more sustainable architecture. Architects can assess how natural light interacts with interior spaces, optimizing energy efficiency and reducing the need for artificial lighting during the day.
In conclusion, real-time rendering has ushered in a new era of architectural design, propelling the industry into a realm of dynamic visualization, immersive experiences, and enhanced collaboration. The ability to witness designs in motion, explore different lighting conditions, and interact with virtual environments has redefined how architects approach their craft. From facilitating client presentations to fostering sustainable design solutions, real-time rendering's impact on architecture is profound and multifaceted. As the technology continues to evolve, architects have an unprecedented opportunity to push the boundaries of creativity, efficiency, and sustainability in the built environment. -
In the ever-evolving landscape of business operations, efficiency stands as a cornerstone for success. However, traditional reporting methods often entail a cumbersome and time-consuming process that drains resources and stifles productivity. Enter company dashboards https://cobit-solutions.com/en/ – the dynamic solution revolutionizing the way organizations monitor and analyze data, effectively replacing tedious reporting practices with streamlined, real-time insights.
Gone are the days of painstakingly compiling data from disparate sources, only to present it in static, outdated reports. Company dashboards offer a comprehensive and interactive approach to data visualization, empowering stakeholders to access critical information at their fingertips. Whether it's sales figures, marketing metrics, or financial performance, these dashboards provide a centralized hub where data is aggregated, analyzed, and presented in a user-friendly format.
One of the key advantages of company dashboards is their ability to automate reporting processes, significantly reducing the time and effort required for manual data collection and analysis. With customizable features and intuitive design, users can effortlessly generate reports tailored to their specific needs, eliminating the need for repetitive tasks and allowing teams to focus on strategic initiatives.
Moreover, company dashboards promote transparency and collaboration within organizations by facilitating data sharing and cross-departmental communication. By granting stakeholders access to real-time insights, decision-making becomes more informed and agile, enabling swift responses to changing market dynamics and emerging opportunities.
Another noteworthy benefit of company dashboards is their scalability and adaptability to evolving business needs. Whether a startup or a multinational corporation, organizations can customize dashboards to align with their unique goals and objectives, ensuring relevance and effectiveness across different departments and functions.
Furthermore, the adoption of company dashboards fosters a data-driven culture within organizations, where decisions are driven by empirical evidence rather than intuition. By democratizing access to data and empowering employees at all levels to leverage insights, companies can foster innovation, drive performance, and gain a competitive edge in today's fast-paced business environment.
In conclusion, company dashboards represent a paradigm shift in how organizations approach reporting and data analysis. By replacing tedious and time-consuming processes with dynamic, real-time insights, these tools enable businesses to operate more efficiently, make better-informed decisions, and ultimately achieve their strategic objectives. As technology continues to advance and data becomes increasingly abundant, the role of company dashboards will only become more integral in driving success in the digital age.3 -
Here are few questions that you could expect when attending a Java interview
1 - In which programming paradigm Java 8 falls?
2 - What is MetaSpace? How does it differ from PermGen?
3 - What are functional or SAM interfaces?
4 - What are static methods in Interfaces?
5 - What are the various categories of pre-defined function interfaces?2