Make programming great again

>(((web technologies))) used for desktop programs

How do we make programming and software engineering great again?

Other urls found in this thread:

marte.unican.es/
muen.sk/
youtube.com/watch?v=UTqZNujQOlA&t=50m00s
youtube.com/watch?v=OHZwYYW9koI&t=8m
learnvst.wordpress.com/old-site/the-build-environment/building-using-command-line-based-tools/2-building-the-again-example/
hooktube.com/watch?v=sNCqrylNY-0
twitter.com/SFWRedditImages

Focus your time on more complicated computer science tasks. Forget doing front end javascript and mobile development, that is generally an easier domain, which is why it has been inundated with the types you describe. Why not work on a kernel? Develop complex systems in neat languages like Ada, get into assembly programming, or embedded development (not to be confused with "making an app"). AI and Machine learning are hot topics, but mostly because it is retards playing around with a prebuilt library, not so many actually understand how it works. If you like mathematics, consider this area and perhaps crypto applications. There's also black hat stuff...

As a general rule, the more demanding the task is, the less retarded the community involved will be. There's plenty of options for you if you're smart. Sure there are going to be workshops for women, code 2040 / black girls code / Swift Playground etc, but these people are not going to be building control systems for aerospace applications, or say writing SSD firmware.

These types of "coding for regular people" things used to annoy me, because I would see this as an encroachment on a field I have respect for, and seeing it being opened up for the unwashed masses was of course highly vexing. Whereas before they couldn't even get past the "install language implementation step", now any faggot can download Swift Playgrounds or do some shitty Python bootcamp and call themselves a programmer!!!! Cue the autistic screeching. In the end though, it doesn't really matter, these people are mostly worthless. They'll fall into their own containment areas of perpetually "learning code" and will rarely move past consigning themselves to trawling GitHub making trivial documentation changes so they can tell their friends "I

no need to go that deep, just using c++ is enough because retards will never understand how2c++

Tryhard.

I forgot to talk about Pajeet in my post too.. To keep it short, Pajeet is an order of magnitude more competent than the bluehaired SJW "coder", but they're also dumb enough to think they can handle large complex projects. In the late 90s to early 2000s, BIG BUSINESS thought that programmers should be more like interchangeable cogs, and they seemed to have Pajeet in mind as their archetypal cog. Since Pajeet fails miserably at C++, they built languages like Java which offer a lot of hand holding constraints to help them tweak reusable boiler plate. Combined with ridiculous amounts of buzzwords many corporate morons actually thought this could work, so began outsourcing, only to find that the end result was an unintelligible mess, which of course they'd have to sell to their customers anyways.

Later on, smarter white guys decided that they could be more productive than armies of Pajeets by using languages like Ruby which while even slower than java, had a lower SLOC count and was suitable for the smaller more expensive white teams. This worked for a while and soon crap like RubyOnRails was in vogue. This had two unfortunate consequences: Programming some tasks became easier and attracted trendies, and more slow software was produced. That takes us to about 2007. Afterwhich "smart phones" came on the scene, and it only got worse. Same trend too... first the pajeets were used, and now we're seeing really shitty and slow cross platform frameworks infesting mobile devices in an attempt to increase programmer productivity.

I guess I didn't "keep it short", but oh well.

Heh, I didn't say that explicitly, but that would be interesting. An easier, more tangible goal would be to write something like an NES emulator as a hobby project.

Push the two greatest filters there are

you can't friend. it's in everyone's (((best interest))) to ensure the relatively few CIS white men in the industry that do the actual work carry everyone else's load and we (((distribute))) the wealth goy.

How? Easier said than done: by remembering that the user is the master. Everything you do in a project, every line of code you write, has to directly benefit the user.

Balance out the Four elements of the Tao: Performance (fast), Efficiency (small), Security (trustworthy) and Convenience (user-friendly). You may call this process "Craftsmanship" for brevity.

But unfortunately if you're working on a big corporate project, you can count on other people and crazy deadlines to mess up all the aforementioned Tao.

It's been done, at least twice in the open source world. MaRTE and Muen.
marte.unican.es/
muen.sk/

I'm not saying it's impossible or a bad idea, just that it's a stupid proposition for "projects that will make my /g/ Holla Forums peers think I am hardcore, unlike those silly Ruby On Rails webdevs".

This is the future we have created

HumanRetards departments are annoying, which is why you always want to go above their heads and interact with the people who'll be making the decision. While HR are an initial filter, they also wish to make their lives as easy as possible, so when a higher-up tells them to hire Mr "Autistic super user", they just go and fill out the paperwork.

How do you get noticed by the people you need to talk to? Have a portfolio of useful contributions, and attend the relevant tech meetups and conferences.

This right here. Like every other industry, get used to carrying dead weight on your back every day. So many useless fuckers will get promoted over you: diversity officers, teamwork coordinators, people who do nothing but manage you and measure your compliance to the system.

The only way to make it great again is to start your own companies and run them around the technology and a simple, lean business plan: make the customer happy & produce good products.

Everything else is 100% pozzed.

But really, Rust and Javashit are pretty good containment strategies. Much like Linux is a good containment strategy to keep retards from peeing in the BSD pool.

...

...

If you need someone to write your software, you're the cuck. It doesn't matter what license is stamped on their dick.

What's wrong with teaching children how to control their computers? Wasn't the whole point of Free Software to give users Freedom? How can you expect people to even be interested in Freedom if computers are just magic boxes that connect to Facebook to them?

FUCKING NORMIES REEEEEEEEEEEE

People that are interested in computers, will find a way to learn about computers, just as I managed to teach myself some BASIC at 10 years old. These silly programs are just to flood the market for with low quality coders to suppress wages for corporate gains. It would be one thing if these were state grants to help bright children reach their potential, but instead they're usually targeted towards women and niggers.

For example

To be honest, none of this has ever increased productivity, it's just made it a fucking mess to get things done.

>(((le))) (((scary))) (((parentheses)))
You're a fucking moron. I want you and your fellow butt-buddies to go back to whatever circlejerking shithole you came out of.

I'd pay to sit in on one of those workshops and see the quality of work.

>>>/bog/

How do you suppose black women type after they get their nails did?

I'm sure you can find some of their output on GitHub, but mocking the coding quality of black children isn't the best use of a white man's time.

I have time for short bursts of mockery between compiles.

Imagine a room full of people typing on Model Ms, except even louder and more high-pitched

Top kek

Bring back old school programming where people had respect for what they were doing and wanted higher quality, more efficient, smaller code with more features that raised the users' expectations. Everything was done for the users because they're users too. They didn't lie to you and say that crashes and lack of features was "quality" or "efficiency", they found a way to fit all that even if they had to do clever tricks behind the scenes.

Modern programmers focus too much on "fixing" things that are bad instead of creating better alternatives. Everything they see is shit and it makes them depressed and angry, and they're being told that contributing to this shit and spreading it is "better" than making their own alternative, and that makes them even more depressed and angry because they have to deal with all this broken crap.

Honestly at this point, it would be a good idea to start fresh and reinvent the wheel in most areas. OS's, different protocols, web tech, scrap all that deprecated 70's - 90's shit, and build something planned from the get go from scratch.

Anything where pointers are common, really.

Those noglets belong in the cotton fields of code, writing* excel macros for 80 hr contracts.

Some of those monstrosities are cancelled 2-3 years down the road anyways. Once a pile of shit changes hands more than once, a dev ought to have the authority, and the talent, to propose a new solution

Agreed. But the problem is that reinventing the wheel also implicates in brand new hardware, which would be stupid expansive to create from scratch. That is part of the reason nobody is doing it right now.

What about old (patent free) mainframe code? They had LPARs and security built in to CPU long before anyone using PC worried about it.

What kind of plug is that? Looks retarded.

a buttplug LOL xD
hahahAHAHAHAHAHA

You mean you want to see what ENTERPRISE QUALITY LISP would look like, as churned out by the shit stained hands of Pajeet? I assure you, it would not be a pretty sight.

Low level C 4lyfe 30 year kernel LARP pro here. We can't deploy new protocols as they can't compete with TCP due to how fucked the internet got over the last 20 years.
So many firewalls and NAT devices drop traffic that isn't TCP or UDP that any new protocol intended for a general audience has to piggyback inside one of them to work. That's why MPTCP was implemented as a hack to TCP that gracefully degrades to plain TCP rather than as a new protocol. If you are aiming for something different you're fucked as adding UDP encapsulation is going to add 8 bytes of overhead. As your protocol will likely have ACKs in the 20-40 byte range, you're looking at 20%-40% more reverse path bandwidth. Consumer ISPs have throttled upload as hard as they can without significantly throttling download (generally a 1:10 ratio) so you new protocol that requires far more upload has zero chance of competing with TCP's performance even though TCP is shit.
And so, we are here forever.

>>>/bog/

Here's my idea (and something I do when I do little personal projects):

Make sure your fucking algorithm runs well on this Pentium II

On a slow machine with a small amount of ram, shit code will immediately look like shit and be fairly easy to locate. I have an old Compaq Deskpro with dual Pentium II 450 and 512MB with blistering fast ultra-ata 66 storage. This is more than powerful enough to do any non-technical tasks (rendering something, encoding something, etc) competently so if your code runs like dogshit on it, it's because you're a fucking current year asshole.

Step 2 is to move to a slow core 2 duo machine once the major parts are done and get optimizations in for newer CPUs as well as take advantage of the newer windows 10 APIs. I've done a few small projects this way (mostly programs that will do engineering calculations and some more basic doc management tasks) and it has worked really well. First time I took a program I wrote on a core 2 and then tried to optimize the algos to speed it up on the Pentium II system, it was a pain in the ass but I gained a good 15% efficiency, found a ton of bugs the massively faster new hardware masked and cut memory usage by a factor of 3.

You would be amazed what a skilled software engineer could do in the early-mid 90s.

Gotta check them sexy sexy dubs!

*runs any decent cryptographic function on your pentium II*

Like what? Linux? That shit is a mess. We need to go back to the times when hardware was more fragmented but software wasn't. I'm sorry but if I'm on laptop X I only need the shit that'll make all the hardware in laptop X work, not laptops Y, Z, W and all their shitty friends from chinkland that get pumped out in a new version once a week. Kernel/OS devs need to focus on a fixed hardware platform like Apple does. I mean look at Sun with Solaris on SPARC and SGI with IRIX on MIPS. Those were some kickass hardware and software combinations back in the day. Even Apple shit was better before they switched to x86 and they had their own specific hardware. It's because they spent less time fucking around with maintaining a garbage pile for "compatibility" reasons and spent time on new technologies or improving existing ones. This is what needs to happen with GNU/Hurd or with a BSD project. They need to make it run on custom RISC-V machines and they need to focus on building a GUI from the ground up so that software isn't a giant tangle of shit. I shouldn't need more than 2GB of RAM and a 1GHz CPU to run an OS comfortably.

TLDR I'm tired of bloated shit that tries to be jack of all trades and master of none.

This is a fairly old thread so forgive me for bumping it. It's interesting though.

I think hobbyist electronics certainly helps, because whereas original coders had to learn correct methods and efficient algorithms to get things to run at all, today we are spoiled by desktop machines with practically unlimited resources (for most common tasks). It's very easy to pile on web framework after web framework and have no idea what's going on, or how to write performant software.

This is where affordable SBCs and microcontroller programming resources help turn the clock back. Now, faced with constrained resources, proper techniques move back to the forefront. Such programming is also quite fun, providing far more motivation into learning how things work, rather than say cut and paste web page design.

with the software side of things, yeah hobbyist electronics do push someone to learn good technique, but on the hardware side, all these arduino modules and what not completely shellac over any knowledge of how any of it works.
a catch-22 imo

I'm programming a synthesizer right now, and I make music as a hobby, so I want a dedicated machine for audio processing that can handle all of my music stuff. I'm totally willing to program my own DAW from scratch, because I only need very simple tools. Everything I've ever used is either bloated, buggy, or not my style of workflow. All I need is a tracker, sampler and synthesizer with some effects.

The thing about audio programming is that it's a very simple concept, yet most systems today make it incredibly frustrating for a beginner to get into. You shouldn't need to dig through trenches full of boilerplate and bloat in order to write to an audio buffer. SDL is the best thing I've found so far, but it's far from perfect. And now that I have some working audio code, I can port it to any system or library. It's literally a matter of making a wrapper that can fetch that buffer and write to it.

It may not be technically "correct," or efficient, but I've extended my SDL wrapper so that I can output buffers of pixels to the screen as well. While it may be a pain in the ass to write your own line drawing algorithm, it sure teaches you a lot when you implement everything from scratch. And it's perfectly fast enough to make simple 2D games with too. I've been working on a sort of cellular automata sandbox game, if you ever played powder game dan-ball.jp, it's kind of like that.

I've actually become very fond of this way of programming, where everything is just output to a buffer. For someone who does programming for multimedia, it makes everything very unified and streamlined. It's a shame that, with the advent of GPU's and modern languages, this sort of thing is going by the wayside. I think it's deprived us of an environment for experimenting and learning to program in an interactive and low-level way, where you really have to think about how everything works. If there's one way I could recommend to improve your programming skills, it would be this.

Working on this level also shows how much we still need to improve on the dev tech side of things. Modern languages have definitely gone way off course in terms of making it easier to solve problems. Take java or python, or other "paradigm" based monstrosities, riddled with superfluous keywords and built-in functionality. C might be ugly, and have lots of platform specific or undefined behavior, but at least I can understand why those design decisions might have been made. I cannot, however, understand how one could decide to design a syntax where:


I used to admire python for its terseness as a scripting language, but after using it for some assignments in school it seems completely insane to me. I actually like C a lot for the fact that it's not trying to be anything that it's not, or sticking to some dogma. At the end of the day, their is a very minimal set of syntax that you absolutely need to know, and everything else you learn pretty easily if you need to.

The actual problems I see are usually very domain specific. As an example, for my synth I've taken to using X-macro lists in order to fill out a bunch of switch statements, declarations, gather up parameters and submodule names into a contiguous array, and so on. My sandbox game also has automata rules defined using a combination of macros, initializer lists and bit-fields. Although it works, the rules of the pre-processor are quite inflexible and messy to use. I'd really like to see arbitrary compile-time code execution and meta-programming in C. It would probably solve a lot of problems and extend the usefulness of the language by a wide margin. The stuff that Jonathan Blow is doing with Jai's meta-programming is very interesting to me, though I'm not sure about the rest of the language. It seems like as people become more disillusioned with the shiny new language/library/paradigm meme, we will gradually begin to improve our existing tools, and I think that will have an impact on how we look at hardware and systems programming too. In the future, I dream that I'll basically have a bunch of specialized machines all working together with their own architectures and idiosyncrasies. A separate device for audio, synthesis, graphics, programming, etc, all reporting back to a central interface. A bit of a pipe dream, but I think it's definitely possible, and something that I'm aiming for.

Can you explain this further please?

youtube.com/watch?v=UTqZNujQOlA&t=50m00s
youtube.com/watch?v=OHZwYYW9koI&t=8m
Here are some good examples of the introspection and meta-programming Jai can do. First one demonstrates the #run directive, which runs a function as the program is compiling and inserts it's returned data into the code. Second one shows how you can basically do anything you want with this, from inspecting functions as they're compiling, retrieving function and variable names, size, etc.
Pretty easy to see how this could be extremely powerful in C. I don't know of any other language that tries to implement meta-programming like this.

I am impressed; however, at what point does this stop being programming the computer and become scripting the compiler?
The only real-world problem I can think off-hand that this solves is:

int y = character_to_int(gets()); char string[y];

If you need something on the stack, but aren't sure of its size, yeah this's helpful because you then don't have to go around alloc'ing/free'ing the variable during run-time. I am sure dude put much of his time into writing his compiler, and if its useful for him, that's really all that matters.
Regardless of my opinion, Cool find user.

As a guy who does high performance networking and VoIP, buffering is always the bottleneck in optimized code. I'm concerned that you're getting into the wrong mindset. Re GPUs, you'd be happy to know that in modern code it's almost entirely about exchanging buffers, but again, it's also absolutely critical to minimize it. The same is true with audio - if you can read the DMA pointer and work with a ringbuffer rather than the traditional 'keep two or more buffers' approach I suspect you've been drawn towards you'll have much healthier code that is easier to keep at low-latency.
This is where if I knew you in person I'd be planning an intervention. Someone put bad ideas into your head. A lot of the meta-programming 2.0 push comes from people who grew up as webdevs and don't understand things like data files and intermediate programs as they weren't using environments and tools where they were possible or natural. Eventually one of them will propose a meta-programming variant of a LL parser generator to replace what flex/bison intermediates were for and I hope in that madness you see that the entire idea of meta-programming was a mistake.

Yeah, you've got to keep in mind that Jai is designed for game dev. This guy uses a lot of compile time stuff to optimize his games. There's lots of things like that, like switching between an array of structs, versus a struct containing arrays. This has performance implications because of caching and such, and would normally be a pain to switch back and forth in C, but with Jai, it can be done at the declaration of the struct. Probably not useful to most people, it's just something he uses often enough to add to the language. I'd definitely like to see something more stripped down and simple.


All I know is that I have seen some very bad C++ that doesn't use meta programming. More importantly though, if you can't do some form of introspection to collect the names of your identifiers, you're going to have to resort to external tools and code generation, which seems a lot uglier than some simple macros. Well, I guess the other alternative is just keeping everything scattered across multiple files and making it hard to make changes. I'd be glad to know if there are alternatives though.

I think you may have misinterpreted what I was saying though. I wasn't implying that keeping separate buffers was good for performance, I was saying it was good for understanding how programs work. You're certainly right that you need to minimize use of buffers. For my audio programming, I only write to a single buffer every frame.

External tools and code generation aren't uglier than complex macros in large projects. They keep things very clean as they require nothing unrelated to the data, can be in a domain-specific language, their work is trivially cached by a proper build environment rather than have to be pointlessly re-evaluated every compile, and the data generated is potentially compatible with more than one language/tool in use by the project.
They do require a proper build environment, but programming with an improper environment is the problem to solve there.

How do you get into audio processing/programming? How do you create an echo effect or reverse an audio stream for instance? I want to use C. Where can I start?

look at the source of audacity you mong

Look into tutorials for making VST plugins.

Having some music/audio experience would be a good start, and I'd recommend you find a DAW that can do VST stuff.

An echo effect is actually a pretty simple example. You really just need a buffer of floats to write a couple of seconds of audio, and then read it a few seconds later. Basically a circular buffer. Then you just feed the output back into the input so that it echoes.

After that you can try different things. You could clear or resample the buffer when you resize it, add filters to the feedback path, and so on. Lots of things that are just manipulations of the data.

learnvst.wordpress.com/old-site/the-build-environment/building-using-command-line-based-tools/2-building-the-again-example/

This is the most succinct tutorial I've found for building a VST with gcc. He uses a tool called Scons, but there's also a makefile you could use. Once you build the default example, try making a copy of the project and messing around with processReplacing().

Microcontrollers are the one and only true power of modern programming! Every cycle, every instruction, conveyor order, not single-cycle instructions, no separate fpu, 4 mhz, only 1 kilobyte of flash memory, 128 bytes of ram (no more bloat, you fucktards)
THAT IS THE POWER
and this shit runs for eternities, until some new kid shows up and proposes "his view on the topic with his knowledge of a bloody python through a bloody arduino"

here's the link:
hooktube.com/watch?v=sNCqrylNY-0

Completely agree, for the reasons I wrote here . It's sad that SBCs have become synonymous with Arduino and Python though.

Yeah this is exactly the kind of thing I was talking about. If you wanted to get professional quality audio synthesis, you'd basically just need larger ram and few more cores to handle anti-aliasing and polyphony. It would be great if there was something like that which could just load a program and connect to a host machine for streaming audio/video.

Stop pushing this meme, it doesn't exist. Also, remove all pajeets.

>(((I))) (((unironically))) (((use))) (((the))) (((word))) ((("normies")))
>(((I))) (((am))) (((literally))) (((10))) (((years))) (((old)))

t. Jew.

Yeah, why don't you kill yourself?

If you can't handle the bantz, Holla Forums isn't for you. Go to a safe space where people that hurt your feelings are banned.

Middleschooler please leave

Just because you and a few other children who migrated from 4chan decided you like the word "normie" better than "plebeian" (which is an actual English word that has existed since before the internet existed) that doesn't make it normal or acceptable here.

Yes, it is from Latin you dolt. When did I even mention "normie"?

If you want to talk about parenthesis, at least discuss Scheme. No one wants to hear you posting about being upset about an echo meme.

Why don't you try reading this entire conversation chain from start to finish before you start commenting you massive faggot.

Now you're not even making sense. I really do wonder how people as stupid as you find this board. Your posts are as worthless as your life.

I pretty obviously meant to make my response to and clicked the wrong post number by mistake. In either case I'll walk you through the conversation since you are mentally retarded.

>(((I))) (((unironically))) (((use))) (((the))) (((word))) ((("normies")))
>(((I))) (((am))) (((literally))) (((10))) (((years))) (((old)))

Take your meds and stop wasting data.

...

Programmers must become racist and masculine.

but really feminine guys aka. girls (male) are top programmers

Nice pasta

Reality isn't like your cuckchan /g/ trap stories.

Reality isn't like your 8/pol/ cool stories.

It can be, user.

...