• 0 Posts
  • 49 Comments
Joined 1 year ago
cake
Cake day: September 10th, 2023

help-circle

  • I’ve heard of Kotlin in the context of Android apps, but never actually used or learned it. I did one mobile app dev project with Java in Android Studio, but never had any formal classes on it either and just learned as I went (the result was shit, but we got a decent grade for being able to evaluate the difficulties and shortcomings and point out learnings).



  • I attended two different Bachelor’s courses, one with a very technical (2016-2018) and one with a more high level focus (2018-2023). The first did have a class where we learned how to go from logic gates to a full ALU as well as some actual EE classes, but I didn’t go far enough or memorise the list of classes to remember whether Assembly would have become a thing. We learned programming with first Processing, then C and C++.

    The second had C as an elective course, and that was as technical and low-level as it ever got.



  • Retraining people to use new tools on a corporate scale is an immense endeavour, probably a huge cost given the dip in productivity, and that’s assuming there is an equivalent Linux tool in the first place.

    For some people, learning new stuff isn’t as easy, and they just don’t have the investment to do so when all they want is to go about their day. The expectation that people shouldn’t be so reluctant to learn something new ignores the inflexibility that long-established habits bring in some demographics.

    Conversely, while that demographic is locked into using Windows by virtue of the cost-benefit function to learning something new just too… not be using Windows anymore? is just unfavourable, others will have to cater to them.

    Technology is advancing way faster these days, and it’s unfair to demand that everyone keep up with it. Hence, while recommending Linux is a good thing, being an elitist about it (as the people my previous commend alluded to tend to be) is unproductive.








  • The fun comes when there is no actual data model. All in all, I’d say being familiar with the data model is about 60% of my job. 35% is building queries and query scripts for people who need regular exports. 5% is running after other people’s fuckups.

    Strap in, because this is a ride.

    There is a raw database from a decade-and-a-half old app, which I get to access through a layer of views that does some joining, but not all, with absolutely no documentation on how the original database is structured or where things are pulled from or what anything refers to. No data dictionary, no list or map of key relations, some objects are mapped in two different views, no semantic naming of columns.

    If you want to want to query order part delegations by who they’re assigned to (Recipient in the app) you need to use the foreign key RefAssignmentUnit. The “Assignment” unit that did the delegation is just RefUnit. If you have orders that were created by a salesperson on behalf of a customer, OrderingPerson (also a foreign key, but not named Ref-) is the customer, while OrderingPerson2 is the salesperson that entered the order. Don’t confuse that with Creator, which for orders created through the web form is usually a technical user, unless the salesperson is one of the veterans that use the direct app in which case it’ll be the salesperson while OrderingPerson2 is null.

    Also, we have many-to-many relationships that are mapped through reference tables… whose columns are named object and reference for each and every one. Have fun trying to memorize which refers to which so you don’t need to look it up every damn time.

    Create my own views to clean this up? Nope, only the third party service providers for the app can do that, and they don’t wanna. Our internal app admin (singular) can use some awkward tool to generate those views, but there’s no reverse lookup to see what a given column refers to. Also, they have no concept for what actually constitutes a good model because they’re not really familiar with the database, just with the app.

    Get my own serverless DB to create views that query the original DB? No can do, you’d need to order a whole server and that’s pricy.
    Get a cloud DB? Sure, but it will be managed by the cloud team and if you want to have or edit custom views, you’ll get to create a project request. They’ll put it in the backlog and work it into some future sprint.

    Get literally any tool that allows me to efficiently create reusable data prep so I don’t have to copy & paste the base transformations needed for a given query every fucking time and if the source DB ever changes I need to update all my query scripts? If you can somehow squeeze the time to prepare a convincing pitch - a full Power Point presentation, of course - between all your tedious and redundant query preparation and script maintenance, find a management sponsor willing to hear you out and hopefully propose your request to their superiors. Best case: It becomes a whole project - alternatives will have to be considered first, implications, security, costs, and you’ll be the one having to assemble and present that information to management only to have some responsible person point out that it would actually be the remit of a different team… that also works in sprints, has a backlog and will give you no control over your prep.

    And obviously, the app provider doesn’t give us any advance notice of just what will change in the DB with the next update. We only learn that when a view breaks. The app admin can use the tool to refresh the affected views then, while I scramble to determine all the scripts that need to be updated and copy&paste the fix. If a user has been granted their own access to the database, odds are they’ll come crying to me when their modified versions of my queries break.

    There is a lot I like about my job, I acknowledge the difficulties of a historically grown system and service contracts, but the rigid and antiquated corporate culture can go take a long walk off a short pier.





  • Do you mean the individual .git repository tracking changes in a given directory? Or the remote repository server that you push your changes to and can pull other’s changes from? The first one is the fundamental requirement of using git at all, the second is where it gets less trivial.

    It’s not that the software isn’t available. Off the top of my mind, Gitlab offers their community version for free to download and host yourself. I think they even have a Docker image. All you need is to figure out how you would like to do that.

    It’s the usual question of self-hosting - where would you host it? A server at home? The cloud? Should others be able to access it? How? What about security?

    Remotes already hosted by others are just a lot more convenient. You don’t worry about the infrastructure, you just push your code. People like me might get more excited about setting up than the actual coding. It’s the bane of half my projects - gotta get that git workflow in place, think long-term, set up the “mandatory PR with tests before merge” and shit until eventually I have everything set up… and the spark of the original script I wanted to do is gone.

    If you want to focus on coding, the benefit of having a ready setup are hard to dismiss.
    On the other hand, setting up and configuring a server can be a one-time job, so if that’s worth it to you, power to you!


  • As someone on the outskirts of Data Science, probably something along the lines of “Just what the fuck does my customer actually need?”

    You can’t throw buzzwords and a poorly labeled spreadsheet at me and expect me to go deep diving into a trashheap of data to magically pull a reasonable answer. “Average” has no meaning if you don’t give me anything to average over. I can’t tell you what nobody has ever recorded anywhere, because we don’t have any telepathic interfaces (and probably would get in trouble with the worker’s council if we tried to get one).

    I’m sure there are many interesting questions to be debated in this field, but on the practical side, humans remain the greatest mystery.