@NostraDavid@programming.dev cover
@NostraDavid@programming.dev avatar

NostraDavid

@NostraDavid@programming.dev

This profile is from a federated server and may be incomplete. View on remote instance

NostraDavid ,
@NostraDavid@programming.dev avatar

Here's what I remember from Haskell (around 2018):

I love the language, but hate the tooling.

Used it for Uni (did a minor where I learned Haskell, recursion, parsing and regex - probably the most information dense part of school I've ever had. Half a year of minor also burned me out, so I never went for my masters; I'm OK with my Bachelors :D ), but never felt like picking it back up.

NostraDavid ,
@NostraDavid@programming.dev avatar

Oh wow, looks like the Haskell devs have been hauling ass! Nice!

I remember the language server being a thing already, but it was in some alpha stage back then. Good to know it's usable now! :D

What're some of the dumbest things you've done to yourself in Linux?

I'm working on a some materials for a class wherein I'll be teaching some young, wide-eyed Windows nerds about Linux and we're including a section we're calling "foot guns". Basically it's ways you might shoot yourself in the foot while meddling with your newfound Linux powers....

NostraDavid ,
@NostraDavid@programming.dev avatar

https://en.wikipedia.org/wiki/Serial_port

Because there's going to be kids around here who have never seen this port (other than maybe on a Point Of Sale (POS) system?)

NostraDavid ,
@NostraDavid@programming.dev avatar

I hope you can install Firefox, because The Googs is pushing for Manifest v3, which means no more functional adblock.

Linux or bust, babyyyyyy

NostraDavid ,
@NostraDavid@programming.dev avatar

That box story right below the original message is hilarious! 😂 It's always good to bring up happy memories after someone passed away. Good way to mourn, IMO.

NostraDavid ,
@NostraDavid@programming.dev avatar

Stroustrup to congress: "You expect me to talk?"
Congress: "No, Mr Stroustup, we expect your language to DIE!"

NostraDavid ,
@NostraDavid@programming.dev avatar

Interesting read, but does it beat JPEGMini? Yes, it's a paid product (not that I've paid, ☠🏴 yarr), but it does what it needs to do, and it does it well.

NostraDavid ,
@NostraDavid@programming.dev avatar

For Keepass users: KeepassXC can read your keepass file just fine, but KeepassXC can also run on Linux, whereas Keepass runs only on Windows.

NostraDavid ,
@NostraDavid@programming.dev avatar

a free forum

"Oh great, I'll have to create another fucking account" - me, already having some 300 accounts in my key-vault...

NostraDavid ,
@NostraDavid@programming.dev avatar

It was my replacement of Skype, which was leaning hard into its enshittification around that time.

NostraDavid ,
@NostraDavid@programming.dev avatar

It's LTSC (Long Term Service Channel) nowadays - It's the LTS version of Windows 10. Fewer updates, more stability of your OS in general. It's neat!

No Windows Store by default, but it's possible to install that separate, should you really need it.

NostraDavid ,
@NostraDavid@programming.dev avatar

That reminded me of TinyXP - a modified version of Windows XP to be like some 100MB install, instead of the typical 2GB of default bloat.

Good shit.

NostraDavid ,
@NostraDavid@programming.dev avatar

Ooooh, there's also nLite, if you wanted to make a custom version for yourself!

Those were fun times!

NostraDavid ,
@NostraDavid@programming.dev avatar

I've been using git for some three years now - never used Cherrypick (not consciously, anyway).

NostraDavid ,
@NostraDavid@programming.dev avatar

Just take on fewer points per sprint, if you can't make it every time? Scrum is about becoming predictable, not being the absolute fastest. That's been my experience, anyway. If your PO is pressuring you to take on more, you say "no", because that's your responsibility, not his.

But maybe that's just me.

NostraDavid ,
@NostraDavid@programming.dev avatar

Tell me you didn't read the article, without telling me you didn't read the article.

First year CS student currently on vacations looking for programming course to follow.

Hi, I'm a first year CS student and this 3 month period of vacations I want to follow a good free course on programming. If it's possible, I also want to learn how is the process in which a code written in a text editor can become an executable with it's GUI in the operating system (currently using Linux), because I really have...

NostraDavid ,
@NostraDavid@programming.dev avatar

Read through the HTML5 spec if you want to do anything frontend related. Yes, it can be boring at times, but using a TTS extension for your browser helps a lot.

It'll teach you which HTML5 tags exist, which attributes exist for each tag, which tag goes within which tag, etc. Very helpful if you want to actually learn an up-to-date HTML5.

It will provide a very good fundamental knowledge before you start learning whatever popular JS framework exists in a few years.

NostraDavid ,
@NostraDavid@programming.dev avatar

You really need to know C to be able to read that code - If I only knew Python or Java I'd be hella lost too.

Here are 20 reasons why frameworks make us lousy programmers ( chat-to.dev )

It is not accurate to claim that frameworks automatically make programmers bad. In fact, frameworks are powerful tools that can accelerate development, promote best practices, and facilitate code maintenance. However, it can be argued that overly relying on frameworks without understanding the underlying principles of...

NostraDavid ,
@NostraDavid@programming.dev avatar

frameworks are powerful tools that can accelerate development, promote best practices, and facilitate code maintenance.

Citation needed.

NostraDavid , (edited )
@NostraDavid@programming.dev avatar

I don’t, mostly because I watched Asmongold talk about it, and now I feel weird playing with a female character online.

Though singleplayer I don’t feel any problems: Lara Croft, Rynn, Chell, Rayne, Jade - it’s all fine.

Maybe it’s just for customizable characters?

NostraDavid , (edited )
@NostraDavid@programming.dev avatar

Have too low IQ? Yeah sure, I guess.

Be slower at it than the norm? Absolutely.

I only learned Algebra by learning programming and through that I learned how to think abstractly (abstract just mean “hiding details” - think of how a child draws a car. You can’t tell it’s colour, brand, model, etc, yet you can tell it’s a car, even though all those details are hidden). Once I got that, I was able to follow videos from MIT that taught me more of the maths, giving me a theoretic foundation for programming. Now I’m doing an Algorithm course (also MIT) and feel like an “actual programmer” (because I felt like a “fake programmer” before that - though that still sometimes returns). After that I intend to learn more about SQL because I’m painfully lacking in that regard.

Anyway, I’ve been at it since 2005 when I was a 20-something kid, and there’s always something new to learn.

FYI: I made a dependency graph of a bunch of freely available MIT courses, left is a dependency for stuff on the right: thaumatorium.com/articles/mit-courses/

NostraDavid ,
@NostraDavid@programming.dev avatar

so… vscode? you can install an extention for remote connections (made by MS)

NostraDavid ,
@NostraDavid@programming.dev avatar

Quickly edit code on a local or remote machine with the same editor that powers VSCode.

so it’s vscode, but not. you can just install an extention to get remote abilities.

NostraDavid ,
@NostraDavid@programming.dev avatar

Wezterm or death. I would have chosen Alacritty, if pasting in Vim wasn’t broken.

NostraDavid ,
@NostraDavid@programming.dev avatar

Linux (because Unix was originally created for programmers), and C because so many other languages derive from it.

Learn the language (types, functions, how to set up a project, etc), then learn the library (you can use the man pages from Linux).

You can use this knowledge for Python, as Python uses the library too, under the hood.

NostraDavid ,
@NostraDavid@programming.dev avatar

If someone flies the “software engineer” banner seriously, I expect them to have some theoretic knowledge besides the practical one. They would know different programming paradigms (procedural, OOP, FP), know about programming patterns, layers, UML, and at least a programming language or 4 (3 superficial, 1 in-depth).

A software developer can be any random code-monkey picked up from the street that is self-taught and/or had a boot camp of sorts. Nothing wrong with being self-taught or boot camps, as SDs need to eat, but it lacks a certain level or rigor I would expect from a SE.

If both had a certain amount of experience the SD would mostly catch up to the SE, in practice. Not sure if on theoretic knowledge too, but that depends.

NostraDavid ,
@NostraDavid@programming.dev avatar

Any hardware that’s abandoned needs to be forced to release the source of any needed software - the latest version.

We’d need a range of available licences, as to prevent any bullshit “you’re only allowed to read this source” license.

This is going to suck for Apple, but it’s going to be great for people who pay for some expensive microscope that’s not supported any more.

There’s probably a lot of legal nonsense that may make this impossible in practice, but I’d love to see this happen.

I wrote a program for my boss. How legal is to to write the program again and make it FOSS?

I told my boss I had an idea for a program that could improve efficiency across much of the business, and he let me build it on company time. In the long term, he wanted to be able to sell it to other companies. However, the program never got implemented due to personnel mismanagement, and I’d rather be able to post it on my...

NostraDavid ,
@NostraDavid@programming.dev avatar

Even worse: Depending on (local or national) law, it may be the company’s property, even if written in personal time. Especially if the code is in competition with your work.

Yes, it’s ass-backwards, but that’s how it is in some places.

As a beginner, how should I go about learning difficult concepts?

I’m trying to learn programming and something I struggle with the most is trying to separate code mentally into chunks where I can think through the problem. I’m not really sure how to describe it other than when I read a function to determine what it does then go to the next part of the code I’ve already forgotten how the...

NostraDavid ,
@NostraDavid@programming.dev avatar

Yes, I too used to struggle with this.


Debugging

Learn how to debug. For me, it’s a lifesaver for me to be able to step through some code to figure out what it actually does, instead of me trying to read the code to figure out what it may do. Yes, I do this for my own code too, because we tend to make assumptions, and I want to confirm those, always.

That means learning how to setup your IDE of choice - I presume you use vscode, so you’ll then have to google for “vscode debugging”. Maybe you’ll have to install some addons to add the support, probably setup some launch.json in a local .vscode folder. It all depends on your language of choice.


Learn how to test. This goes great with debugging. I write code in Python, so I end up creating src/ and tests/ folders. src/ for my actual code, and tests/ for my tests. I can use either pytest on the terminal, or just the vscode test addons to run tests.

Anyway, my tests end up being something like this:

src/my_app/main.py or something, with src/my_app/__init__.py existing to turn that folder into a module:


<span style="font-weight:bold;color:#a71d5d;">def </span><span style="font-weight:bold;color:#323232;">main</span><span style="color:#323232;">():
</span><span style="color:#323232;">    </span><span style="font-style:italic;color:#969896;"># some code I want to run
</span>

Then in tests/test_main.py (mirroring the src/ folder; adding test_ makes the file findable for pytest, and I call it main to make it easier to link to the main code):


<span style="font-weight:bold;color:#a71d5d;">from </span><span style="color:#323232;">my_app </span><span style="font-weight:bold;color:#a71d5d;">import </span><span style="color:#323232;">main
</span><span style="color:#323232;">
</span><span style="font-weight:bold;color:#a71d5d;">def </span><span style="font-weight:bold;color:#323232;">test_main</span><span style="color:#323232;">():
</span><span style="color:#323232;">    main()
</span>

This is how I always start off with - just a simple piece of code that does a thing, and a test with almost the same name as the function I’m trying to test. I can now add a breakpoint inside test_main and run the test within vscode, which means I have a way of hooking into the main function.


Think about the process of your application

Think about how to cut up the steps to create your application into smaller and smaller steps. Whenever something feels insurmountable, I’ll just have to stop in my tracks and mentally cut up a task into smaller and smaller steps, until I feel comfortable to take some steps.

I’m a data engineer, which means I tend to write code to ‘ingest’ data (which means, grab it from source A and put it into target B (where B is some centralized location to store all raw data).

So the main task is:

  1. Write ingestion

I then have to figure out “what is the source”, because that dictates how I grab the data (do I have to loop over all folders in an SFTP server? Is there a state file that makes my life easier? Do I use an API instead?)

  1. Write ingestion
    1. figure out what the source is
    2. Is there an SFTP state file? is it an API?
    3. Do I need a username/password? Some API key?

I then start writing a small piece of code that connects to the source, or just grabs some random data to show the connection works.

So now I can grab some data. Is that data too large to ingest all at once? If a file is super large, I may not be able to hold it into data, which means using a buffer. And how many files are there to download? Should I batch those?

  1. Write ingestion
    1. figure out what the source is | SFTP
    2. Is there an SFTP state file? is it an API? | there is a state file
    3. Do I need a username/password? Some API key? | usename/password
    4. How big are the files?
    5. How many files are there?

and this is how I slowly grow my applications from an idea “ingest all data from some source” into something that can actually run.

Now, I do have some experience and know that filesize and filecount are important to take into account, but that’s something I learned along the way.

My first applications just loaded whole files into memory (a bad idea if your memory limit is 4 GB, and I’m trying to load multiple 1GB sized files into memory 😆), and taking local state (which files have I already downloaded) and external state (which one have updated or been added?) into account, etc.

Anyway, you’re already on the right path: You already know a weak point, and you’re smart enough to know your limits and ask for help when you’re stuck. That’s one of the fastest ways to grow as a programmer.

NostraDavid ,
@NostraDavid@programming.dev avatar

Summed up as

T H E E N E R G Y T RA N S I T I O N

Not that that means anything to people outside the industry (spoiler: it means our energy networks need upgrading to accommodate all those solar panels in the network, and all that generated energy needs to be tracked, which it’s not as of today, because only a handful of locations used to generate energy, which we didn’t need to track)

I’m just a data engineer, but that shit is pretty fascinating in and of itself!

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • All magazines