No.257[Last 50 Posts]
Let's talk coding and software, sushis, because I don't do enough of it and I really should. Let's hear about projects you're working on, stuff your coding, learning. Trade secrets, info, tips, whatever. Programming isn't something that should be done alone in a corner.
I guess if we need a thread starter, I want to brush up on my coding skills. I want to find something to play around with, something not as mainstream as the stuff like Java and C, but will still be useful in a professional setting, something I can make usable stuff out of.
>projects you're working on, stuff your coding, learning
Someone released a Python library for ffmpeg, so I'm trying to make a GUI frontend for it as a personal project and learning the hard way why people don't like making GUIs. Although, XAML is actually very pleasant for that purpose.
A friend/co-worker and I are trying to make a phone application for the office that'll be a simple intranet scheduler application for the conference rooms we have in the office. I still don't know how we're going to handle the calendar part, though, because I have no idea how one would handle that and google searching hasn't been very fruitful.
>but will still be useful in a professional setting, something I can make usable stuff out of.
From what I've read, you're simply not going to get away from languages like Java, C, C#, C++ when it comes to making useful programs for a professional setting. I've also read, however, that Haskell and F# are really coming into their own as functional programming is finally starting to battle against OOP for the paradigm spotlight. Disclaimer: I don't know a whole lot about programming.
I believe almost every language has a place in some comercial setting, however obscure (esolangs notwhitstanding). Surely there are FORTRAN applications that still need maintenance, even COBOL struff, and I suspect there may be more antediluvian LISP applications scattered about, and I've heard rumors of people wwriting APL for a living.
But to suggest you languages that you might find handy to code something useful in: Haskell, Common Lisp, Racket, Erlang, Clojure.
Haskell is even used by Facebook somewhere, it's probably a good language to start learning languages that are not Algol-style.
Common Lisp is old but it's the most interesting lisp available and still at the cutting edge of language technology
Racket is an interpreted dialect of lisp with batteries included: has regular expressions, networking, systems programming, all sorts of things.
Erlang is largely used in Telecomm, it's emphasis is on massively parallel programming, it combines the actor model (central to OOP) with functional programming
Clojure is a sort of lispy dialect running on the JVM, I hear it's making itself a place in the industry because, of course, java.
>>257>Let's hear about projects you're working on, stuff your coding, learning. Trade secrets, info, tips, whatever
After a slight burn out on a big project, starting to code again is somewhat difficult. Instead of starting the next big project, I found that making a really small something is easier. I've finished a trivial note-taker script in one evening and seeing the working result almost immediately and applying it is really satisfying - brings the joy of making programs (and solving problems) again. > I want to find something to play around with, something not as mainstream as the stuff like Java and C, but will still be useful in a professional setting, something I can make usable stuff out of.
I've been looking for something like this for a while. Tried golang, racket, wanted to try forth but could not find the implementation that was good enough. I heard Elixir is promising, but I know nothing about it.
Go is definitely gaining traction in industry, it's what I spent the summer getting paid to do. It's a pretty small language: easy to pick up, but not particularly enjoyable. If you want something totally different, Haskell and OCaml are taking off, but you're basically restricted to working for a banking or investment company at the moment.
I have a really great idea, and the right skills to make it a reality.
But I can't think of any way to profit much from it (Even though huge and small companies will profit from it when it comes to fruition)
And even then there will be the bigger hurdle of it only becoming useful when it becomes kind of a standard (There is nothing like it currently though).
What can I do to get people to notice it, after I developed it?
I thought about doing some showcase videos and posting about it online. Do you think that will be enough?
For a few years now I've been working on writing a tiling game engine in Python called Driftwood. I took a very long break but returned to it about 2 weeks ago and have gotten it some halfway closer to beta since. It's a remake of my previous game engine, Tsunagari, which was written in C++, and poorly designed and unmaintainable.
Driftwood boots up and then provides an internal API to a world package made of images, sounds, maps, descriptive files, and scripts which tell the engine to do things. Each game starts with the engine loading a script which tells it how to proceed, and then the maps and entities can have events which call other scripts. The goal is to simplify game making eventually to somewhere around the convenience of RPGMaker. Currently its limited feature set is functional and it's in early alpha. I'm working with one partner.
GitHub if anyone's interested in taking a peek, though currently it's only guaranteed to work on Linux and there is a known problem with Mac OSX that my partner is working on. Windows is untested. You also can't do all that much with it right now, as it's lacking text and UI functionality, but it's almost to the point where you could make a game similar to Yume Nikki. There's also no manual, but the code is documented well (though it's untested for many possible situations and probably riddled with bugs at this stage.) https://github.com/seisatsu/Driftwood
I'd say make it first, then worry about marketing.
Particularly because you won't be able to make it fluorish if you have nothing to show
Code can be for fun you know. Just make it a side project, your life's work can be something else.
Ahh, I've been waiting to post this.
I've been working on napalm, a terminal-based ASCII/ANSI painter written in C with ncurses. It has some similarities to how you interact with vim. Currently, in 0.1, it lets you make canvases, draw on them and save the output to files.
I'd appreciate it if sushis tested it and reported back bugs, because I'm sure there are loads.
Sei, that looks awesome. I might peruse the code/try it out.
I will program it in any case.
But I want to actually see it used, and more importantly I don't want my idea exploited,
like google, microsoft and the like making millions out of my work (without me seeing a single cent),
or even worse, them managing to patent it or something!
That is hard to do unless you make it proprietary, but you wouldn't be so bad a person would you?
Sorry if I have no substantial advice, I might advice you to either try crowfunding or get leverage from some company you can sign a contract with, that can market it for you. Problem there is, you are prone to getting backstabbed by them if you choose poorly, so if you do that get a good lawyer
It's hard because companies like google will most surely find a way to make millions off it if they can…
It's not terribly hard to program for anyone competent, really.
So making it proprietary wouldn't even protect anything.
Also software-freedom is important for me, so this isn't even a choice for me.
Well, even if it gets big, and I don't get any money out of it, a bit of fame isn't too bad either.
I'm actually quite surprised why this isn't a thing yet (Maybe multi-billion dollar corporations aren't really a hotbed of creativity after all)
Anyway, I'll definitely post it here when I put it up on github! Also sorry for being so secretive.
I've been writing a concurrent web framework based on Golang's net/http. I'm able to write basic web servers now, which is pretty neat
If he's doing the writing and you're doing the programming, who's doing the art?
he's done some photography for backgrounds and im using a cool little piece of software called iicharacteralpha to generate the waifus and other characters. its not ideal, but the budget is $0 and neither of us do art so we're kind of s.o.l.
Cool. I guess you two are doing this for fun, so whatever works, works.
I've been wanting to create a little game myself for some time now (been looking into the love2d framework), but my complete lack of skill when it comes to art/sprites is what keeps me from even starting.
Im working on a project and would like to get more input from sushies while Im making it so I can share when its done. I also put up this >>>/arcade/184
and will put in a DB update tomorrow.
Im building a turn based game in Rails 5 and HTML5/JS. I will be using Ruby all the way though to keep to only one language on the back end. I will keep up here as well for any one interested.
How do I get better at coding, or at least coming up with things to actually do? My biggest problem is an apparent lack of imagination, if I want to sit down and code something, I have do idea what to make or where to begin.
and this is my first big project. The best way to practice is to make little tools that you need all the time (or just want ala youtubedl) and just do what ever comes to mind. Helping in projects is always a great way to get good as well. reading other peoples code is not always easy and it takes practice as well.
>>289>make little tools that you need all the time
And that's part of what I mean. Most of the time, I can never really think of anything that I need done by a program.
Actually, there probably is something I could do. It's a little more involved, but definitely not outside of my skill range. The issue is that it would require me to obtain a database of a mass amount of stats (or just copy everything by hand, which would take eons and leaves way to much room for error). It wouldn't actually get me to do anything for a while, though.
I'm trying to get used to Godot, but these scenes and nodes are just plain weird.
>>290>The issue is that it would require me to obtain a database of a mass amount of stats (or just copy everything by hand
See, that's your first tool to write. Instead of copying by hand, let a program handle the task.
Well, the thing with programming is that languages are usually fit for a particular domain of application. I don't think there is such thing as a 'general purpose programming language'. C is great for working with raw data or interfacing with the kernel and most libraries, yet it's really hard to do some high-level stuff.
Perl is great for mass data processing, R is great for statistical analysis, and lisp is great for manipulation of program logic. I found ruby to be great for structured programming.
So first you got to find the best language for your particular purpose, or if you're in love with a language, the particular domain of that language.
Usually you build up your knowledge gradually: what is some basic stuff I can do with this? then do it.
Has anyone here ever used ConnectWise Automate/LabTech before? I'm looking to impress a company I had an interview with this morning, but having trouble trying to decide what direction I want to go in for a project.
>>262> based on C> with garbage collector and pointers
Sounds just fine imo. I've been fiddling around with Ethereum for some time now. The dev team seems to like Go pretty much, ending all their github/wiki pages with> golang <3
>>257>Let's talk coding and software, sushis, because I don't do enough of it and I really should. Let's hear about projects you're working on, stuff your coding, learning.
I'm constantly reading about programming in some form; it's fun. I've been meaning to pay ECMA-48 proper attention, but I still read other documents more lately.
I'm mostly working on a development tool as of right now.
>Trade secrets, info, tips, whatever. Programming isn't something that should be done alone in a corner.
Even on the wired, we're still alone like this.
>I guess if we need a thread starter, I want to brush up on my coding skills. I want to find something to play around with, something not as mainstream as the stuff like Java and C, but will still be useful in a professional setting, something I can make usable stuff out of.
Lisp and APL have already been mentioned.
Consider learning a machine code; you'll use an assembler for this. Avoid Intel.
Recently I've been learning Haskell and recently wrote myself a simple file encryption program. I'm pretty proud of it and I'm finding Haskell and the whole functional programming thing really interesting. I'm considering learning something like OCaml as well as I hear that's getting real popular.
I released v0.4 of napalm, my ncurses-based program for doing ASCII and ANSI art. This version is all about adding layers instead of having a single canvas. You can now import multiple files without overwriting everything, for example.
It's written in C, and I guess I learnt a new way to initialise a struct in the process. It's interesting to note that, since the first commit (612 LOC), the number of lines of code has quadrupled. Whether that's good or bad, I don't know.
The code is here: https://gitla.in/chibi/napalm
>>257>Let's hear about projects you're working on
I'm making a pseudonym generator in C. For now it takes a string of characters in input and randomize them, the difficult part would be to make the output readable, so I have to detect vowels etc…
Do you sushis think it's possible to live off your own code projects via patreon or something?
git link? since gitla.in is down.>>626
The homepage for the project is now: http://unraed.uk/prog/napalm.html
There's no code browsing though, just a link to clone the repo (this is a bit slow for some reason, be patient!). If you have any comments whatsoever, email me. I am always grateful for people testing it out.
I hope you don't mind, but I looked through your webpage and found your music. You should make more, it is very comfy.
You don't know how happy that makes me. Thank you for saying so, sushi. Unfortunately you cannot expect new music for a while because I work on it quite slowly, so maybe check back into unraed.uk in a year or so.
(Saging because off-topic, btw)
hey sushis. recently i've been looking at taisei (open source touhou clone). the graphics are surprisingly good, the soundtrack is great and the codebase seems to be really clean and organized. I don't know too much C but I'm hoping I can figure out something to do and contribute! anyone know anything about this project?
in other related news: I finished a really quick mangadex downloader in python. figured out their new api and just downloads chapters in parallel and tries to do padding so you can just `feh -r` a directory. Can post code if anyone is curious, I'm frequently without internet so I like to download most of my media.>>785
Looks nice. I like the use of color to separate different fields.>>593
hey, that's great! what program did you make? I think learning haskell made my code in other languages better, I try to be more pure/shorter functions and so on now.>>288
I think a game is a really good project to start because it involves a lot (video, audio, math, concurrency) and you can easily think of ideas for new features/modes/power-ups etc. A fun one I like to suggest is the game from Tron (kind of like multiplayer snake–you grow by 1 in the direction you face each turn, if you hit another snake's body, you lose). You can even do it over the internet with websockets for extra difficulty.
working on some infosec tools related to shells and botnets
If you are somebody who would try Haskell, just try Scheme. Seriously, once you realize that code is data, you can just choose (i.e., extend) the best language to fit your problem.
Haskell might lure you into thinking about your problem with monads, applicatives, and functors. "It all looks so neat and tidy," you think. Really, you are just locking yourself into a box. You're in the Haskell box. In Scheme, you create the box.
A C programmer might say "I will return from the function early when I encounter an error."
A Haskell programmer might say "I will lift my function into a maybe monad that will prevent further applications when I encounter an error."
A Scheme programmer might say "I will write a macro that only applies the next function if the previous function succeeded."
Which one sounds the most natural? The Scheme programmer! Why? It's because the Scheme programmer creates a LANGUAGE. The C and Haskell programmers must live with the decisions of their language designers.
Remember! Language designers of general programming languages design for the general case. The only way to conform to your case is to become a language designer. The easiest way to do that is to use the homoiconic Scheme language.
I wanted weeks ago to build a small blog with Node.js Vue.js, Express and set up something around Docker o have a development environment without having to install anything on the host machine. I managed this last part and learned a bit more about Docker, but quickly lost interest for the main task. Web development bores me as much as I find everything related to it tedious or daunting. Laziness must also be part of the problem
Otherwise I still have an "art" project in Python using Pillow, I'll rather rewrite it in something else but this library's API is great
Seems to miss the point of haskell a bit. Sure it is less flexible, but in exchange you get abstractions that are broadly reusable because they follow simple laws and have an ecosystem of libraries build around them. Also the type checker can reason about them then, so it suggests what your function should look like and rules out certain classes of bugs.
Still waiting for my ideal language of a scheme with full dependent type checker running on top that you can interact with. Until then I'll probably stick with haskell.
Not everybody works the same though, it takes a bit of a creative disposition to dream up that best language, or even just a good one. Constraints and small boxes to work within have often been cited as inspiration, no doubt you've heard it before.
Kind of a LEGOs vs clay type of situation.
I like lisps too, but you have to realize it isn't the holy grail for everybody. An infinite journey of new boxes isn't always best procedure.>>1407>my ideal language of a scheme with full dependent type checker
If you'd be prepared to put in some work, you could have a go at a toy scheme (based on "Write yourself a Scheme in 48 hours" perhaps) in haskell, figure it would be pretty easy to integrate whatever you like from haskell into it then.
Web development is just… boring. That was my focus in school, but I frequently found out there was no passion in web development, and people basically just do it because it's a "get rich quick" scheme. I went into "real" programming i.e. systems programming and find my tasks much more enjoyable than copying the same boilerplate ad nauseam.
System programming seems way tougher to get into though, are you working in a particulier subset of it (driver, desktop application, embedded, etc)?
I have worked on both drivers and embedded before. Right now I am working on "cloud native" architecture. I contribute to some open source projects (which are desktop applications) but they are rarely updated projects.
New /adv/ type personal issues board at https://clooven.com
is what I've been working on.
I've put my side projects on hold at the moment and I'm concentrating on my coding assignments, particularly for a class about data structures. It's really fun.
Currently we're learning about stacks, interfaces, user-defined exceptions, big O notation, UML diagrams, polymorphism, inheritance, abstract classes, bounded vs. unbounded ADTs (like arrays vs. vectors), separation of concerns (using many classes with separate purposes instead of putting everything into a Main class), reusable packages in Java, when and where to use different data structures, making test arrays to test ADT classes (kind of like a really primitive version of unit testing), etc. I also had an assignment where we had to make lists that you could search or sort, and I implemented bubble sort and sequential search algorithms.
Later in the class we're going to go over linked lists, graphs, trees, and maps.
Sounds like a lot of fun. Sometime I wish I should go to college again and study CS.
I got back into the SICP book again, witch Chicken Scheme and a proper Emacs setting, still stuck as early as exercise 1.7 and 1.8 because I suck so much at maths, but I have the luxury to take the time to understand, so that's ok.
i've been working on my final year project, a mini OS / lisp vm. my plan is an emacs like system whereby the kernel is written in C and manages low level stuff like drivers and virtual memory, but incorporates a lisp vm to execute userspace lisp. Processes are similar to the Unix model but instead of code and data we have two code sections, one for the lisp sexp and one for compiled code, and an env section instead of data.
- Process Model
|Lisp Code|JIT Code|Env|Header|
This way regular lisp code can either be interpreted, or the process marked for jitting, and the kernel will parse and jit the code into the other code section.
Since this is a hobby/""""research"""" project I'm not worrying about practicality or real world applicability, I just wanted a lisp machine. But if its going well I may put more focus on immutable data structures, especially a shared env between parent and child processes, since nowadays memory is in great abundance but concurrency is still a little awkward.
right now I'm still setting up the OS, I have malloc and printing, I need to get interrupts and paging going, and I have a lisp parser. Once I have the kernel set up I can work on the lisp interpreter and userspace code.
This sounds really cool and interesting sushi, but I don't understand it!
Does this mean that a person using your OS can execute Lisp code as if it were machine code? So you wouldn't need to start a separate Lisp interpreter in order to run Lisp code?
Also, what is 'Env'?
thanks!>Does this mean that a person using your OS can execute Lisp code as if it were machine code? So you wouldn't need to start a separate Lisp interpreter in order to run Lisp code?
Yes, and yes. The tight integration between the kernel and the VM/interpreter means that essentially to the user this is a Lisp only OS. Which seems quite limiting considering all modern OS's are 'multi language', i.e. they're happy with any executable code in userspace, as long as it compiles to the machines native language. But since this is my degrees final project, and I can pick what I want within the category, I decided to just do something fun that I've always wanted to make.
Additionally, since Lisp has such a simple syntax, it's not a bad target for compiling to from other languages, if not for the fact that Lisp support is very limited in the real world.
>Also, what is 'Env'?
Env is the environment for each lisp process. In unix/x86 terms this is the 'data' section of the binary. This contains all the contents of current variables, or in functional programming terms the state of the program. Every time the interpreter encounters a symbol definition, say 'x', it will look up 'x' in the env, and get the value of it. Only a few functions modify the env:
(set! x 10) ;; add or modify the entry x in the env
(let (x 10) (...code...)) ;; create a new inner environment
(defun add (x y) (+ x y)) ;; add the function entry 'add' in the env
(apply/funcall/[just call the function] add (1 3)) ;; create a new inner environment and set variables to values specified
So in theory, an interpreter could take two arguments, a function (in the form of an sexp), and an env. It would modify the env (if the function has any side effects), and return the changed copy (or modify it in place, same outcome).
This means we can also do stuff like saving an env to disk to suspend and resume a program, or reloading code but keeping the env in place, allowing hotswapping code as it runs. Pretty cool.
Thank you for the explanation - it makes sense now. Does this make your OS safer than one which runs machine code which might have been compiled from an unsafe language like C? Or would the same problems with C recur if you had a C to Lisp compiler installed on your LispOS?
Anyway, best of luck on your project sushi!
I'm learning, again.
It's a problem really, I've started up so many times with the basics but dropped it before I got to a point where I felt proficient. First couple of times it was cause I was trying to get into C++, because I decided that was a good idea as a first for some reason. Never felt like I got into actual problem solving, just an endless ride of learning semantics, that I quit and started all over again repeatedly. Later attempts got borked cause I always got itching to language-hop sooner or later.
I guess I got to see a bunch of langs, pretty comfy, only superficially though. I really liked the feel of Fortran.
Finally found something that feels like home in lisp though, just flows right somehow. Feels like the one I should go all in with and gain real fluency in. (Actually am so teased by J right now though, but can't switch again, gotta keep focused)
Plan right now is to get somewhat fluent, and then go through the old Advent of Code years as practice to make everything stick and actually get some implementaion-practice, maybe even in time for december if I put a move on.
I'm a weak man, I accidentally went all J just the day after that post.
Really gotta switch back to CL and get that fluency going, but will also have to return to J later (or just make it every other session), really beautiful language.
Just a tip for very comfy Lisp typing, rebind Caps to some unused key (sharpkeys on windows, I used F13) and then use that as a modifier to place parentheses on home row with autohotkey. I do;
J - (
K - )
H - #
L - '
I never really minded all the parentheses, but it's butter smooth like this.
Would really appreciate it if anybody knew how to set it up like this on Linux too, been planning to move back from windows soon.
If you're using vim or emacs, you can remap keys based on buffer type (so if you have a .lisp open)
updates on unnamed Lisp OS: not much. I've been very busy with other uni work, however I wrote and rewrote and rewrote my Lisp parser and printer. They work now. I still need to do some work on the env and typechecking, but a few days ago I hit the milstone of being able to put:
(+ 1 2) and getting => 3
I have to debug interrupts and then I can write a keyboard driver, and we should be on our way to a REPL. That's a good milestone 1.
As a side note I've been obsessed with the idea of Literate programming recently. I rewrote my emacs config in org mode with babel to test it out. It makes writing code a much slower process, but I think that's a good thing. Writing a codebase like it's a work of literature, describing its own inner workings in a human language seems very nice. It's a shame it never caught on.>>1458
I've had to write matlab the last few weeks for uni coursework, and despite it feeling detached from the world of programming and having some horrible quirks, I've grown a big appreciation for Array based programming as a whole, ala APL and J. They really are beautiful languages, and despite the obvious real world difficulties of APLs unique command characters, there's an elegance to the concept.
Perhaps when you feel confident enough in CL you could try implementing a J style language in CL. It would be cool to see.>>1467
This is a cool solution! I programmed space cadet parens/shift on my keyboard. At first I was just annoyed that accidentally tapping shift would give me parens, but now it's very natural.
Are you some version of me I'm not aware of? For my story is similar.
I started with C but unlike you I did enjoy it a lot, had a lot of fun solving problems and getting to know how things work at a lower level. I still do, I like to learn how programs are arranged in memory, how they are loaded, and libraries linked, and how they interact with the underlying OS and the implementation of the data-structures in the core OS, and well, everything I can.
But then I started language hopping, I got lured by Lisp, but in my case I never felt much at home with it. The one that flows right for me is Forth, but ultimately I keep coming back to C, perhaps because it's a kind of standard for me. But I keep looking elsewhere, lured by the promises of Erlang's concurrency, Haskell's type system, Ruby's object system, Common Lisp's condition system and metaobject protocol… I guess my other favorite is Scheme and in particular how one can use it to implement a larger language with stuff like an object system, or a type system, as well as many other things.
But I can't seem to focus
I've actually avoided C throughout all my language hopping, some kind of programmers superstition. Dipped my toes into ASM a couple of times, because I'm also interested in the deeper shapes of things. Just never C. To try to put it into words, I guess it's about it being the standard gateway between the lower and upper levels, and how knowing a solution to a problem will influence any solution you'd come up with yourself.
Forth is interesting, I've been reading up a bit on it on and off the last months. Seems to be a bit of a shapeshifter, hard to pin down, but what I've seen so far seems useful. Something I will have to add to my vocabulary sooner or later.
I feel you on the focus, been having some weeks with a case of trash brain myself.
Kinda see where it comes from though, have a bunch of bad habits and mental reflexes I've been aware of for years but have yet to get rid of. Go against them every now and then, get some real work done, but never long enough to overwrite them with the good habits. Fall into the old pattern when I forget I need to keep the effort up to actually change.
Journal, list projects and focuses, wake sleep leave arrive routines, blah blah yadda…
When I tried forth it felt like trying to do things with one hand. A cool experience and a nod towards a lower level, but not something I'd describe as useful in itself. Did I miss the point?
I did an electronic course and really liked coming up from below rather than descending like I used to always do. Now it's like I'm filling in the middle, I can almost see all the way from voltages to object abstractions, with only specifics of architecture and kernel and os stuff remaining fuzzy. I wanna refine my study habits…
Your second paragraph is me so hard it hurts. Here's to sushis like us making meaningful changes in 2020 and living life with more vigor
If you want to go for a C family language I recommend just sticking to C, there's a good saying that C will give you all the rope to hang yourself and C++ will give you infinte rope and then strangle you when you fuck up or something like that. Only learn it if you want to do game development.
C is nice for low level stuff too, and if you work in tandem with assembly you can have some fun with learning about system kernels, memory management etc etc if that's what you're interested in.
Meanwhile I've been making my own bot for dickcord (yes I know, the horror) to help me learn JS which is turning out nicely, except that I'm struggling with a cooldown timer for bot commands…
Oh well I figured out if/else statements I'll probably handle this just fine. NodeJS is surprisingly comfy especially when running on top of Nix. Ahhh the comfiness of development~
Anyway sorry for my rambling I just haven't shared stuff in a while
>>1516>C will give you all the rope to hang yourself and C++ will give you >The motivation to go for it
Lippman is C++11 right? That's fine. The important thing is to avoid any C++ examples or advice from before that standard.>>1516
It sounds like he's interested in existing C++ code bases. This is very poor advice for that.
ITT: People who care more about the technology than the actual product they are creating.
The medium is the message, don't you know?
For cooldown you can just save the time the command was last used and then on the next invocation check if sufficient time elapsed since that.
I recently started working on improving OpenIB and plan to release a new fork at one point.https://9san.ch/g/
I've been working on learning NodeJS web development. I'm currently learning about sessions and how to do logins and stuff. It's a lot of fun!（＾－＾）
I've been thinking of learning Java or C++, I don't know any programming languages and wouldn't really consider myself smart though. Are either one good languages to learn just for the fun of it and could someone lead me to good books for beginners in either language or other ones that might be better suited to me? Thanks in advance.
I wouldn't recommend either to begin with tbh.
Better with something small, so you can concentrate on programming concepts rather than language quirks.
What would be better suited kinda depends, do you have some kind of goal? Just for fun keeping your brain in shape or like, games? Make a career? Web-stuff?
Is it more important that it's comfy or that it would have a larger backlog of already asked beginner questions and such?
Just for fun honestly, beyond that I don't really have a clear goal in mind for why I want to learn a programming language and what I want to do with it. Basically just for shits and giggles.
Neat, then you're free to get into that weird shit if you want.
I'm also kinda in it for that, the best puzzle game there is and it's for free.
Lisp was the first lang I really liked, so I gotta put in a recc. for that. PDF related is the most approachable introductory programming book I've read, wish that had been my first take on programming rather than all those failed attempts to into C++ "cause that's what the big boys use" spanning over several years.
Python is kinda a goto recommendation for beginners cause there's so much entry level resources and loads of libraries etc.
Other than that I don't really know, there's so many.
Nothing that says you couldn't start out with Fortran, Forth or J, something that way.
I guess I'd recommend trying out a couple of ones to see what's your style, go on some dates, then get really down and dirty with the one you liked the most, since that is when you get to the actual programming parts rather than just learning how to speak.
This literally is why we cant have nice things.
Can you guys recommend any good books for learning Java? I'm starting my bachelor of IT in July and my Programming Fundamentals course teaches Java, I want to get a headstart on it. Thanks in advance.
I read a paper once which found that 5y/o children were just as comfortable learning man of tastele programming in APL as in BASIC. It's not in my bookmarks now but I've successfully taught the fundamentals of J to beginners in year 3 (age 7-8).
Myself, I'm learning C at the moment, having always avoided it as much as possible. I'm working towards building a text editor which is kind of like Acme but for the TTY and based on text objects. It's quite ambitious but I'm not doing super badly.
Oh another thing for beginners, I hugely recommend Scratch 1.4. The modern two versions aren't so great, but that oldest one is really nice. It lacks some nice features of the latest, but makes up for it with the fact it's implement in Squeak Smalltalk. This is super nice because it means that you can access the Smalltalk machine from inside the Scratch program (shift click on the R in the logo on the top left to turn off the fullscreen). People mock it as a children's environment, but it's very powerful and comfy.
You taught J to grade-school kids?
I am much interested. How did they handle it? Did they have trouble with the symbolic nature of it? Or with the abstraction?
I think one reason people have a hard time with math may be the abstract level of discourse. I often wonder how a class would go for kids that are just learning addition and multiplication, but with some elementary algebra/number theory instead of silly computation.
Obviously easy stuff. For example, Gauss' sum of first n primes. Do you think it viable, now that you've worked with children?
To be honest, it didn't go too badly. Most of the class was doing Scratch, and I was in an APL phase and had just read the paper I mentioned above. Anyway a couple kids said they wanted to do "real programming" so I walked through dome sinple J with them. It didn't go too bad, although one of the things the paper said was good about APL was the lacj of familiarity with the characters; didn't seem to be a massive bother for the children. They never got much more complicated than doing factorials, details of people in the class or whatever but it ended with minimal prompting.
At work I'm doing some python scripts that interact with the Cisco DNA Controller´s API, seems quite easy for a non-programmer.
I am overflowing with code. So much code!!! I'll post some of it here someday.>>1601>dome sinple
My new favorite letter switching.
I always wanted to do something of decent size in scheme.
For example, an engine to write Text Adventures (aka IF).
I'd write all the functionality from the ground up, like a format function and an object system. I'd like to try novel ideas (for me) like continuations and metaobject protocol to innovate and add flexibility to the engine, to allow for experimentation.
I'd make it compile to Z-Machine, and in a way show that a great deal can be made with a pure R5RS system.
But I don't think I can, and I have other stuff which I need to tend to.
Docker is pretty damn cool. That's all I have to say.
Well really all I'm working on right now is staving off depression.
Downloaded some books n such,
Just looking for a cool linux distro so I can begin to fuck around.
Any suggestions for things I should learn?
Experience:> some boring hs python classes> arduino robots and such> I know how to navigate linux filesystem
that's pretty much it
first real suggestion is what I'm sinking the next couple days into
god I want the fish app
Docker is pretty damn shit. I have to use it at work…
docker-compose does the networking so you don't have to!
You probably want to learn the language itself, as well as data structures. I would recommend "Absolute Java 6th Ed." Its a good intro for beginners to programming and Java.
For the depression? Exercise routine and spending time with family.
For your apparent boredom? It depends on what you are interested in.
For the Linux? Any Ubuntu based distro.
Not exactly programming, but I know basic CSS, and I'm looking to learn how to make it pretty. I want to learn some of the more, well I don't want to say advanced, but I guess more complex stuff that it has to offer. Like what are its limits?
Any resources for this would be appreciated. A book would be nice but I'll take whatever. Free of course :^)
I´ve kinda decided to make a first real project instead of just language hopping the basics over and over. Settled on making a text editor, cause it has a poetic sense to it to make something I can then write the next project inside of. Also nice with something that can be improved and twiddled with almost indefinitely with continued usage.
Right now at the stage of collecting and condensing a bunch of different resources on the hows and whys.
I'm reading through Effective Java, it's a pretty good source for people who already know Java but want to know best practices. I'm learning a lot, would recommend.
In my own time I am learning assembly, particular for AVR boards. It's fun, and I get to cosplay as a spaceship engineer. I'm still a beginner at it, but the last thing I did was make a program that measures the voltage of a solar panel and displays it on an LED meter. (Brighter the light, the more LEDs light up, basically.) Works for batteries too of course (up to 5 volts).
At work I have two projects, one is really fun and the other is mundane as shit. I do telemetry decoding and simulation for rockets and spacecraft; project 1 is a python program that extracts sensor data from network packets and tracks their values over time, project 2 is… turning a big .XML file into a big SQL database instead. Makes me want to quit.
Everything we do is Python, but we don't meet performance requirements if we run on a particular server instead of the beefier ones. Feels so stupid to optimize Python code that needs to pump lots of data ridiculously fast. Also makes me want to quit.
Anyway, I want my code to be *on* spacecraft in the future, hence learning more low-level stuff.
I'm sorry if this is really dumb question, i'm a big doofus with this stuff, but can't you convert or compile it or something using cython or f2py or numba or something?
Please don't bully me….
Astronomical computing, as in, radio data analysis, or what? Because I remember when I took that class we wrote the code in C, and the professor just crunched assembly. When you have terabytes, minimum, of raw binary to crunch, the fact that python is slow becomes crippling.
Yup crunching radio data. We've been working with such small datasets (~few MB) that speed hasn't posed too much of a problem. With the amount people in the class have been struggling with pre-built data science packages in Python, I can't imagine how they'd cope with writing things in C instead.
Any general sagely wisdom for radio lab, O' master?
Eh. I mean you're not using the same language as us and if the professor doesn't seem to care too much about how fast your code is you're also not being graded on the same criteria. If you have specific questions on the theory I guess I could give some pointers but I doubt any specific code or whatever would be useful in this case.
Some small subset of our code uses numba, yes, but most of the drain on our software is just from the nature of how it is structured. There aren't really expensive calculations occurring, it's moreso that data is being copied around inefficiently, we don't store data structures in the same way that we send them out, and stupid things like that.
Most science is done in Python or R. The amount of packages with convenient tools available for these environments is immense. Any number crunching you do will almost certainly rely on C-written backends (e.g. numpy, and all of the other libraries that use numpy).
Python is also super popular in science since it's so quick to learn and to write. Plus, why roll your own statistics library in C when you don't have to? Science has to be done!
I was on the C high horse for years and years, but you cannot go wrong with Python for science. (But Python for high network throughput simulations… see my other post.)
My problem isn't so much with Python or its packages. Its the language I'm most familiar with, so I use it to prototype programs pretty often.
I just don't like Jupyter Notebooks because they're used simultaneously as an editor, interpreter, markdown formatter, and (in my course) a presentation tool. I'm getting used to them now, but its a lot of features to figure out how/when to use properly. I'm used to writing in vim/nano and running stuff from commandline so I don't really take advantage of anything except the basic features every time I've tried IDE's.
Ah I see what you mean. I haven't used Jupyter notebooks but I have seen a bit of it. I have always used vim too so that would be uncomfortable for me as well.
RMarkdown, Jupyter Notebooks, et al are very comfy when your first concern is the science and math behind an idea and you don't really care about writing software for the particular task. "Editor" is not in the vocabulary of most computational researchers, because the computing is the means to the scientific ends they're after.
That's my assumption of why they prefer it at least…
More on that:
ruby, python, haskell, and many other languages provide interactive shells that make it very easy to toy around with and try different language features and parts to see how they work, and to prototype ideas. APL also has interactive environments that predate yet resemble a lot of what the Jupyter experience looks like: tryapl.org
What's a good resource for learning Python?
I remember using Tutorialspoint back when I wanted to learn Lua, they should probably have Python related stuff.
The Python documentation has a tutorial which guides you through the basics of the language with lots of examples to
That's how I taught myself a few years ago. Now I write Python at work and no-one suspects me of being an amateur :)
Learning Python by Mark Lutz or learn Ruby instead (read the pickaxe book)
Currently going through the SNOBOL Green Book, since most of the stuff I want to do with programming is text focused stuff and just for my own fun, why not try out a lang focused entirely on strings.
Find it quite comfy actually. A bit arcane in some ways, all control flow is essentially just gotos and labels, but I dont mind.
I am just going to say this because I need to say it.
I need to get away from programming communities. I suspect they have no positive effect on me and are ultimately distracting. Even more, I think I go into herd mode and deviate from my true or optimal path in order to accomodate to some programming culture (usually centered around a specific language, but not necessarily always the case). I'd always turn to such communities for inspiration but the net effect is that I've been barely able to produce anything at all, and I've constantly felt behind and that I should be pouring my energy in some other thing.
This does not necessarily mean that I should give up programming, but I first need to detach myself from community if I am ever to find out if programming is for me.
While on topic, I am fucking sick of programming books. Seriously. Most of them devote pages upon pages to language idiosyncracies, are unbearable verbose, and ultimately teach very little. What's more, I think they impede my ability to actually learn by myself and make me reliant on some outside source to get the knowledge I need to develop some idea, and to waste my time doing that because they're pages upon pages of prose.
Not all of them by any means, but most of them, even many that I genuinely consider good, ultimately have this effect on me.
I've been reading more math books these days and just now I've realized how overwhelmingly verbose programming books are. Just a few pages in a math book get me having to go back and think carefully about what is being said, while in programming books I find myself rushing through to get to something interesting.
This all may just be something about my personality, and perhaps math works best for me whereas programming works best for others. But I do suspect that some of what I said about programming books applies, particularly, that they seem to be filled with a lot of chaff in the form of endless prose in order to meet a 500-page quota.
Here ends my little vent on some of the frustrations that programming has caused me. Part of me wants to keep doing some of it at least, but I really feel I've lost my way. Despite what I said, I have a lost of books I really like, and some topics I'd like to learn more about. But I'm stuck, and I've been so for many years now.
Books are good for some cs or math heavy topics, but even for those I often just get a textbook from libgen and mostly use it as a guide for what to Google. The table of contents is usually the most useful part. All the specific language books/clean code/best practices/design patterns books are trash. Most popular non-textbook books are usually as bad as yt videos.
I have no idea what a "programming community" is supposed be.
can one recommend me a book about principles of functional programming? I'm learning Haskell and I'm struggling understanding Monads etc. It makes me feel stupid!
I've never worshipped at the church of Haskell… is there any difference between a monad and a child class or a mixin?
I suggest making it your pet project, startups are everywhere and for a text editor I doubt there is much demand, as they are in high supply.
I don't meant to discourage you, just don't make a bad decision.
Just take it by small steps, how long could it really take you?
Uhh well it's not a text editor it's a code editor, primarily operating on AST and in memory objects. I think it might take me 5 years working solo using the majority of my free time.
I agree tho that work on it in free time is the most obvious good decision… I guess I'll do that for a bit, I can always switch to another strategy later I suppose.
Revisiting this thread reminds me of this haiku I wrote:
An old post startles.
I'd written it so long back;
there's still no response.
I've finished a few versions of that development tool:http://verisimilitudes.net/2020-07-07http://verisimilitudes.net/2020-12-26
I've written several articles about programming, and here's a good one to absorb:http://verisimilitudes.net/2021-05-05
Maybe nod to the fact that you are using domain out of the math world meaning "set of possible inputs" it wasn't clear to me until paragraph 5 that that's the definition you were using. It's a good thought though. Program correctness is a cool study.
>>1986>I'm working on another, concerning a superior style of programming, and I'll try to remember to submit it here when I finish it.
Here that's: http://verisimilitudes.net/2022-01-31
The CSS needs improvement, so the Gopher version is strictly better for now: gopher://verisimilitudes.net/12022-01-31
Here's a Gopher proxy:https://gopher.floodgap.com/gopher/gw.lite?=verisimilitudes.net+70+31323032322d30312d3331https://gopher.floodgap.com/gopher/gw.lite?=verisimilitudes.net+70+30323032322d30312d33312e72656164>>1987
No; I don't include definitions I expect my readers to know; I found it clear by the first sentence.
What are you guys studying right now?
I decided to finally tackle C and its been going very, very well. I'm still quite a ways from actually finishing the book I'm reading, but I will get there eventually! Linux is very fascinating and I'd like to design programs that are the best in efficiency and whatnot. Tight integration with the kernel is what comes to mind, and I've got a few ideas…
coding is fun
coding is good
but coding can also be fairly big tussle, and it can get on my nerves
even then, i like coding a lot
I am working with ASP.NET on college and it's a bit tough at the beginning, but I am slowly learning how the framework werks.
That still doesn't mean that my code isn't a big botch of spaghetti
My code only started to improve, i.e. get non spaghetti, when I had internships / started my job. It's amazing how quickly you will learn when you're supervised by seniors and forced to do it 8h a day
I think I worded it in a wrong way, what I wanted to say is that if you're doing a regular work day - which in my country is 8h - you will learn a lot in a very short time period. Especially if you have great supervisors / mentors.
I love programming! This is a nice thread. Thank you OP bunny!
I'm going back to comp sci undergrad soon and I'm excited. I'm thinking of picking up some webgl b4 because some of the things I'd like to write will need gpu and I wanna be able to send ppl a url to let them run them.
I've been programming off and on for like 15 years, I'm pretty leet now, but I'm also still pretty terrible, ah ha ha, especially for some of my aspirations.>>1521
Ahahahha I love this sentiment. I dont wanna lie I really like computers and wanna learn about them cause they are just such a cool object. I feel like learning about how they work also teaches you how to think better… but that might be true of anything you can learn about.>>1522
Nice Marshall McLuhan quote : )>>1920
I like some prose in a textbook, add in some jokes and redundancy. It's nice for us dull ppl to have a bit of extra handholding.>>1946>>1944
So yuh I decided to go finish my undergrad and I can use that time to work on this. Yay! Wish me luck.>>2037
>>2046>I've been programming off and on for like 15 years, I'm pretty leet now, but I'm also still pretty terrible
I've been programming (have I really?) on and off for about 8 years now, and I'm just terrible. I suck at it really.
It's not even lack of skill, because I understand many things, almost instinctively. I have an idea of how things are out together at the lower levels (ie. at the OS/kernel), and I can also put together somewhat decent (non-spaghetti) programs.
But I'm bothered that nothing seems to "fit" well with me, and I ultimately lack any motivation needed to put in the practice that'll make me progress. And even though I've used several languages (perl, lisp, ruby, C, forth), to the day I can't confidently write anything in any of these (maybe with C) without looking up basic syntax. Nor do I really have any scripting ability,and I think that should bethe first thing I need to change.
Anyway, it was not my intention to whine. I do like this feeling of feeling some progress, even when doing things "on-and-off" over the years. My competence with certain foreign languages, as well as with mathematics is like that: I do not have the skill of someone with a formal (ie. continuous) i struction, but I do have a firm understanding and developed intuition and some basic competence. Feels good. But also feels bad because I am not very good at it either.
There should be a whole math book written in this way
You could probably write a program that would go through a pdf textbook and replace Greek letters with food emoji.
I feel like getting into the homebrew scene of the 3ds, but I don't know where to start.
I wanna make an imageboard browser compatible with lynxchan.
I imagine that must be fairly difficult
The pic is gibberish though
You know enough math to know this doesn't make any sense? I'm impressed. I'd like to get there someday. I think it's hard to know if something is nonsense or just from another subfield or someone describing something in a way that is obtuse. But I'm barely above calculus tbh.
But the choice of Greek letters in math is a convention because they are easy to write and not otherwise used… essentially arbitrary and emoji would work just as well when working on computers… aside from math being "serious" and emoji being "silly".
Not them but that looks like category theory, which is accessible to anyone with some background in algebra.
It only lasts until the third line in the definition of burger where / doesn't make sense on sandwich (the set of integers).
The rest is just random words and notation from abstract algebra and category theory.
said, higher maths isn't supposed to be esoteric, it's just rarely taught. I actually find the notation to be very beautiful, it has a terse precision that regular language can't match.
Try reading a bit on group theory if you're interested, it's a really fun topic and you don't need any prereqs because it kind of rebuilds how you understand algebra. You'll probably get a kick of out the generalisation of symbols and notation too since it concerns how arbitrary objects can be manipulated algebraically if there's a way to combine them that satisfies certain properties.
Inspired by the recent discussion I started reading "Categories for the working mathematician", it really feels like wizardry! But even though I am able to follow the text for the most part, I realize there's a lot I don't know which is mentioned as examples, eg. the tensor product for groups. So I might want to go and fill those gaps, say, reading Dummit and Foote (though then would I finish?), and then, who knows, I might want to read some algebraic geometry (Hatcher?), and also fill up the gaps in linear algebra beyond the basics of vector spaces, matrices and vector calculus to which I've been exposed.
I was thinking of reading the HoTT book as well, which I think kind of overlaps with this stuff. Higher mathematics is really nice! But it's so damn huge, I feel I'll never get to the point where I can read a book and understand all of it's content.
I've just started descending the abyssal rabbit hole that is constructive mathematics and type theory. Maths is truly terrifying; the areas of study and seemingly infinite and each one is too deep to ever gain mastery over.
>>2059>constructive mathematics and type theory
Ohhh that sounds tasty. Does it related to Ocaml?
Unrelated, I've been thinking of picking up some webgl for some interfaces I want to make later, and maybe for games. Anyone played with it?
>>2086>Does it related to Ocaml
Yeah, the ML family is ths major representative of the typed lambda calculus and of type theory. Constructive mathematics is mostly done with another branch mostly in that family, of proof assistants like Coq or Agda.>webgl
I'm starting to learn about it. It seems more convenient than regular opengl, as I always struggle with details when handling arrays and memory in C++. But besides that, it's not a whole lot different, just a bit more convenient. I don't know if it is significantly slower, but the point is that it uses the GPU as well so once the primitives and shaders are sent to memory it shouldn't be that slow.