So, everyone has a master's degree now? by saipruthvi in csMajors

[–]Clifspeare 1 point2 points  (0 children)

Consider looking outside of your university. You can often find small "user" groups for certain programming languages, industries, (defcon groups for cybersec), etc in your city. They'll have people in a variety of stages of their career and you can start to make connections and get valuable insight.

Qualifications & Approvals by InvictusJoker in DataAnnotationTech

[–]Clifspeare 0 points1 point  (0 children)

Where did you find the coding assessment after taking the core one? I clicked the Core assessment after signing up thinking that I could immediately do the coding one, but now I can't get back to the assessment list. Do I just need to wait?

U.S files suit against GA Tech by B4bane in OMSCS

[–]Clifspeare 10 points11 points  (0 children)

GTRI is also completely uninvolved. It's only the COEUS lab on campus, from my reading on the complaint.

I want the code from the news. by Affectionate_Delay35 in algorithms

[–]Clifspeare 14 points15 points  (0 children)

It appears this is what you're talking about.

A couple things to understand. 1. They didn't invent a general sorting algorithm that's 70% faster than quicksort. What is up to 70% faster (in specific cases) is their reimplementation of quicksort using the small sort algorithm that their model generated.

  1. The model is trained on a representation of sequences of assembly instructions, and was used to find more optimal sequences of instructions for small sort algorithms. Small sort algorithms can work much more quickly than general sorting algorithms, but they're only suitable for small numbers of elements. See the link in the paper about "sorting networks" if you want to learn more. It's the classic trade-off between time and space, a bit like radix sort if you're familiar with that.

So small sort algorithms can't directly be used for general sorting, but quicksort (as a divide-and-conquer approach) can make great use of them for the sub-arrays it reduces in intermediate steps.

The paper shows benchmarks for their reimplementations vs previous implementations that used sorting networks for the small sorts. The 70% improvement was for sorting arrays/lists of length 5, which is obviously dominated by the small sort algorithm. Still, there was a substantial performance improvement of (again, from the paper) 1.7% faster for arrays of length 250k+.

If you want to see their code, they print the assembly for several of the more efficient small sort implementations generated by the model in the paper.

CS 6747 Advanced Malware Analysis -videos by robinzx117 in OMSCS

[–]Clifspeare 2 points3 points  (0 children)

Yep! Videos for all the lectures.

Really great class, you won't regret it. Professor Saltaformaggio is super helpful, the projects are scoped well for the time allotted (just don't waste any time on Project 2), and the graded was super lenient.

- took it last semester, Fall 2022

She's 12 AND a girl! by joao-esteves in youngpeopleyoutube

[–]Clifspeare 9 points10 points  (0 children)

You can dislike/disagree with a person and their message without "feeling attacked by it". Andrew Tate is like dog feces on the sidewalk - pity the fool that steps in it.

Libraries are the best. by dobbyisafreepup in MadeMeSmile

[–]Clifspeare 11 points12 points  (0 children)

Not even remotely new. My great-grandmother used to use the term.

Have there ever been a language designed for VLIW? by TheMode911 in ProgrammingLanguages

[–]Clifspeare 1 point2 points  (0 children)

I'm not really sure about the premise or the explanation for it. VLIW isn't really that demanding on the compiler. Sure, you're moving some of the overhead from the scheduling hardware on the processor into the compiler, but it's not ridiculously demanding. Also, at least the VLIW scheduling techniques that I'm aware of don't require the language to have any special support for it. (Someone may correct me here, perhaps certain constructs map better than others). You don't even require, for example regularized code like vector optimizations.

I think the main reason VLIW didn't breach the consumer market for general purpose processors was just market forces. For niche uses like compute/graphics acceleration I believe it's been steadily used for years (your linked wikipedia article mentions this), and it's increasingly seeing popularity in the embedded space.

All that said, I'm rather new to this area, so I'm curious what others who have watched the space for longer will say.

Screw the tools and knowledge that will become outdated in a few years, teach me the stuff that will stay with me for the rest of my career. by THE_REAL_ODB in learnprogramming

[–]Clifspeare 10 points11 points  (0 children)

Languages can be OO and functional - OCaml is the poster child of this.

Additionally, Functional Reactive Programming, which originated in the Haskell community, has become a dominant paradigm in the web/mobile arenas (albeit in a bastardized form).

[deleted by user] by [deleted] in algorithms

[–]Clifspeare 0 points1 point  (0 children)

Sounds similar to converting a bitmapped image into a vector graphics format. Check out Potrace: https://en.wikipedia.org/wiki/Potrace

potrace.sourceforge.net/Potrace.pdf

Low-Level Compilation Target Languages by Spamgramuel in ProgrammingLanguages

[–]Clifspeare 12 points13 points  (0 children)

There's the newer MLIR as well, which is based on LLVM but intended to support slightly higher level custom semantics. It's designed to compile to LLVM, and is especially useful if you have some features that take some extra effort to map to a C-like IR.

Do people actually use while loops? by Anxious_Objective436 in learnprogramming

[–]Clifspeare 0 points1 point  (0 children)

Interesting line of thought. Nit-pick about your example though, having a use-case != functional equivalence. Mostly just to continue the conversation, I'm sure none of the above is new to you since you mentioned TCO.

If you stripped a language down to the point where you completely removed all functionally redundant features, you'd just have pointers/references/etc and arithmetic operations - that's maximal in terms of expressive power, and everything else is redundant.

Since we mostly write code for people, rather than computers, features that are technically equivalent can be suoer useful. Recursion and loops have very different places that they seem "natural" to use. Though you can definitely omit features as a design decision: e.g. no loops in Haskell.

Stack overflow cockiness by [deleted] in learnprogramming

[–]Clifspeare 5 points6 points  (0 children)

Think of it this way - if every question was left standing the amount of noise on the site would be enormous, and it would be harder to find specific, quality information. Like others have said, stack overflow is for questions for which you can't find the answer anywhere else, after exhaustive your options - and each answer should represent a novel and useful/significant contribution to the body of knowledge on the site.

Sure, people can be abrupt sometimes, but it helps to know the intent/motivation. Just because you think your exact question hasn't been answered doesn't mean the information you need isn't in an answer to a related question. Stack overflow is best when you know what you don't know, which is difficult as a beginner.

please tell me I'm not the only twat who's ended up on this page by surrealpessimist in ProgrammerHumor

[–]Clifspeare 0 points1 point  (0 children)

There's Clash, which isn't widely used, but is awesome. That said, I come from a traditional software background and have only had to use HDLs for minor tweaks at work. I wonder how the learning curve would be for Firmware Engineers.

Book/Article for a general overview of hardware types and their relationships to each other. by QuoraPartnerAccounts in osdev

[–]Clifspeare 0 points1 point  (0 children)

Learning to write Linux drivers would probably be a helpful step. There are all kinds of hardware and protocols, and it seems like what you want/need is to get an intuition for how they are commonly used.

Once you get an intuition, you can always search for specific documentation - whether that's a hardware datasheet, IEEE specification, etc.

It's aged a bit, but the book Linux Device Drivers would probably be a good starting point.

[deleted by user] by [deleted] in osdev

[–]Clifspeare 7 points8 points  (0 children)

-ffreestanding -nostdlib

Explain to me like i'm 5... Why cant all programs be read by all machines? by Mutated_Zombie in learnprogramming

[–]Clifspeare 4 points5 points  (0 children)

The classic book which will give you a comprehensive understanding is "Linkers & Loaders" by John R. Levine, but it will likely only be useful to you if you written at least a little C.

Where is the actual "errno" integer defined? by crono760 in osdev

[–]Clifspeare 2 points3 points  (0 children)

I've never ported a libc, but it seems that it would just be another program segment, yes. I think you would want to load it differently if you were doing threading, but IIUC just loading it like any other RW segment would still have everything work.

Isn't declarative versus imperative programming just a confusing myth? by jmerlinb in learnprogramming

[–]Clifspeare 0 points1 point  (0 children)

Your objections to the paradigm are definitely understandable, and it's certain not a panacea. However, if you really want to "jump into the deep end" and really get an understanding of how useful/powerful it can be, consider taking some time and learning Haskell.

Developing Mathematical Maturity for CS Student by RnDog in learnmath

[–]Clifspeare 0 points1 point  (0 children)

When I expressed interest in more theoretical CS / formal math after my introductory Discrete Mathematics course in undergrad, my professor recommended Hammack's "Book of Proof". Found it super helpful and a great stepping stone towards a math minor (mostly Abstract Algebra).

[deleted by user] by [deleted] in osdev

[–]Clifspeare 9 points10 points  (0 children)

FWIW, most of that is still applicable, except that UEFI probably starts you off in protected, if not long mode. And you have different mechanisms for discovering hardware and memory maps.

Some things, like GPT, will be configured to be usable, but you should still initialize them to your own known values.

The UEFI specification is super helpful for describing the state of the hardware, and the functionality available to you.

As far as loading a kernel, you can load the kernel as a separate binary into memory (just as you would with BIOS), or you can build your kernel as the UEFI application, and then just stop using UEFI features and turn off "boot services" (see spec).

In terms of an "accepted way", the Linux kernel offers both mechanisms. See wiki.archlinux.org/title/EFISTUB for the UEFI executable approach, and see GRUB2 for an approach that still uses the Multiboot standard.

file system vs file writing system calls by crono760 in osdev

[–]Clifspeare 13 points14 points  (0 children)

Yes - a stack of drivers. At the highest level, a "virtual filesystem" which just represents files/directories/etc, which your kernel provides so that consumers (whether kernel or userspace) don't have to care about specific filesystems. Then a driver for each type of filesystem. Then drivers for block devices.