@moonman I usually use Python for scripting, text processing, web backend development, and similar stuff, but I'll use Perl if the task is more suited to it. A good example is Perl one-liners. I'll sometimes use awk for certain kinds of text processing out of habit.
For the game I'm messing around with writing, I'm using C++ with STL shared pointers and containers. I'll usually do that when doing high-level programming with libraries that aren't readily available in Python, too. I'll do C if I don't need object-oriented programming, but I have worked with glib before. I've also written Python modules in C when I need libraries without a Python interface, but also prefer Python for most of the other code.
I almost never write GUI applications, but I've been known to previously use PyGTK, PyQt/PySide, straight GTK, and straight Qt.
I hate web frontend development, but I'll write JavaScript if necessary. I avoid using jQuery as much as possible because it makes my eyes bleed.
@moonman I'm comfortable with regular expressions, multithreading in both high-level and mid-level forms, and writing SQL queries by hand. Heck, I never use DBO layers in my programs.
@takeshitakenji dtluna started work on a python server-side-only ostatus implementation, I am trying to figure out how to best balance my time. I am decent at python also. Need a core that is pervasively multithreaded and asynchronous and stateless.
@moonman I hate to say it, but you aren't going to get good multithreading with standard CPython. The GIL will forever be in the way of that.
If you could move some intensive stuff into a C module, you can do whatever you want. You could also try another Python implementation, but they're all lagging far behind CPython. It'd be interesting to try PyPy, but I don't know how much that'd buy you.
You could also use the multiprocessing module with a queue, kind of how GS's PHP fakes multithreading. Python has a built-in queue that's part of the module, though, so no fucking around with custom implementations. You could easily use RabbitMQ, of course.
@takeshitakenji looks like there's an implementation of python2 for the .NET CLR that doesn't have GIL but I suspect that's just trading one set of problems for another.
@hardbass2k8 @takeshitakenji I can build a tank in Java. I've made webapps that have handled over 40,000 simultaneous users on a single server. but it takes a lot of time to learn how to do things "right"
@takeshitakenji @hardbass2k8 @archaeme My first stab is using Vert.X and RxJava, but I'm having second thoughts simply because there aren't readily available and good libraries for some things I don't want to recreate the wheel on.
@moonman @takeshitakenji judging from some very preliminary benchmarks pleroma backend should be able to handle lots of users too, especially once the client uses a push system. Erlang's VM is a really nice platform for concurrent stuff.
@hardbass2k8 @moonman If you want to see something popular that was built by people who didn't know how to build the type of thing, check out Apache Maven.
@takeshitakenji @moonman What most games and similar do that take this approach is they build the backend in C/C++ and then wrap a Python or Lua interpreter for game logic.
@moonman @takeshitakenji NakedMud is simultaneously an interesting google search and a good example of this kind of thing in action (used to power a MUD)
@moonman @hardbass2k8 STL C++ really doesn't get in the way for me like lower-level C does. Sure, the manual malloc() and free() stuff is a fun exercise, but it adds tons of boilerplate as the codebase expands.
And if you don't use any RTTI stuff or exception handling, STL C++ isn't too slow and bloated.
@takeshitakenji @hardbass2k8 I last used STL back in the days when a mistake would generate 10,000 lines of error messages. Also the last time I used C++, not coincidentally.
@moonman And on the note of PHP: I don't really hate it, but I wouldn't use it if given the choice, as Python does a great job of web backend stuff. The GS codebase is cancerous, though.
@moonman @maiyannah wow that sounds tough. to be honest when I first researched gnu social (when this server was just brand now) I couldn't find any serious specification - i feel like it's 'spec. by implementation'. Hope things are better now.
@moonman I know I'm drawing this out, but I should probably mention this: I don't understand Node.js at all. I hate being forced to use JavaScript in browsers, so I'd never find using it as a general-purpose programming language appealing.
@takeshitakenji I was considering switching to node because of how many libraries there are and how much stuff is already written to be used asynchronously. but I am just not sure yet. I've done so little code so far switching wouldn't be so bad, but to be honest I find working on JS on anything other than a toy project to be brain numbing.
@moonman @takeshitakenji @hattiecat FirefoxOS was a really good concept - using the gecko engine for the OS and Plugins/apps made it super simple to port code from Firefox to the OS itself. But no one wanted it. Ubuntu Touch (Ubuntu Personal Now) is a MUCH better alt to Android ;) When I had my N5 I used ubuntu touch as my Daily Driver. Never had issues (Other than bluetooth stereo headset's didnt work but that wasnt a deal breaker) And I was able to literally run ALL my software from my computer on it. Had Apache2, MySQL, PHP, qBittorrent, Firefox, Chrome (To use netflix), VeraCrypt, Some pentesting tools becuase I constantly run audits on my own poop to make sure it is super secure. If you have the time - I would look into UT.
@moonman @takeshitakenji @archaeme @hardbass2k8 Oh yeah, maybe you're the one who mentioned Vert.X the other month. I've been wanting to take a look at that for years.
@lambadalambda @takeshitakenji @moonman JS has a few quirks, but overall isn't any worse than Python, really. And some of the 400k packages are genuinely useful and well done, my colleagues tell me, and I trust their judgement.
@lambadalambda @takeshitakenji @moonman Well, it solves concurrency by not doing it. Just like Python. Difference being that after ten years, Python still hasn't sorted it out.
@stitchxd I'm not on a supported platform for Ubuntu Touch, or I'd be running it now, good to hear it's gotten a lot better.
My two major interests in FirefoxOS was 1. Mozilla as a trusted steward (this has been reduced greatly lately) 2. web applications bypass app store censorship/monopoly.
@clacke @takeshitakenji @hattiecat this npm webpack yarn grunt bullshit has to stop. imagine if unix was invented by javascript programmers instead of dennis richie and ken thompson
Languages I would enjoy working with, based on some reasonable amount of prior exposure, but maybe I don't because I haven't reached whipuptitude on everyday problems:
@moonman @takeshitakenji @hattiecat I think the main difference is lower thresholds of participation to npm compared to PDP-7. There are several K&R-grade people involved, but there are so many people that want to do so many things. It can be frustrating, but I don't view it as a real problem.
@clacke @takeshitakenji @hattiecat imo the language is getting better. but the ecosystem just keeps getting worse and I don't see an end game for these monstrosities that are being built and institutionalized
@clacke @moonman @takeshitakenji I have a friend whom I respect highly who thinks JS and node are wonderful because he can get a lot done with them. If it works for you then great. But the language itself has a lot of smells, the ecosystem is of variable quality and changes rapidly. https://quitter.no/attachment/1051826
@moonman @clacke @takeshitakenji Javascript was designed in a hurry and was only intended for small scripts in the browser, so was never designed for 'programming in the large' and flaws like representing all numbers as floats weren't considered so problematic. But as a 'runs anywhere' language it's being used well beyond how it was originally conceived, and these flaws are painful.
@moonman @takeshitakenji @hattiecat The trick is being selective in your view of what you consider to be the ecosystem. There is a lively stream and there is flotsam.
@takeshitakenji @moonman @hattiecat The end game is simply the good stuff displacing and obsoleting the bad stuff. In a hundred years, today's noise will still be noise.
Nobody before McCarthy had considered using the lambda calculus as the actual basis for a language.
JS was designed in a hurry, the lack of number types is a problem. But the world of code out there shows us that it is not the most important problem people need to solve.
@stitchxd I don't know that no one wanted #FirefoxOS. It wasn't really available to the public. There were a couple of low-quality phones that never reached mainline distribution channels and the next thing I knew, they pulled the plug.
I would have liked to for it to have gotten onto phones sold by the big four US carriers' distribution networks, so people would have had a choice.
I'm sort of okay with #Android, but I honestly use it because my old Palm Pre (with #webOS) died and Apple's #iOS is pretty anti-user.
@lnxw48a1 It was very public. In fact I believe there is a list of phones it was ported to (https://gnusocial.me/url/5358) And although the list itself is relatively small - a lot of the devices it was ported to were mainstream - I believe the dev community just wasn't strong enough for Mozilla to continue to develop it.
WebOS was a decent idea too - I was actually a dev working to port that to the HTC Hero, and almost succeeded too.
If you are up for android - get a phone that can run Lineage OS. IT is 100% Open Source and the devs are really good at updating it.
@clacke @moonman @takeshitakenji Fine if you go in with eyes open. Unless there are compelling reasons though, personally I'd rather not waste time having to sift wheat from chaff and invest time in learning something that could soon be obsolete.
There may be a lot of churn in npm, but I think anything we use can go obsolete, and there is a stable core of things that will stay around or be evolved with care.