This might be a bit advanced, but indeed a very good article.
This might be a bit advanced, but indeed a very good article.
Same. Really happy with it.
I started doing exactly this. Write a bunch of functions, that may end up in different systems, on different machines, even. This allows you to define the interfaces, figure out data dependencies, and so on.
The code may be runnable, just printing out some statements. Then I copy blocks of it to the place where it will belong.
It’s more of a thinking tool, than “actual code”.
I have set up forgejo, which is a fork of gitea. It’s a git forge, but its ticketing system is quite good.
I know you asked about VMs, but fwiw there are GPU-capable containers now: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
Used one of these and the setup is as easy as it sounds. It can run Houdini, Stable Diffusion.
Fair enough, i thought it should be noted. The difference was significant at times.
Same here, SMB was significantly slower in our organization than NFS.
Matrix does support voice, and I found the quality to be amazing.
One suggestion - if you get 10 plain black t-shirts, then implement your style!
I am a dev who was focused on design and ux early on (this has changed as the needs of my work changed).
@abhideckert’s suggestion on how to analyze the needs is great. Now on to the implementation.
Similarly to development, you start out with some requirements - you need to show an input box, a history of inputs, and a sidebar with categories. You work out the layout (with wireframes, pencil drawings, etc.). Then comes visual style, which I guess is the thing you struggle with?
In both layout and visual style, you need to apply design principles, but ultimately the goal is to guide the visitor’s eye to the right places. This is where rhythm, repetition and contrast play a role. Basically highlight important elements, make the order of elements logical and not boring, avoid large empty areas but leave sufficient “breathing room” between elements, etc.
For visual style, you should make your own “style guide” that you apply to all personal projects. You can vary it a bit for each, if you are worried about them looking the same. Make that into a css file with a dummy html page to test. Add an input box, a textarea, select, unordered lists, etc. and style all of them to your liking. This guide will capture a lot of visual ideas, colors, spacing, which you can paste straight into your project. Do not sweat too much about stealing other people’s ideas - it’s an intrinsic property of art, and anyway it will probably not look 100% the same even if you copy it.
Edit: PS: spend some time just looking at the design and thinking.
Not always, i think. There are some SSO solutions that behave like this, and password gets filled in fine.
Just thought of an example. If you want to, you can open a file at macroexpansion time, and generate code based on its contents. There are no limits, pretty much.
Both languages you mentioned i highly recommend.
Lisp macros are another level, because they are part of the language - you can use all language primitives to transform forms however you like.
Haskell will give you a different view of programming. It’s beautiful and concise, and implements all sorts of academic research in languages. Ocaml is similar in many respects.
Lisp macros.
But I’d be curious of the possibilities of generating code with tree sitter.
Ditto. Pity that a “renaissance” education is not in very high regard nowadays (or I’m not aware). It’s where a lot of innovation happens, too.
Yeah all this free energy waiting to be harvested
Yes, it is. I find navigating s-exps way easier. Also it has some lispy features, and macros.
Nice. I am working on some improvements to parenscript, this might come in handy.
Not exactly the question you were asking, but there are also SDKs for closed source software. You can get a library, or just an interface definition you adapt to. It can be frustrating when you cannot peek a layer deeper into the system, and takes head banging, but it’s a thing. Often, if you are a significant enough client, you can get consulting or guidance from the devs at the other end.
Nowadays a lot more business software is open source (at least partially), because it increases adoption. People found that when you remove the stops, others will flock and build stuff around.
Another reason to use libraries is communication. Would you prefer to receive a GitCommitResult in your code, or have to parse the stdout of the subprocess? If you need complex communication with the other program, then it needs to provide rpc or some other form of inter-process communication. A library avoids this issue.
This might be contrary to some, but i recommend diagramming! Can be anything from paper doodles to d2 to full blown uml diagrams. They help you stay focused, and aware of the program’s data dependencies.
Regarding code practices - read code. If you use a library for something, dive into its code. This can be beneficial in many ways - you observe the style they used, you understand better how the library works (documentation rarely contains enough detail), and you see how libraries are structured, which is often lacking in newbies.
Learn your language’s idioms. They can reduce complexity, and are usually more readable to people with experience in the given language.
Finally, don’t sweat it too much. The more you write, the better you’ll become, so just do it. New problems lead to new insights.