As someone who just started university studying CS as well, I really appreciate you writing this blog. I recently went into a bit of a p(doom) spiral worrying about CS, uni and maybe sort of an existential crisis and I had an discussion on HN with a more experienced person about it which went into similar topics[0]
Also, I wish for your son to have a good university experience and hope he makes great friendships and connections which help him throughout his life and I wish the best for his future and to enjoy the present as it happens :-D
There are lots of similarities currently within software engineering and mathematics and a lot of analogies which apply to Software engineering apply to mathematics and vice versa.
> At least for now someone still has to decide what to prove and why. Like why are you trying to prove that thing to begin with? Presumably it's a step along some journey, right? Maybe the journey is where you need to start deriving your satisfaction from, then.
Beautifully said. I had been thinking about the same thing and the analogy b/w CS and mathematics and these were some that I had found:
1.) to prove/disprove from the proofs that OAI created, you needed an mathematician to do so and OAI had to withdraw three mathematical proofs.[0]
But it was only because an expert within the field could verify if it was true or not, I feel as if software engineering is the same as well. We are/can be paid to prove/disprove if a software is working as intended or not.
2.) for someone to be that said mathematician who disproved it, he had to learn the basics of mathematics and multiple branches of it to then perhaps specialize in one thing that he most strongly resonated with and within all this learning, there was some struggle definitely involved. They had to learn algebra etc.,
this analogy can also extend to how we teach children algebra/calculations and other things even though we have had calculators for a long time, yet, we teach children how to do calculations because it is still valuable enough and either teaching maths can help them perhaps in future make a mathematician or it can help them be less reliant on simply calculators and more confident on on the spot calculations and help them within this skill.
As knowing calculation has become the norm rather than exception, even though we have calculators. In fact knowing how to do calculation by hand can perhaps better help you write a problem to calculator. Knowing the technical aspects of CS can help you express a problem to AI with much more depth and effectiveness as well.
+1 for handy and then using LLM's for the cleanup pass, though what are your observations on feeling as if sharing that output though?
Because I have seemingly mixed opinions on it, on one hand, I did put the effort but on the other, the output is AI generated so I am unsure about sharing it with others (because they might think its AI generated)
Do you use it for very small edits (removing just the uhhm's?) or for slightly more edits.
The way that I use it sometimes is that while thinking, I will write something which can sometimes make me feel as if a better re-write can better explain my thoughts or rephrasing it as such. For example. I will think about X topic, connect it to Y, then try to add some more points about X again.
I found LLM's to do a really decent job at generating the final outputs as such, but as I said, I am left sometimes feeling a little confused as to sharing it or not because of it being AI generated and the end user not knowing if I put an actual effort into creation of it or not.
Should I try to share the actual transcript of it as well, I really wish if some good ethics and internet ettiquette could be established about it.
"what are your observations on feeling as if sharing that output though?"
and "Should I try to share the actual transcript of it as well, I really wish if some good ethics and internet ettiquette could be established about it."
could you rephrase the question
for STT, it's literally you saying it, with a model transcribing, and then another model correcting a little, and you also have control over editing it. I don't think any of the arguments on "etiquette re: sharing AI output" apply here.
> for STT, it's literally you saying it, with a model transcribing, and then another model correcting a little, and you also have control over editing it. I don't think any of the arguments on "etiquette re: sharing AI output" apply here.
Yes, for doing extremely mild edits (like just removing uhh's etc.) this might be true
but I sometimes feel as if writing can allow me to shift paragraphs, so if I am writing para 1, para 2, I can shift back to para 1 and write another sentence in it and edit some parts of para 1 to include that point
but when I am doing STT, although I can move towards the other para, I find myself just speaking in a complete flow and just write in para 2 only.
Thus when I ask AI to write, I would prefer it to move the statements to appropriate paragraphs and in just general, create a more comprehensible viewpoint from all the STT text that I had written.
This does generate AI generated text which can be detected as such. Uploading it on blogs makes me feel as if people might read what they might consider "AI slop" and so the ethics part (as I myself don't wish to read AI slop)
the problem with AI written or edited texts is that I am unsure of how much effort the other person has put in (just a single prompt or a detailed thought was put in), and I feel as if, others feel the same way.
Should one try to show the rough draft as well to try to show that it was an effort which was human generated or that human effort was used, but that means having a proper disclosure that it was AI-generated/AI-assisted, which I feel as if offputs a lot people (including me) as because of the above logic, that there's still friction for the user within testing if real effort was put into place and I am unsure how effective sharing drafts of it could be.
I don't want my blogs to be tainted and treated as AI-slop because I care about them so I am unsure of what to do. I have multiple things that I have written which if I pass through AI can create some meaningful blog piece but as it stands, they are rough drafts and I find myself putting low efforts or being lazy in actually editing them myself as well (and potentially putting in multiple hours) when AI can be used to help create a more polished version just as well and get across my point.
This rather didn't take long for OAI to create*, I remember people giving opinions and discussions that it won't take too long and that openAI should do it[0], so looks like they were right.
Interesting to see where all this leads us and if other major labs follow suit
Edit: decisions voice looks really interesting as well[1]
Decisions voice isn't a product for anyone else who was confused: it's a canned guide for hooking up a voice model to the decision model browser use thing
(I am currently 18 so you have actually been coding since more than two times my whole lifetime so y'know there's that.)
I wish to ask you for some feedback and clarity and further concrete resources because I feel a little confused/lost regarding the whole vibe-coding situation, I wish to say thanks in general though as nonetheless your comment finally made me concretely express all the nuances brewing in my stomach about vibe-coding and how I often nowadays feel as if I may be falling behind if I don't know how to do it "accurately", I would love and really appreciate to get a more in-depth response if possible.
I have said the same thing as you have said as well sometimes if not mostly that AI is a tool which should be used sensibly (as I think that this is what you are intending to say as well)
Within the contexts of vibe-coding though, I would really appreciate it if you could explain to me in more depth about the whole process and workflow that you follow if possible and how much drastic change has that been in. I would love some concrete examples or repositories or just some pointers that I can help to improve myself further.
Here are some other thoughts that I have on the matter:
When you mean design review, are you just architecturing suggesting it the main architecture itself, for example. I mostly do "create me a golang web application which uses htmx/templ/modernc sqlite about XYZ" and then create a more detailed prompt from it which I then pass onto the agent to complete and give me a single binary at.
Most often than not though after this point, I haven't felt the need to change the architecture after the first initial setup and afterwards I point the changes that I wish to be done like "I want X1 Y1 Z1 changes" and if it breaks something then just showcasing what breaks, and taking feedback then "it just works"
The architecture sounds solid to me, I love golang as a language and I run multiple such apps on same 500mb/1gb ram servers and use cf tunnels in the middle.
For styling, I mostly prefer monospace-web theme because that's what I personally really like a lot but recently I found that giving first prototype to chatgpt and asking it to generate image then it can create a decent UI as well.
So what are the things which I should do though now? Should I attempt at reading the code and trying to understand it completely (I think that golang's mostly standardized method of doing things helps in reading AI code) or should I treat myself as thinking more about (seams?) or other technical terms that I found described within obra/superpowers or matt-pocock and other skill driven development oriented stuff.
Can I learn these stuff through AI itself as well and I wish to generate my own projects as well because I still believe that there's some joy in that as well as I find vibe-coding to be sometimes a bit hollow[1] [not sure though as the atmosphere has changed, earlier people used to be extremely critic of it whereas now more accepting]
I can be wrong, I usually am but what I am finding the most shocking is that although we are constantly seeing new tools and I try to be more well aware of them and always curious about it, yet I don't know at the same time where to actually proceed because the projects are just being built enough yet I don't know if I am doing standardized practices enough or how to really meaningfully improve such practice if vibe-coding is really such valuable then I would prefer to learn the more technical way of doing so and how experts within the field actually do vibe-coding.
Thanks and have a nice day and I would love to hear your/the community's response.
Greybeard coder here. There are two separate problems you get to solve. 1) If AI writes your code, you didn't learn anything about the code. 2) If you don't use AI, you won't learn how to use AI. You need to learn how stuff works and how to code well. And, you can't do that passively. If you didn't type it with your own fingers, you didn't learn it. And, that includes learning "How to use AI?"
You want to learn web dev? Start typing HTML and JS. You want to learn how to use AI? Start typing specs and prompts. You'll need to learn both. But, you can't learn web dev by typing specs and prompts.
You can learn using AI as a research assistant, a tutor, a reviewer, a critic. You can use it to bang out quick tools, prototypes, deal with the hassles that are not your focus at the moment. But, whatever you are trying to learn, you need to do the actual implementation manually. There is no such thing as passive learning.
Thank you for the response, I have a few questions that I would like to ask now as well which jumped on top of my head which I would like to ask though to get more clarity at the same time.
What is the exact learning of the topic that I have to do in it, for example. I can (and I will) learn webdev about valuable if vibecoding becomes the norm (as it is becoming nowadays)
Now I will learn the basics, then intermediate, then expert. Where exactly do you think that the value lies in?
ie. are the advantages put within getting from beginner -> intermediate or to complete beginner -> intermediate -> expert
Another thing is the level of fields that you have to be in or the whole question could perhaps be framed as being the jack of all trades or the master of one? Is this going to be like typing speed [90 wpm vs 130 wpm is somewhat negligible effect] or like chess [ 2100 vs 2400 isn't negligible and becomes exponentially harder when you become expert yet the difference will have genuine real impact maybe?]
Also within the process of vibe-coding, what is the actual value that I am adding given that I have learnt the skill, what I think might be is that I can actually verify if its good or not instead of asking a chatbot [which might be sycophantic or might miss the devil in the details], and say its okay.
Also, how do people naturally move away from the natural tendency to just... not read what AI is saying (when I tried obra/superpowers etc.), this video[0] tries to showcase what I am suggesting perhaps but I feel as if its still quite a slippery slope.
I hope that this question can be taken in good faith (because I like learning about CS for the sake of learning itself) but aside from that, why learn HTML/CSS is still a question that I can perhaps ask, similar to why learn assembly[1], and to what level, and will it help me in getting a job and if that helps in what I will actually do in job, and if so, then how? if the job done via vibe-coding as well. [I think this might tie to the previous questions that I have asked]
I do agree with the overall premise and learning can't be passive granted. Learning requires some form of active involvement which includes the phase of struggle (I think), yet that struggle is done for something meaningfully better and has a purpose. What AI does to many is question that purpose, why learn?
The issue I find which is why I am coming to this again and again is this, I am unable to find how the improvement within this corresponds to actual work/job or in actual terms how so.
Also, what happens if suppose the difference between an expert person with extreme knowledge and a normal~ish person is that it might take normal person is some more time/prompt/tokens to debug the issue with the models itself. Like it might take 2-3 more prompts to fix the issue.
I am finding people with varying opinions on how even the most expert people on some topic are agreeing that most AI can do it good enough already with vibe-coding, whereas some generalists who might not know the other language are porting their projects in it with vibe-coding.
In general, when approaching learning as well, I am not sure which to approach first: the thing which might be approachable (so for example: after HTML/CSS/Js Python, Django [thanks @simonw], golang's complicated full stack application)
and what if I might not like JS so much and python only enough but golang the most ideologically but my skill level still matches mostly python and its what I am most proficient in writing by hand?
I am personally going to go the learning path (the hard way?), I don't know if its the hard way or not but I wish to learn programming quite deeply even if just for the sake of itself and making my brain think about problems better
but my mind does still wonder if people on the other side could be right as well, does everyone need to learn deep ends of programming if programming becomes simpler or operates via just words, similar to how in previous times we used to have a lift operator and now we have all become a lift operator with the press of a button.
My opinion on vibe-coding has been this for quite sometime now: I do vibe-coding not for learning but for if/when the end results/prototypes matter more than the process but I absolutely DO NOT want to do vibe-coding if learning is the goal. before college, I didn't even have time to properly pursue the learning phase but I will now have the time and I will chose the learning path.
Also, when someone suggests that vibe-coding is all good if done right and alright when you do it this particular way or that particular way which causes my mind goes to this chain of thought and I feel a little confused.
As such, many of these thoughts float into my head when someone mentions this and it makes me wonder what should I do to achieve that and the other goal as you mentioned which was learning itself, it makes me question both sometimes if I am feeling p(doom). Learning as in, for all the reasons that I explained above and vibe-coding as in feeling shallow and hollow.
I am extremely sorry if I am being unable to succintly convey what I am trying to say and for the longer post. I really don't know how to express this particular thought because its all over the place. I hope that it's okay though and I might not have wasted the time and thanks for commenting and have a nice day.
[1]: (although there are still good reasons to learn assembly imo, I recently vibe-coded/[vibe-forked?] a scratchpad application in assembly as a way of messing around with AI.): https://github.com/serJaimeLannister/rhunpad
It sounds like you're maybe in a bit of analysis paralysis, trying to find the optimal way to move forward. If you stay in that frame of mind, you'll spin your wheels for hours trying to find the best way to approach it, and then never actually approach anything.
My advice would be, as hard as it might seem, let yourself go slow and just do things. Spend a few weeks on webdev, or learning aseembly, or playing with AI. As long as you are engaged with whatever you're doing, that is enough. You will, via repeated exposure to smart people doing hard things, learn how to navigate and overcome all kinds of problems.
I actually disagree a little with the previous commenter about learning how to use AI. While that is useful, AI becomes second nature once you have been exposed to all these other things.
I write a lot of C++. A long time ago, I learned the basics of writing assembly. Even though I haven't written much assembly, it still helped me a lot over the years. I understand how it works. I can read the assembly output of my compiler and judge how well my C++ translates to machine actions. I can debug individual assembly instructions when stuff isn't going as planned or the C++ is not available.
I write a lot of high-performance code. To do that, I had to learn the details of how devices (drives/NICs/GPUs) work, how buses (PCI) works, how RAM, CPU caches, instruction pipelining work. Now I know how to structure data flow to work well with the machine instead of against it.
I write a lot of APIs. In doing that, I had to learn the hard way about how different API trade-offs drive client decisions. How to foresee problems in the future stemming from interfaces I'm writing now. How to argue with clients to get them what they need in the long term and not just want they want for the next milestone.
At all of these levels, I had to learn how each level works by doing it. By trying it lots of different ways. And, by optimizing it all the way down from "More productive client discussions" to "More performant assembly instructions" :P
Now whenever I do vibe-code, it's because I know exactly what I want and I can get AI to type it faster and with less RSI (carpal tunnel). Or, I know I want to prototype a few options rapidly before committing to implementing one design for realz. In neither of these cases am I telling the AI "Make it performant and easy to use." Because I know how I want to structure the code to make it performant. And, I know how to set up the API to make it easy to use. So, I'm telling the AI how to structure the data flow and how to set up the API. Because, if I didn't, I'd just be generating a big ball of noisy mud that's neat to gawk at, but has no long-term value.
So, what should you learn? You need to learn how the stuff you are interested in actually works under the hood by experimenting with it manually. Not just "Hey chat, make it work somehow..." You need to focus on architecture and systems thinking because otherwise you won't know how to prevent AI from holding your hand deep into a maze neither of you can escape from. And, you should be spending the majority of your tokens on step-by-step refactoring, never one-shotting. One-shotting is for AI tech demos. Not for learning or production.
What lower-level language do you think aside from rust which can be more helpful for the purposes of being a compile target, nim/D both support garbage collection and non garbage collection, so would languages like these be more preferable
I really love gleam and its community and I would really really love if gleam could be more like golang though, which can help it in compiling to machine code
gleam language but with the developer experience of golang (cross portability/small binaries/fast compiled language which is fast to compile) is honestly one of my fever dreams and I would love to know if it can ever be a reality!
For that sort of compilation target more flexibility is beneficial, so C, Wasm, LLVM IR, Cranelift IR etc are better than Go, Nim, and D in my opinion.
> cross portability/small binaries/fast compiled language which is fast to compile
You don't need native compilation to build fast single file executables for a program, there's ways one can achieve this with Gleam today. Bundling the BEAM into your Gleam application executable with something like Gleepack is one option, and this will produce smaller executables than Go will by default for many applications.
Yes, or in general, I recommend them to create a blog (whether about this topic or about any other topic) as it can help them write and it's just a fun thing to do. Also I hope I am able to convey my emotion properly but "nobody on the internet cares!" so it can be liberating to write how you actually wish to write and to write just for the sake of writing and for the fact that if the process of writing could help yourself get better clarity or would have helped you get some realizations which previously would've been harder to get at.
I think that making blog posts is cool but there is just a lack of information about it or it feels like, "oh this is not for me, its for people who actually know what they are talking about or people much smarter/experienced than me" so I hope that they realize that its okay to still write the blog nonetheless.
[I am currently in first year of uni, so I had started my blog in high school and I remember all the things that made me not wish to start the blog, ironically this means that I have comments on hackernews which are more blog/article like], I wish to compile all the reasons to blog as a teenager list perhaps :-D
I think that I might be just 1 year elder than you but I am in first year of college and we had a prof com exam (just yesterday)
while preparing for it, aside from the slides, our sir had also given us a pdf and I just had the vibe because of the law of triads (AI talks much more in threes) and so I decided to give it to pangram to find out it was 77% written by AI.
The sir himself said that chatgpt is a tool and should be used in a good way rather than a bad way but seeing this and other things, I am unsure if how he used it was entirely good or not. In plain words, after finding that, I was unable to discover how much real effort was put in the pdf by sir and how much of it was just replacable (if not even better) if people just prompt it directly themselves.
I am going quiet frequently to the library and otherwise and the amount of ChatGPT/Claude which is opened is quite staggering and nearly every exam is involving that in some form or other and I was discussing just that or similar with my friends yesterday. AI has changed education in this sense (for better or for worse), I think slightly for worse in terms of that its making people lose trust in connections/relationships (teachers for students and students for teachers and vice versa)
But is also providing a way to customized learning when all else fails. I use it in my own studies and I think that it's good but also it makes me sometimes feel like I am learning something when I might not accurately be doing so and I think that learning still involves struggling with hard problems yourselves which well, the AI can't do it for you. Also I really really hate how sycophantic these models have become and I am observing slightly them being more dumb in the web intefaces
Example: chatgpt made an error within johari window and made hidden/blind swap their places in it yet still said that self-disclosure/feedback was vertical/horizontal respectively, so it was actually wrong in saying so and only because I had known the slides and read it all that I caught it.
Also welcome to hackernews, I hope you enjoy your stay and stay curious, I hope that you don't get hackernews addiction like I have gotten, haha :-D
Fluxer.gg is really good and in my opinion, tries to be the most similar alternative to discord in terms of UI/UX so it should "just work"
I highly highly recommend you checking it out, I must say that the first time I used it, I was mind blown that this open source discord alternative actually feels so usable in day-to-day lives.
There are many alternatives to be honest, stoat, matrix,fluxer but fluxer is the alternative I would recommend for public spaces.
The issue now is I think mostly just moving the userbase over to there.
[I have talked to the dev and tried to share it a few times on hackernews as a submission to help get more userbase as I think that HN would definitely love fluxer if it came to know more about it]
(Very slight advertisement but I have tried to build something in this space at https://mirror.forum which can allow a community to have discord,fluxer,matrix,stoat links in the same place for the purposes of discovery of servers in other places than discord and also for the migration of the userbase itself as i think that the problem of an open source solution is mostly solved and this was my attempt at trying to partially help in fixing the moving the userbase issue and making people more familiar with alternatives, though the website mostly has no activity nowadays and I would love activity to happen but I am unsure how to realistically approach so... that's why I am advertising perhaps, I would love to get feedback as well :-D)
I do dislike the fact that they nowadays use Discord though, there are better alternatives like fluxer.gg available, though I do understand that most/some people are already on discord and it has become more normal to create a discord server than other alternatives if one wants to which requires having members
which is much easier on discord.
As compared to the friction of another app even though they might be really great, I highly recommend trying out fluxer)
Then also if the developer has already created a discord server, then its hard to slightly migrate the existing users on their discord.
But I am sad about this development though, the community of open source or communities in general moving to discord does feel like moving to a walled garden (one which has increasingly more issues like trying to auto-detect your age and then asking for age-verification and plethora of other issues that a user is exposed to just by using the app which they might be using for the community itself, I really dislike it and I do wish if forums or something better could be used more as compared to discord.)
[Side-note: I built https://mirror.forum which is intended for communities to have both discord/fluxer & also other discord alternatives like stoat/matrix links to eventually help migrate users to these platforms and to help in finding the communities present in these spaces in the first place, I would love some feedback as the website is mostly crickets to be honest]
Also, I wish for your son to have a good university experience and hope he makes great friendships and connections which help him throughout his life and I wish the best for his future and to enjoy the present as it happens :-D
[0]: https://news.ycombinator.com/item?id=49981023
reply