Emerald_Knight's recent activity

  1. Comment on Flawed Algorithms Are Grading Millions of Students’ Essays in ~tech

    Emerald_Knight
    Link Parent
    A solid example of this is the time image recognition software flagged black people as gorillas. The training data used failed to account for race, so the machine learning algorithm failed to...

    A solid example of this is the time image recognition software flagged black people as gorillas. The training data used failed to account for race, so the machine learning algorithm failed to account for skin color. Human beings create the training data, so naturally that data is subject to human bias.

    6 votes
  2. Comment on I'm trying to get a programming job without a degree. Got any tips? in ~comp

    Emerald_Knight
    Link
    Shit, you'll do fine in a junior position. I had an intern with only nine months of coding experience. I spent maybe a few months mentoring him. He was incredibly bright, but had very little...

    Shit, you'll do fine in a junior position.

    I had an intern with only nine months of coding experience. I spent maybe a few months mentoring him. He was incredibly bright, but had very little experience to exhibit in a resume. He got a job in a QA position at another company we directed him to directly after the internship ended, with nothing more than a letter of recommendation to aid him. He's currently a junior developer with them now and apparently kicking ass.

    You have quite a bit more experience to work with, having actually had a prior QA analyst position and clearly showing enough passion in your work to pursue side projects and learn different technologies. Furthermore, it's generally well-accepted that a junior dev's code simply isn't going to be that great--variable names will be shit, comments will be lacking or unhelpful, etc.--and that frequent code reviews are going to be a part of the process for getting you up to speed with best practices before setting you loose onto more critical pieces of the software you'll be working on. Seeing as your code doesn't appear to be littered with single-letter variable names or other such abominations, you should be able to get up to the company's quality standards fairly quickly.

    But really, as long as you're competent, can keep your ego in check, know your own limitations, and won't have any issues fitting into the company culture (typically this is code for "you're not a massive dickhead"), you should be fine. Just be a decent person, have some humility, and be an eager and willing learner. You seem pretty capable on all of those fronts :)

    6 votes
  3. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    You're right, those kinds of resources often seem pretty difficult to nail down unless you're looking for something specific. Security is very much an oft-overlooked component of software and not...

    You're right, those kinds of resources often seem pretty difficult to nail down unless you're looking for something specific. Security is very much an oft-overlooked component of software and not nearly enough effort is made to make people aware of how to spot even the most basic of security holes.

    Most security boils down to taking ordinary functionality of some system and tricking it to do something its creator didn't intend to happen. I think if I were to do a topic (or series of topics) on security, I'd look into the most common types of vulnerabilities and give a detailed breakdown of how they work. For example, I'd likely focus on something like a breakdown of SQL injection or making the mistake of leaving unit testing frameworks in your webroot directory on a web server.

    Tightening your security is really primarily a matter of shifting your mindset from "what do I want this code to do?" to "how could someone make this code do something I don't want it to?", so I think most of my effort would be in trying to facilitate that transition in mindset.

    I'm glad to hear that my webhook topic was instructive. Security in general is certainly a worthwhile subject to write more about. I'll be keeping it under consideration as well :)

    2 votes
  4. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    Well, I should hope so. You're going to have a hard time understanding programming paradigms if you've yet to transcend the subject of assigning x the value 5 ;) All joking aside, I do my best to...

    In my experience everything written on functional programming is aimed at people who are programmers already.

    Well, I should hope so. You're going to have a hard time understanding programming paradigms if you've yet to transcend the subject of assigning x the value 5 ;)

    All joking aside, I do my best to gear my topics toward the appropriate audiences and I like to use concrete examples to make them as accessible as possible. Functional programming itself is a simple enough subject that it should be accessible even to beginners, as long as they've at least dabbled in a bit of programming to understand some of the core concepts.

    Worst-case scenario, if something still ends up being confusing, then there's a comments section for that. I'll be more than happy to clarify anything that needs clarifying.

    1 vote
  5. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    I've never been particularly good with formal logic, so I would have to leave that to someone else. Functional programming, however, is fairly straightforward and something I could easily write...

    I've never been particularly good with formal logic, so I would have to leave that to someone else. Functional programming, however, is fairly straightforward and something I could easily write something up on. It also lends itself nicely to lots of small example code snippets for comparing and contrasting to the more common object oriented paradigms.

    More importantly, your choice of paradigm has a significant impact on how you choose to architect your projects. It's absolutely within the realm of code quality subjects!

    I'll definitely put this one into consideration :)

    2 votes
  6. Comment on Twitch Suspends Popular Leftist Streamer After Controversial 9/11 Comments in ~misc

    Emerald_Knight
    Link Parent
    Just a small formatting suggestion, but using > [your text here] instead of enclosing in triple backticks might be more readable (it should get rid of the horizontal scrolling). Not strictly...

    Just a small formatting suggestion, but using > [your text here] instead of enclosing in triple backticks might be more readable (it should get rid of the horizontal scrolling). Not strictly necessary, just something to consider :)

    41 votes
  7. Comment on What purpose does Tildes serve that Reddit does not? in ~tildes

    Emerald_Knight
    Link Parent
    Haha, that's alright. It's probably a conditioned response from the toxic state of social media. It takes a while to readjust.

    Haha, that's alright. It's probably a conditioned response from the toxic state of social media. It takes a while to readjust.

    3 votes
  8. Comment on What purpose does Tildes serve that Reddit does not? in ~tildes

    Emerald_Knight
    Link Parent
    This is precisely why Tildes doesn't aggregate vote totals. There are no badges and no trophies, and the only "score" to speak of is the vote for a particular comment or topic. Votes are even...

    This is precisely why Tildes doesn't aggregate vote totals. There are no badges and no trophies, and the only "score" to speak of is the vote for a particular comment or topic. Votes are even specifically engineered to be something you have to seek out (comment votes being located at the very bottom without being eye-catching, and topic votes being on the far right away from the rest of the information like title and tags), rather than being something that your eyes are immediately drawn to. The entire philosophy in Tildes' design is to minimize the user's focus on scoring and keep their attention primarily on the content itself.

    The effects of incentives to raise scores are fairly well-known and something that Deimos has paid particular attention to for that very reason :)

    8 votes
  9. Comment on When in your life did you feel the most broken? in ~talk

    Emerald_Knight
    Link
    When? When I was in early high school. Probably around the age of 14-16. Did something happen around then? No. It wasn't about anything that happened around then. It was the culmination of...

    When? When I was in early high school. Probably around the age of 14-16. Did something happen around then? No. It wasn't about anything that happened around then. It was the culmination of everything that had happened in my life up until then, the isolation I felt, how all of those feelings festered and destroyed any sense of self that I had, and the lack of a support network to help me deal with it all.

    If I were to sit here and write about my experiences in detail, I could fill an autobiography's worth just for that brief period in my life. I could write about the time the only childhood friend I'd ever made in the fourth grade had chosen to pretend that he didn't know me so that I wouldn't ruin his image with the new friends he found. I could write about the time I watched my mom and my cousins' mom fight not 5 ft. away from me when I couldn't have been more than 10 years old, the pummeling and screaming it entailed, and how difficult it was to physically stand on my own two feet with how badly I was shaking. I could write about the time I had to force myself into the locked bathroom to stop my mom from cutting her own wrists. I could write about the undignified feeling of knowing that my family had to steal bags of donated clothes left outside of donation centers late in the evening in hopes of finding clothes to wear and that we had to pick up any can we saw to collect every nickle possible for gas money. I could write about a great many things, but I'll settle for the brief glimpse above.

    I'm a very fortunate person. In the end, I was able to find a support network when I needed it most, found a career that I love, and have managed to find a level of stability that I once thought impossible. I'm still discovering the many ways in which my experiences have shaped who I am, and fixing the parts of myself that have been damaged over the years. It's taken a long time, but I've found purpose in my life and I'm finally starting to learn to love and take care of myself.

    I've gotta say, though, hitting the peak of all of that in high school was kind of a dick move from the universe. I'll take "things I'd like to never do again" for $800, Alex!

    12 votes
  10. Comment on What purpose does Tildes serve that Reddit does not? in ~tildes

    Emerald_Knight
    Link
    The other answers already touch on the high-level ideas, so I'm going to focus on giving you a concrete piece of anecdotal experience. On reddit, I've always been hesitant to reply to a comment....

    The other answers already touch on the high-level ideas, so I'm going to focus on giving you a concrete piece of anecdotal experience.

    On reddit, I've always been hesitant to reply to a comment. You can spend a lot of time thoughtfully considering how your comment will be interpreted and carefully phrasing it so that you can effectively communicate your thoughts, but in the end there will almost inevitably be at least one asshole who comes along and insults you or tears apart your comment because they disagree with you. Hell, just a couple of days ago I tried commenting on reddit again with a new account. Big mistake. Almost immediately some armchair "intellectual" suggested that I hadn't thought the subject through at all. Sure, the comment gained 50 karma, but that rude, condescending, toxic comment apparently had a decent amount of support from other readers.

    On top of that, it's almost impossible to find quality discussions in the comments. Find any article and you'll find puns, platitudes, soundbites, and dismissive and defeatist tones everywhere. You can go into the comments hoping to find one person--just one single person--who might have brought up a small but important point on the subject at hand, but you'll have to dig through a sea of comments just to find it if it exists at all. I can't even begin to tell you how many times I've thought "did I really have to scroll this far down to find this comment?"

    I've never had that problem with Tildes. The mechanics on this site make even fairly popular "noise" comments less likely to be seen, because the "noise" tag drops the comment right down to the bottom with the rest of the "noise". I can find the content that actually has value with very little effort. People still get heated, but the culture surrounding this community is one that discourages toxicity and punishes those who refuse to cease its spread, keeping the overall level of toxicity to a minimum and creating a positive feedback loop that further encourages people to continue being civil and engaged.

    For me, reddit feels like being in a large building full of grouchy people who you're afraid to accidentally bump into because you just know they'll start screaming at you, whereas Tildes feels like a warm home where sometimes you'll get in an argument with your family/roommates, but still want to have a good meal together when everything has simmered down. That purpose has been more than enough to keep me sticking around.

    12 votes
  11. Comment on Some obscure C features in ~comp

    Emerald_Knight
    Link
    A lot of those don't seem to be "features" so much as they are "language quirks". No one experienced with C finds it odd that you can take int *my_int_array = malloc(n * sizeof(int)) and do...

    A lot of those don't seem to be "features" so much as they are "language quirks". No one experienced with C finds it odd that you can take int *my_int_array = malloc(n * sizeof(int)) and do my_int_array++, after all, despite the idea of incrementing an array being absurd in most (all?) higher-level languages.

    These little quirks make a lot more sense when you realize that under the hood, C is largely just performing operations on memory addresses. Therefore incrementing an array is really just incrementing the memory address value, placing you at the next position in memory i.e. where the next array element is located. (I know, this really over-simplified, please don't crucify me.)

    It's akin to how PHP has the language quirk of treating all arrays as ordered maps, even flat numerically-indexed arrays. It's not that it's a feature, it's just the way the language was built. Speaking of PHP, its switch syntax validation is more strict than C's, which I find hilarious. Take that, C elitists!

    4 votes
  12. Comment on Do you collect questions? What are some questions on your list? in ~talk

    Emerald_Knight
    Link Parent
    Consider this from another perspective: replace "my dog" with another person and you'll have that same philosophical question. If you want to be cynical, then you could say that all relationships...

    Does my dog love me because I care for his needs or because he just, you know, loves me?

    Consider this from another perspective: replace "my dog" with another person and you'll have that same philosophical question.

    If you want to be cynical, then you could say that all relationships exist because that relationship satisfies some kind of need for both of the individuals involved. Often this need is one of companionship, but may encompass any number of other needs (e.g. intimacy in a romantic relationship). Relationships thus exist because they're mutually beneficial arrangements. That doesn't make the relationship any less special, though. Once that initial relationship is established, you begin to bond with that other person and you establish trust with one another. You begin to let your guard down because you no longer feel the need to keep it up.

    The same is true of your relationship with a pet. Sure, the relationship starts with you providing it with food and shelter, but a dog doesn't just love you because you take care of its needs, it loves you because you prove over the course of many actions that you're someone it can trust. It will expose the most vulnerable parts of its body to you--its back, its belly, its neck--because it knows you won't do anything to harm it. This is much easier to see with rescue dogs, which start off being much more apprehensive around people until that trust is established.

    A little food for thought :)


    My personally philosophy, though, is this: all animals naturally desire companionship, and satisfying each others' needs is just the natural fuel that helps build trust between them.

    6 votes
  13. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    Haha, alright, recurring.infrequent seems sensible enough to me. I'll be sure to add that in! And the "Coding Resources" section is a good idea for sure. Pressure to produce more isn't as much of...

    Haha, alright, recurring.infrequent seems sensible enough to me. I'll be sure to add that in!

    And the "Coding Resources" section is a good idea for sure. Pressure to produce more isn't as much of an issue for me as feeling as though I'm cluttering a page that is meant to be for the group as a whole. With a section dedicated to indexing content, that concern is pretty much alleviated.

    1 vote
  14. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    I probably won't add a recurring tag simply because I don't have anything regularly scheduled, unless a cheeky recurring.whenever_the_fuck_it_happens is acceptable ;) I'll go with your suggestion...

    I probably won't add a recurring tag simply because I don't have anything regularly scheduled, unless a cheeky recurring.whenever_the_fuck_it_happens is acceptable ;)

    I'll go with your suggestion of code_quality_tips, though. I'll have that in shortly. Thanks for the suggestion!

    1 vote
  15. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    I'm not entirely sure yet what the unique or recurring components should be such that it'll be consistent and sensible while also remaining unambiguous, but I'll give the tag name some thought for...

    I'm not entirely sure yet what the unique or recurring components should be such that it'll be consistent and sensible while also remaining unambiguous, but I'll give the tag name some thought for sure. I'll try to dig around to see if there are some existing conventions that I can work off of.

    As for the wiki entry, feel free to either add or not add my content. If you elect not to, I'll just wait to see what you have entered there and I'll do my best to emulate the style and conventions that are laid out there.

    1 vote
  16. Comment on Topic Requests: What subject would you like to see covered in more depth? in ~comp

    Emerald_Knight
    Link Parent
    You know, I'd never actually given any thought to the idea that people might want to look at my past submissions. I suppose I really should consider making that easier, huh? What do you think is...

    You know, I'd never actually given any thought to the idea that people might want to look at my past submissions. I suppose I really should consider making that easier, huh? What do you think is the best option for aggregating those topics? I don't mind putting in the little bit of effort :)

    1 vote
  17. Topic Requests: What subject would you like to see covered in more depth?

    For those who haven't seen my essay-length posts in the past, I occasionally like to delve into explaining different programming concepts, particularly with regards to making your code easier to...

    For those who haven't seen my essay-length posts in the past, I occasionally like to delve into explaining different programming concepts, particularly with regards to making your code easier to manage. Sometimes this has to do with how you structure you code and projects, and at others it has to do with how you think about the problems you're solving. I've been in the mood to write up on yet another programming subject, but nothing in particular has stood out to me lately during the course of my work.

    With that in mind, I figured I would take a different approach and see if anyone here had some specific requests for content they would like to see. Requests from all levels of experience are welcome!

    (And for those who are itching to do a write-up on any of the requests that appear here, feel free to call dibs!)


    Edit

    For those who want to take a dive into my previous submissions, you can now find them in the new wiki entry created by @cfabbro or directly via the programming.code_quality_tips tag here.

    8 votes
  18. Comment on Refactoring to Multiple Exit Points in ~comp

    Emerald_Knight
    Link
    I touched back on this subject back in a topic I submitted a while ago, but you might be interested in looking into the subject of cyclomatic complexity. It ties in directly with the concept of...

    I touched back on this subject back in a topic I submitted a while ago, but you might be interested in looking into the subject of cyclomatic complexity. It ties in directly with the concept of using multiple exit points. Code quality assessments will always have a component of subjectivity to them based on personal preferences, but the concept of cyclomatic complexity lends some additional objectivity to the mix and allows you to "prove" that the refactor really is an improvement.

    It's a handy tool to have in your arsenal :)

    2 votes
  19. Comment on How Instagram uses static analysis like linting and automated refactoring to help manage their multi-million-line Python codebase in ~comp

    Emerald_Knight
    Link Parent
    Hell, I've been managing a production back-end system that I've built from the ground up a little over a year ago and it has more than 36k lines of application code and more than 28k lines of unit...

    Hell, I've been managing a production back-end system that I've built from the ground up a little over a year ago and it has more than 36k lines of application code and more than 28k lines of unit tests, and that's after continually paying down on technical debt and cutting down on the number of lines of code needed. Without paying down that technical debt or caring for long-term maintainability, focusing instead on rapid feature development, I could easily have a code base exceeding 100k lines of code. That's just the back-end code for our API. That's not accounting for our app development or website. That's not accounting for configuration, deployment scripts, or third-party libraries.

    That back-end is going to be steadily growing, too. There will be several/many third-party service integrations that will inevitably be needed in the future. There will be many more task automations to implement. There will be many more reports and analytics that will need to be generated. There will be predictive algorithms that will need to be added in place. There are so many components that are going to be built that this back-end alone will easily become a monolith of its own. It will become so complex and require so much additional functionality that it will inevitably need to be broken apart into several different services just to keep it manageable and scalable, and being broken apart into different services will inevitably mean identical code being present in those different services that will need to be maintained in parallel.

    Instagram having several million lines of code is not even the tiniest bit surprising.

    6 votes
  20. Comment on Software remains insecure because the existence of insecure software has so far helped society far more than it has harmed it in ~comp

    Emerald_Knight
    Link
    An interesting take, but I'd say it's a rather naive one. Software remains insecure due to a combination of a few different reasons: People don't know what the fuck they're doing. Human beings are...

    An interesting take, but I'd say it's a rather naive one.

    Software remains insecure due to a combination of a few different reasons:

    1. People don't know what the fuck they're doing. Human beings are naturally stupid creatures. We have to spend twelve years of our lives attaining what is considered a base level of education and then four or more years of specialized training on top of that for entry-level knowledge into a particular field of work. We're constantly reinventing the wheel, so it's only natural that we end up building the wrong wheel several times before we get it right.
    2. Security isn't baked into the process. People are allowed to create whatever code they want, so it's only natural that these misshapen wheels that can't even rotate correctly without busting an axle end up driving entire businesses on pure momentum alone. Frameworks help tremendously with this, but even frameworks often suffer from supporting features that are inherently insecure.
    3. Money is king. If it costs more to fix the problem than to pay for the damages caused by it, business don't give a shit. They have to choose between pushing out new features that users are hounding them for and fixing a problem that they rarely ever need to think about and causes very little damage to their bottom line.

    In short, good security only comes about when you have the experience to implement it, the policy to enforce it, and the resources to maintain it. And even when you have all of those, problems will still slip through the cracks because humans are flawed and will either forget something or not notice the zero-day exploit staring them in the face. After all, even businesses who stake their entire reputation and business models on their security are subject to vulnerabilities, despite having entire teams of experts dedicated to the subject.

    7 votes