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.58 posts and 18 image replies omitted. Click reply to view.
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.
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