Comment on: Any goats got a moment to help me out with Apache (.htaccess) url rewriting?
0 14 Mar 2020 06:06 u/SpottyMatt in v/programmingComment on: Copy-left behind: Permissive MIT, Apache open-source licenses on the up as developers snub GNU's GPL
As a developer of free and open source software with an interest in seeing my work remain as free for as many people for as long as possible, I really like the GPLv3.
As an industry developer, I have seen businesses shy away from the GPL 2 & 3 d software licesnsed as such, for exactly its core raison d'être, or take steps to circumvent it. They want to be able to ensure that they retain ownership and control of their work including the ability to keep it private as much as possible for as long as possible, and the GPL is an explicit hindrance to that.
"Copyleft" takes the position that the existing copyright system is fundamentally broken and uses those copyright tools in a subversive way to try to bring about what copyleft thinks is a better world.
I happen to agree that the copyright system is fundamentally broken, and while I don't know if copyleft's utopia is exactly the one I would pick, I like it better than the alternatives offered by other mainstream licenses.
Comment on: Core Debian developer summarily banned from project for referring to a transgender person with a non-approved pronoun
Date: Wed, 26 Dec 2018 01:13:53 +0900
Comment on: Top or bottom? (WTF)
Confirming what real devs have known for years: nodejs is gay.
Comment on: SQLite introduces it's own Code of Conduct
Reading upset reactions to this CoC has been the highlight of my day so far.
Comment on: X-post: What is a 'good' programmer?
Sorry, not really... There was no magic in gaining the aptitude that I was aware of.
However, if you have the aptitude for solving problems, these books will expose you to many different types of problems that may lead to a better ability to recognize situations in which their solutions can be applied:
- operating system concepts, by Silberschatz, Galvin, Gagne
- computer systems, a programmer's perspective by Bryant, O'Hallaron
- Automata, Computability and Complexity: Theory and Applications by Elaine A. Rich.
Yes, those are three textbooks from my time in college. Trying to go through them on your own and extract something useful might be considered "hard mode."
They dive deep into the problems that need to be solved in order for computers to work and are things that most people who just program nowadays will never have to think about thanks to all the work done by those people back then.
And though I don't have a book recommendation, I would say "Git Gud" at linear algebra: there are an astonishing amount of fundamental revelations in that field, and it is very heavily relied on by programs that have to deal with objects in 3D space, such as games and modeling software.
Comment on: X-post: What is a 'good' programmer?
RvBMan nailed it, IMO; live by that creed and everybody will be clamoring to hire you.
As as software engineer, here's my more-specific take.
Glossary
Programmer, coder, developer, software engineer , there are lots of words to describe people that work in this field. while many different sources describe many different definitions to them, here is a set of definitions and analogies that I find useful: think of building a house.
Programmer / Coder
Like the electrician, plumber, or people laying concrete: they are familiar with how one particular media (programming language) works, and good at following instructions to build a thing with that medium.
But if you ask them to step outside the medium (e.g asked a plumber to lay the concrete for the foundation of the house), they will be stumped. Similarly, if you ask them to figure out where and how their medium should be used in the house (e.g. Ask a coder to design a whole program), you may not end up with the best thing.
A bad programmer cares only about meeting the requirements they were given (or maybe doesn't even care). A good programmer cares enough (and is familiar enough with things outside their area of expertise) to understand where their part fits in the whole and is proud to deliver a quality piece.
A lot of pain and frustration of the software industry comes from hiring coders at a coder's salary and expecting software engineer behavior.
Software Engineer
Like the civil engineers involved in larger construction projects, the software engineer is familiar enough with a wide array of tools, materials (programming languages) and techniques (design patterns), along with a wide array of problems in the space. This enables them to figure out an optimal solution to a given problem.
If you ask a ruby programmer to build you a solution, they may ask you what the ruby program should do, and then you're going to get a ruby program. If you ask a software engineer to build you a solution, they should ask you what you actually need, and you'll end up with a solution that most closely fits what you were able to communicate you needed.
A bad software engineer is usually a programmer that never learned the following:
- data structures and why you might use a certain one
- fundamentals of how operating systems and file systems are implemented
- fundamentals of how programming languages are implemented
- fundamentals of databases
- classic algorithms in computer science
This is like a repair shop car mechanic trying to design an engine- they know what engines are and how they work and where they go, and they think that is all that matters. But without thermodynamics and fluid dynamics and aerodynamics and materials engineering knowledge to back up all the internal components, they will really just be guessing with every choice they make and it won't be a good engine.
Architect
This word is used in the software realm, too. These people do too main things:
- Dream up problems and projects for the engineers and programmers
- design solutions to problems that require familiarity with in consideration of problem spaces that are traditionally wider than a single engineers' area of expertise.
Bad architects design silly solutions that good engineers will immediately identify as such.
Good architects design solutions that good engineers are enthusiastic about starting on.
Comment on: X-post: What is a 'good' programmer?
Great list! But… Want to go add a space so your second list actually renders as a list?
Comment on: Are there any pentesting resources: books, videos, etc anywhere that anyone could recommend?
OWASP is a wiki resource of do's, dont's, and tools for verifying dont's - I think they have introductory "course" somewhere, too... Though it is generally more of a reference than a guide.
Comment on: Programmers are confessing their coding sins to protest a broken job interview process
simple data structures and other questions.
That's the key.
Nobody needs a bubble-sort implementer. They need proof that you retain at least some of the concepts of "data structures" and "algorithms" so that they have a reasonable expectation that when you are presented with problems whose solutions will involve those things, you will have some idea of where to begin and will be able to use your time to solve the problem, instead of taking up other employees' time.
Comment on: Programmers are confessing their coding sins to protest a broken job interview process
Every time there's an article whining about whiteboard interviews or algorithm questions, I just remember how I've never interviewed anyone who was bad at whiteboarding who turned out to be a good hire, nor who was good at whiteboarding that turned out to be a bad hire.
Also when you read into such articles, usually it gets away from the merit of whiteboard questions to "I promise I can do good work even though I can't satisfactorily answer your interview questions."
Ok, buddy. Accept that you are not what the company is looking for. Nobody owes you a job.
The discrimination angle is new, though.
Comment on: How many of you can still read your own code you created years ago?
Many years ago, no, for the same reason - why oh why did I do that and what was I thinking!?
But somewhere just a few years ago, I can look back and I do understand what I was trying to do, and how, and why.
I think that indicates improvement!
Comment on: Stupid question about github and merging two branches.
What's wrong with
git checkout branch1
git merge branch2
?
If you want to play it safe, try
git checkout branch1
git checkout -b trymerge
git merge branch2
Comment on: For the love of God, is there a modern VCS besides TFS, mercurial, and git (mainly git, fuck git)?
Yes, and I regret it took me so long to start using it to make my life easier and better.
Comment on: For the love of God, is there a modern VCS besides TFS, mercurial, and git (mainly git, fuck git)?
Yeah, I hated git too - piece of garbage software never did what I wanted - until I learned how to use it.
Comment on: Will being a programmer become a near minimum wage occupation?
This. I've got an analogy:
| Construction Job | Software Job | Task | Construction Replacement | Software Replacement |
|---|---|---|---|---|
| Day laborers | Programmer | Execute someone else's plan for realizing someone else's design | Dumb Robot | genetic algorithms |
| Civil Engineer | Software Engineer | Design a plan for realizing someone else's design | Rudimentary AI | (same) |
| Architect | (Software) Architect | Synthesize/Design a new thing | our AI overlords | (same ) |
The replacement of unskilled labor with automation is already underway in the construction industry, and will soon begin in earnest in the software industry. So far there does not appear to be any indication that AI is incapable of reaching the point where it can synthesize and design new systems from scratch, rather than just "figure out the best way to fulfill the given criteria (Day laborer)" or "given components with known parameters, create the optimal system (Civil Engineer)." When that happens, humans that want software built will not need to hire other humans. This will probably either lead us to a post-scarcity society (at least temporarily) since "we" will have the ability to automate everything in the physical world, and to automate the creation of systems to automate it, or a permanent two-class society where almost everybody is irrelevant and poor, except for the few from whom the robots accept input.
I think there's a great chance of the latter.
Comment on: 400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?
Ugh.
Tabs for indentation, spaces for alignment. Anything else is inconsiderate and inflexible. It's not hard, people.
Comment on: Stackoverflow needs to be circumvented. rant + ramble
My company strongly encouraged us all to make Stack Overflow careers pages... Which was hilarious, because most of us didn't have a Stack Overflow account previously, and so had no user submitted content to go with our careers page...
Coupled with their harsh attitude towards new users, we basically just created a ghost town for our company.
Comment on: Stackoverflow needs to be circumvented. rant + ramble
I tried to join once, thinking I would maybe be able to answer some questions in my area of expertise. I was disappointed to discover that new users could not really do anything.
Comment on: Agile, Unit tests and rapid release cycle is pure evil.
How do you feel about making "nightly" or "snapshot" builds publicly available?
Often times, the general public provides a much larger-than-otherwise-feasible user base who is willing to explore real user flows for free.
Comment on: Agile, Unit tests and rapid release cycle is pure evil.
never nailing down your product requirements when you're building the backend of your system.
Hi I've been trying to get a team to do this for seven months now. They want me to write documentation for their backend. They want me to produce tooling for other developers against the backend. They want me to help other developers use the backend. They don't have an API, documentation, a contract, or even a codified design for the backend.
Now, I just agree that it is a good idea to do the things they want me to do, and say that I'll be able to give them a delivery date, as soon as they publish their documentation.
But this isn't really related to the OP, because there is no methodology on this team, least of all agile.
Your comment just hit close to home and I wanted to vent.
Comment on: xmake: The Automatic Cross-platform Build Tool is released
It is similar to cmake, automake, premake, but more convenient and easy to use.
Comment on: Why can't programmers... Program?
This Enterprise-Grade FizzBuzz solution is good for chuckle.
Comment on: Why can't programmers... Program?
IMO a lot of the really "good" CS programs are in the middle of this, because you learn some theory and some programming.
I may have to disagree with this. Give me the math side any day of the week. Someone who can handle that absolutely has the mental faculties to learn to produce code in whatever language I need.
...Unless you are also assuming but did not expressly state the distinction between "learn to program in language X" and "learn to program. "
"Learn to program in language X" is, in my opinion and experience, a useless education to have if it's the only thing you have. This kind of person is what I would call a "programmer," and lacks a deeper understanding of what they're doing and why they're doing it. This is fine if you're outsourcing a very specific task, but as a team member they won't be able to synthesize any solutions and they'll probably write crappy, messy code that's really just technical debt with some indentation.
Someone who has "learned to program" in the general case is what I would call a "software engineer," and will have an understanding of variously languages, the differences between them and why those differences are there and how and when to leverage those differences. They will design solutions before banging out code and will be able to think introspectively about the code they're banging out.
Tying this back, someone who has a grounding in the mathematical side of computer science almost certainly has all the tools they need to figure out how to implement a solution in any language, even if they have no prior experience with that language or that problem - because the people that aren't capable of learning will bitch out of the math and theory side of CS and just go learn a language.
My CS education leaned more towards the theory side (though I bitched out of the pure math options), and there was only one course offered that actually "taught a language." That course was by far the least informative and most useless course... It's like learning the same painting techniques with a slightly different brush. Yes, it's technically different, But if you have to reteach somebody how to paint for every single different brush, I got news for you: they're not gonna be a good artist. A painter ( that like, rolls paint the side of houses and does nothing else with paint), sure. And the world does need people like that... Just not on my dev team.
Comment on: Why can't programmers... Program?
My team has been trying to hire 3 software engineers for 6 months now.
Nowadays, recruiting is generally pretty good not getting people who literally can't write any code to the on-site interview phase... But I wouldn't have believed it until I lived it.
Comment on: Looking for a text editor or IDE
I am a C programmer
Comment on: What constitutes 'coding'?
Can confirm. Source: am developer.
Comment on: Remember GitTorrent, the distributed answer to a centralized Github? It now appears dead in the water.
My company has recently started hitting this (specifically with puppet), too. Around 2:00pm each day we hit the throttle and our puppet stops working.
This triggers alerts...
Comment on: Apollo 11 source code
Thank you for sharing.
Comment on: OpenSSH and the dangers of unused code
Thank you for sharing.
Comment on: GitHub's new far-left code of conduct explicitly says "we will not act on reverse racism' or 'reverse sexism'"
Is todogroup.org also GitHub.com? Am I missing something?
He wants the URL rewrite for search engine optimization, probably. So the pretty site.com/anyaction/anyview URLs can be indexed and the contextual information in the URL retained.