Emerald_Knight's recent activity

  1. Comment on What are you coding today? in ~comp

    Emerald_Knight Link
    Work-related code for managing warehouse logistics across multiple warehouses. Unfortunately the existing architecture never considered some of the particular use cases that came up, so it's not...

    Work-related code for managing warehouse logistics across multiple warehouses. Unfortunately the existing architecture never considered some of the particular use cases that came up, so it's not really as robust as I would've hoped. An overhaul of some of our core components is required to ensure that all of our use cases can continue to be satisfied, but such an overhaul is inherently risky and will require likely weeks of work to get right and test thoroughly enough to be confident about. In the meantime, I'm just putting a short-term solution in place that acts as a bit of a stepping stone and pushes that overhaul back a bit.

    I'm hoping our development roadmap will gradually introduce the required changes a bit at a time so that the individual components can be fully tested on an individual basis rather than throwing in a full overhaul all at once. Or, at the very least, I hope we get access to our pending office space before I have to touch all of that so that I can at least properly whiteboard everything out to guide my thought processes.

  2. 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
  3. 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
  4. Comment on Minecraft's "Super Duper Graphics Pack" has been cancelled in ~games

    Emerald_Knight Link Parent
    A big one is the aforementioned quasi-connectivity. This allowed for, for example, two vertically-stacked pistons (with the piston ends facing out to any side), a solid block on top of them, and...

    A big one is the aforementioned quasi-connectivity. This allowed for, for example, two vertically-stacked pistons (with the piston ends facing out to any side), a solid block on top of them, and some powered redstone on top, and would end up powering both of the pistons. The engine rework, however, made it so that only the one piston would be activated. Thus a redstone contraption that would ordinarily work with redstone built on top of it in the Java version could require needing to build redstone both on top of and below it in the Windows 10 version. A redstone contraption that would've ordinarily worked in the Java version with top and bottom circuitry due to quasi-connectivity might end up not working at all in the Windows 10 version because central components would no longer be reached.

    Basic logic gates aren't affected as far as I'm aware, but I'd be willing to bet that some of the designs rely pretty heavily on the existence of quasi-connectivity in order to maintain simplicity and reduced space requirements.

    5 votes
  5. Comment on What are some lifehacks you would recommend? in ~life

    Emerald_Knight Link Parent
    To my knowledge, you need to root your device. I once had a need to modify the hosts file because I was maintaining a website that would route you to separate customer sections of the website...

    To my knowledge, you need to root your device.

    I once had a need to modify the hosts file because I was maintaining a website that would route you to separate customer sections of the website based on the subdomain specified. The problem with a local build, of course, is that you don't have DNS pointing to it and you can't add a subdomain to an IP address, so you needed to modify your hosts file if you wanted to access different areas of the website. In trying to find out how to modify the hosts file on my Android device, it turned out that the task wasn't possible without rooting it first. This makes sense from a traditional Linux perspective, too--usually the hosts file is only writable by root. You wouldn't want to allow just any user to be able to make changes to that file, after all.

    There are some potential DNS-related workarounds such as custom DNS servers or a VPN app that supports additional DNS configuration, but that's probably about it.

    2 votes
  6. Comment on What are some lifehacks you would recommend? in ~life

    Emerald_Knight Link Parent
    That's an excellent point. It's always important to ensure that nothing sneaks up on you. There's a golden rule when it comes to automating a task: automate, but verify. There should always be a...

    That's an excellent point. It's always important to ensure that nothing sneaks up on you. There's a golden rule when it comes to automating a task: automate, but verify. There should always be a human somewhere in the process to ensure that the results are correct, and more often than not, that human will be you.

    To be fair, though, you already have to pay your bills and you should be verifying your finances in the first place, anyway. The automatic payments simply free up your time and energy so you can focus more on the verification part of the process and less on the actual paying of the bills, ensuring that you only have to take an action when something is amiss.

    Personally, I receive all of my bill statements via email. Whenever a statement is ready, I just review it real quick and, assuming everything looks correct, I simply exit my inbox and go back to whatever I was doing. I don't have to log into several different websites, manually click through multiple pages to make payments for each of them, and hope that I haven't somehow missed one--I just open a few emails and I'm done.

    Granted, if you know you won't look at your inbox and see electronic statements or go out of your way to review your finances on a monthly basis, then paying manually may be a better option for you. That being said, you can still add in some other small automations to free up your head space, such as adding recurring payment reminders to your online calendar or keeping a spreadsheet that lists the various services you're paying for and little pieces of payment information like the payment amount and due dates.

    The type of automation that works best for you will likely vary from person to person, and being aware of potential pitfalls like the one you brought up is part of making that judgement call. Regardless, having that automation in place is essential for making your life and finances easier to manage.

    5 votes
  7. Comment on Extended Validation Certificates are (Really, Really) Dead in ~comp

    Emerald_Knight Link
    This isn't really surprising, honestly. Even barring the issues outlined in the article, EV certs may be something that "advanced" users would look for, but would otherwise be largely ignored by...

    This isn't really surprising, honestly. Even barring the issues outlined in the article, EV certs may be something that "advanced" users would look for, but would otherwise be largely ignored by your average user. You can't contend with user apathy, and quite frankly, your average user just doesn't care about that little green lock or why it's there.

    If you want to improve security for your users, then it must be baked into the process itself. This is why we have minimum password length requirements and a requirement to avoid obvious passwords, otherwise users would just use "a" or "password" as their password. How we do this effectively for ensuring that users aren't directed toward phishing sites isn't something I have an answer for, but it's a problem that will need to be solved if we want a true solution that does what EV certs were intended to do.

    Security that isn't enforced is no security at all. Plain and simple.

    1 vote
  8. Comment on Verizon to sell Tumblr to WordPress owner Automattic in ~tech

    Emerald_Knight Link Parent
    Honestly, I wouldn't be surprised if it was a combination. It was probably already lacking profitability and "Pornmaggedon" could've exacerbated the problem by removing a substantial part of their...

    Honestly, I wouldn't be surprised if it was a combination. It was probably already lacking profitability and "Pornmaggedon" could've exacerbated the problem by removing a substantial part of their user base. They probably tried to make the platform more appealing to advertisers, but ended up having their strategy backfire spectacularly. I've only done a cursory look into the subject, but it seems like a likely enough explanation.

    12 votes
  9. Comment on What are some lifehacks you would recommend? in ~life

    Emerald_Knight Link
    Automate the little things. This is a lot easier if you're a programmer, but you don't need to be a programmer to automate things. Do you have bills that you pay every month? See if there are any...

    Automate the little things.

    This is a lot easier if you're a programmer, but you don't need to be a programmer to automate things. Do you have bills that you pay every month? See if there are any that you can set up automatic recurring payments with. Do you have appointments you need to remember? Set them up in an online calendar with multiple reminders before and on the date of the appointment so you can prepare ahead of time. Even creating small habits is a form of automation. Place your wallet and keys in the same place every day and you'll have a much harder time losing or forgetting to grab either of them.

    We're human beings. We're flawed creatures with a limited capacity to remember all of the things we need to remember. Because of this, human error caused by our flawed memory will inevitably--yes, inevitably--result in problems. The more we have to remember, the more likely it is that we'll forget something. By automating as much as we can, we free up our precious, small amounts of memory to focus on remembering the things we most need to remember when it's most critical. It's far easier, for example, to remember to drop your kid off at daycare if you're not focusing all of your mental energy on trying to remember that important task you were supposed to work on at work this week.

    Do yourself a huge favor and take a little bit of time to set things up to make your daily life just a little bit easier.

    19 votes
  10. Comment on Update that just went through is causing some issues on mobile in ~tildes

    Emerald_Knight Link Parent
    Man, that was fast. I barely even had time to make a top-level comment. Fix looks good on my end :)

    Man, that was fast. I barely even had time to make a top-level comment.

    Fix looks good on my end :)

    1 vote
  11. Comment on Minecraft's "Super Duper Graphics Pack" has been cancelled in ~games

    Emerald_Knight Link Parent
    Modding support and community aren't the only reasons (although they're admittedly probably the biggest reasons). In rewriting the engine, they also changed how redstone behaves, so the wealth of...

    Modding support and community aren't the only reasons (although they're admittedly probably the biggest reasons). In rewriting the engine, they also changed how redstone behaves, so the wealth of knowledge of redstone contraptions over the years has been made largely irrelevant to the non-Java versions. Even if we discount that, the changes at least make redstone more of a chore to work with. For serious redstone builders, those changes are considered unacceptable.

    Personally, I found that one of the biggest changes that made redstone a headache to work with in the Windows 10 version was the removal of quasi-connectivity. Contraptions that were once incredibly simple to make in the Java version suddenly required 10x as much redstone to build (not exaggerating here). It just wasn't worth it to me to put in so much extra effort to make small contraptions work correctly.

    10 votes
  12. Comment on Project Glasswing: Adobe's new transparent display in ~tech

    Emerald_Knight Link Parent
    I doubt that standard office-style monitor use cases are the intention with this sort of technology. I see this having applications in a primarily commercial space, e.g. storefront windows that...

    I doubt that standard office-style monitor use cases are the intention with this sort of technology. I see this having applications in a primarily commercial space, e.g. storefront windows that also act as functional displays for advertising and branding purposes. If you make them interactive, too, then you could have a kiosk-style setup where icons are presented over certain products in the display window and tapping on the icon would show information about the product, reviews, etc. You wouldn't have to have a strict separation between display space and functional space--the two could be very nicely integrated together. Certain consumer products might also benefit, e.g. HUD displays for car windshields to show you GPS routing information, but overall these transparent displays really won't be for your standard computing needs.

    So, yeah, you're right, they'll only be used for niche use cases, but it's those niche use cases that are likely the intended target in the first place :)

    5 votes
  13. Comment on Plex Makes Piracy Just Another Streaming Service in ~tech

    Emerald_Knight Link Parent
    The problem usually isn't the streaming service, but licensing issues. It's not uncommon now for only some content to be licensed out while the rest is walled off behind either a separate...

    The problem usually isn't the streaming service, but licensing issues. It's not uncommon now for only some content to be licensed out while the rest is walled off behind either a separate streaming service or a DVD purchase.

    Streaming is becoming increasingly more fragmented and used as a marketing vehicle. It's gradually becoming cable 2.0 and it's terrible. Unsurprisingly, people are once again sailing the high seas to cut out the twenty different middlemen.

    16 votes
  14. Comment on Opinions on “grammar nazis”? in ~talk

    Emerald_Knight Link
    I think that, as with most things, the answer is "it depends". For Basic Corrections Some corrections are generally pretty minor. By "minor" I mean that the mistakes don't significantly impact the...

    I think that, as with most things, the answer is "it depends".


    For Basic Corrections

    Some corrections are generally pretty minor. By "minor" I mean that the mistakes don't significantly impact the message, usually in the form of typos or incorrect word usage. No matter what kind of correction you give, it's noise, plain and simple.

    That being said, there's low-quality noise and high-quality noise. If you're just being a pedantic asshat and reply with "you're**", then it's low quality and doesn't belong on Tildes, period. On the other hand, an informative, non-condescending, well-articulated explanation of the difference between "affect" and "effect" can be arguably valuable.


    For Major Corrections

    On the flip side, some corrections are major. Sometimes the word being used causes the message to be the complete opposite of what is intended, or there's no punctuation and reading the comment is nothing less than a colossal headache, or the comment is just generally written so poorly that very few people can actually figure out what the message actually is. In these cases, suggested corrections are highly valuable and an absolute necessity in order to maintain quality discussions

    Sometimes it's not even that the grammar is technically bad, but that the message isn't being communicated effectively and arguments over the unintended message end up being the result (this has happened many times here on Tildes). In this case, a clarifying correction--that is, not a correction in grammar but a correction in message--is an absolute necessity to get the thread back on track.


    In all cases, I feel like a PM is generally the inappropriate course of action. It may or may not be a cultural thing, but PMs feel far more confrontational. Everyone expects the possibility of seeing some sort of public reply--favorable or otherwise--to their comments, but there's a long-standing trend of people abusing PMs for the more aggressive and confrontational responses that they want to keep out of public view to avoid backlash. This immediately sets a negative tone, which is what we want to avoid.

    2 votes
  15. Comment on The bizarre, true story of Metal Gear Solid’s English translation in ~games

    Emerald_Knight Link
    Great article. It really touches on the messiness of direct translations of scripts. Cultural differences are significant. There are certain undertones to dialogue that you'll miss if you don't...

    Great article. It really touches on the messiness of direct translations of scripts.

    Cultural differences are significant. There are certain undertones to dialogue that you'll miss if you don't have the cultural background of the original lines in mind. Why did X get pissed off at Y when Y used X's first name? A direct translation of "don't act familiar with me" isn't going to make any sense to a Western audience, but a localized translation of "we're not on a first-name basis" will more accurately translate the tone of the dialogue.

    Ideally there would be two separate translations--the localized and the direct--so as to provide the option for faithfulness to tone and faithfulness to the original, but these translations are expensive, both in the cost of the translation itself and in the cost of storage for the translated lines.

    If you have to choose either one or the other, you can't really fault the translator for opting for localization. You can't really win 100% no matter which choice you make, so you have to make the choice that gives you the bigger win over the other, and localization just happens to be that choice.

    3 votes
  16. Comment on Suggestion: Hide my logged-in username while browsing in ~tildes

    Emerald_Knight Link Parent
    Interestingly enough, even trying to modify an existing rule wasn't working. I was expecting inline styles to fail, so I was sure to explicitly avoid them. I tried everything to no avail last...

    Interestingly enough, even trying to modify an existing rule wasn't working. I was expecting inline styles to fail, so I was sure to explicitly avoid them. I tried everything to no avail last night, so it seemed like it just wasn't working anymore. I'm not entirely sure what was causing the problem, but it's cleared up on my end now.

    Oh well. Now that I was able to work with the CSS again, @stickman can use the CSS-based solution instead of the JavaScript-based solution. Should be a lot nicer :)

    4 votes
  17. Comment on Suggestion: Hide my logged-in username while browsing in ~tildes

    Emerald_Knight Link Parent
    Alright, I just took another look at this. Now it's suddenly working again. For some reason it wasn't working last night. Must've been a weird bug or something.

    Alright, I just took another look at this. Now it's suddenly working again. For some reason it wasn't working last night. Must've been a weird bug or something.

    3 votes
  18. Comment on Suggestion: Hide my logged-in username while browsing in ~tildes

    Emerald_Knight Link Parent
    I'll be sure to review again when I get home after my work day is over. I was definitely seeing CSP errors in the Firefox console, however.

    I'll be sure to review again when I get home after my work day is over. I was definitely seeing CSP errors in the Firefox console, however.

    4 votes
  19. Comment on Suggestion: Hide my logged-in username while browsing in ~tildes

    Emerald_Knight Link Parent
    For me, yes, the CSP was an issue. Even using !important on styling wasn't allowing overrides to go through. Attempting inline styling changes via the DOM inspector wasn't working, either....

    For me, yes, the CSP was an issue. Even using !important on styling wasn't allowing overrides to go through. Attempting inline styling changes via the DOM inspector wasn't working, either.

    Possibly a regression?

    2 votes
  20. Comment on Suggestion: Hide my logged-in username while browsing in ~tildes

    Emerald_Knight (edited ) Link
    Edit It looks like I was experiencing some kind of weird bug last night that went away sometime after I posted this. My statement that CSS-based extensions aren't working was just my extensions...

    Edit

    It looks like I was experiencing some kind of weird bug last night that went away sometime after I posted this. My statement that CSS-based extensions aren't working was just my extensions not working for whatever reason.

    With that in mind, a much better solution exists. By using an extension such as Stylus or Tildes Extended (see how to install styles), you can use the following CSS instead of the original JavaScript:

    /* Hide the username. */
    #site-header .logged-in-user-info {
        display: none;
    }
    
    /* Hide comment ownership indication. */
    body .is-comment-mine > .comment-itself {
        border-left-color: inherit;
        border-left: initial;
        margin-left: inherit;
    }
    

    This isn't really a feature that would be suitable as an inclusion to Tildes itself. That being said, you could absolutely use an extension for this. Unfortunately it doesn't look like Stylus or other CSS-based extensions are working right now, so JavaScript will have to be used instead. Tampermonkey is a fairly popular option that works for both Chrome and Firefox. A quick and dirty script that should work for this might look something like this:

    // ==UserScript==
    // @name         Hide Tildes Username
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  Hides the username from being displayed on Tildes.
    // @author       Emerald_Knight
    // @match        https://tildes.net/*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        Array.prototype.slice.call(document.getElementsByClassName('logged-in-user-info')).forEach((elem) => {
            elem.style.display = 'none';
        });
    })();
    

    Do note that your username will still display while the page is loading, however.

    11 votes