Live data from Hacker News

Build Impossible Programs

jvns.ca

101–110 of 131 posts

Re: Build Impossible Programs

#101
post #79

I just wanted to share that everything jvns is saying here is true. In 2014, for the Google Summer of Code program, I applied to build a JIT compiler for the MoarVM virtual machine. (It is actually more correct to speak of my work as a JIT backend than a full-fledged compiler - the 'frontend' of the compiler was already under development when I started). At the time, I knew just short of nothing about compilers, let…

I would like to know, when you run into the situation that you don’t know was is going on with what you are building and feel a sense of confusion, do you:

1) Stop and spend time trying to get a clear mental model of what you are confused about

2) Push forward and try to build despite not understanding

In the past, when I tried doing super-ambitious things, I used the second strategy. Many sleep-deprived (tip: “sleep is for the weak” is BS) nights in which I accomplished nothing left me with a strong feeling that I should not try to do impossible things. However, since I learned the first strategy and have been applying it successfully to projects at work, I am rethinking this. I have increasingly been feeling like I would be able to be surmount large challenges if I first set myself up for success in terms of resources and people to ask for help.

Questions:

A) Do you apply a “step back and study” strategy to tackle confusion? Have you found it successful?

B) Do you have any more detail you could add on how it works?

C) How do you set yourself up for success outside of a work setting? For instance, I would like to write a server-side debugger for nodejs that is independent of google chrome and works toward a pry.rb-like developer experience. However, I haven’t written C since by OS class in uni and I don’t know the internals of node.js. How would I go about building trustfull relationships with people who know the internals of node.js so that I can ask them questions in the style of https://jvns.ca/blog/good-questions/

Re: Build Impossible Programs

#102
post #92

Earlier quoted context omitted.

Ruby on Rails is more than enough for your needs. Pair it with some simple HTML, plain JavaScript (no frameworks whatsover), and a database of your choice and you're good to go. Or you could use plain JSON with no database at all. No cloud either, just host it to a simple shared hosting provider. Don't be lured by the latest and greatest HN koolaid. Stick to the bare minimum. The more complexity you add to a project…

Is Ruby on Rails really a candidate for bare minimum? Part of the reason I backed off was the enormity of Rails. Part of why I'm doing this is to understand what's going on under the covers and Rails feels like it has a broader and more opaque cover than most other options.

> Part of why I'm doing this is to understand what's going on under the covers

You should work through the book Rebuilding Rails if this is your goal.

Re: Build Impossible Programs

#103
post #92

Earlier quoted context omitted.

Ruby on Rails is more than enough for your needs. Pair it with some simple HTML, plain JavaScript (no frameworks whatsover), and a database of your choice and you're good to go. Or you could use plain JSON with no database at all. No cloud either, just host it to a simple shared hosting provider. Don't be lured by the latest and greatest HN koolaid. Stick to the bare minimum. The more complexity you add to a project…

Is Ruby on Rails really a candidate for bare minimum? Part of the reason I backed off was the enormity of Rails. Part of why I'm doing this is to understand what's going on under the covers and Rails feels like it has a broader and more opaque cover than most other options.

With scaffolding, you can have a functioning Rails CRUD app in literally minutes. There is a lot of stuff Rails _can_ do, but not a lot of stuff you _need_ to do. You don’t even need to write a single line of JavaScript if you don’t want to.

rails new && rails g scaffold Movies title:string && rake db:migrate && rails s

Visit localhost:3000 in your browser and there you go. With that short line, you can CRUD Movies including a functional UI. Obviously “real” apps will require a bit more work, but not much depending on how complex you need things to be. The Rails Guides are super helpful.

If someone wants a more robust and production-ready intro to Rails, Michael Hartl’s free Rails Tutorial is exceptionally good.

Re: Build Impossible Programs

#104

Earlier quoted context omitted.

Is Ruby on Rails really a candidate for bare minimum? Part of the reason I backed off was the enormity of Rails. Part of why I'm doing this is to understand what's going on under the covers and Rails feels like it has a broader and more opaque cover than most other options.

With scaffolding, you can have a functioning Rails CRUD app in literally minutes. There is a lot of stuff Rails _can_ do, but not a lot of stuff you _need_ to do. You don’t even need to write a single line of JavaScript if you don’t want to. rails new && rails g scaffold Movies title:string && rake db:migrate && rails s Visit localhost:3000 in your browser and there you go. With that short line, you can CRUD Movies i…

Hartl's tutorial is the one I was working through. It's excellent.

Re: Build Impossible Programs

#105
post #92

Earlier quoted context omitted.

Ruby on Rails is more than enough for your needs. Pair it with some simple HTML, plain JavaScript (no frameworks whatsover), and a database of your choice and you're good to go. Or you could use plain JSON with no database at all. No cloud either, just host it to a simple shared hosting provider. Don't be lured by the latest and greatest HN koolaid. Stick to the bare minimum. The more complexity you add to a project…

Is Ruby on Rails really a candidate for bare minimum? Part of the reason I backed off was the enormity of Rails. Part of why I'm doing this is to understand what's going on under the covers and Rails feels like it has a broader and more opaque cover than most other options.

I only mentioned it because you said you did some research/learning on it. Seems like the best choice from all the technologies you listed because it is the more mature for web development.

Other than that, no it isn't necessary. You could start with plain HTML and JavaScript only. But sooner or later you'll have to choose one tech for backend.

Re: Build Impossible Programs

#106

But if it can be built.. then it's not impossible. Hence the topic should be "Build possible programs".

If you use a really large telescope, say, 3500mm, you might be able to spot the point, which you missed, about 3 light years from where you are right now.

Re: Build Impossible Programs

#107

This is so inspiring, thanks a lot. It's great to see that there are now resources going into supporting OSS developers that require only an idea and pedigree, and not a finished product and a business plan.

I had that thought as well. We need more optimism when it comes to programming. This talk inspired me to stop putting off my side projects because they seem intractable.

Re: Build Impossible Programs

#108
post #79

I just wanted to share that everything jvns is saying here is true. In 2014, for the Google Summer of Code program, I applied to build a JIT compiler for the MoarVM virtual machine. (It is actually more correct to speak of my work as a JIT backend than a full-fledged compiler - the 'frontend' of the compiler was already under development when I started). At the time, I knew just short of nothing about compilers, let…

Indeed. Mostly, it just takes time and getting familiar with whatever idea you're tackling.

I love to throw out crazy ideas. Most of them get filtered away, but I've gotten to prototype some initially unapproachable stuff:

* Generate a dsl for interacting with web pages in ui tests from the frontend framework templates

* Write a test recorder that lets you step through the browser state

* Write a Jenkins plugin to track who's probably broken what test

* Write a VSCode plugin to add run buttons to CodeceptJS tests

* Write a git hook that maintains two way synchronization of a folder between two separate git repositories (by rewriting & copying commits).

My co-workers see me do crazy stuff, but in actuality, it's not that hard. I would say that VMs are definitely harder than what I've done, but I think the concept is the same: the unfamiliar seems unapproachable.

Re: Build Impossible Programs

#109
post #29

Some of the best experiences I've had programming is when I thought of something I'd like to make, but it seemed impossible. Then I went and made it. You do that enough times and coding becomes like real-world magic. You know you can do it, you don't know how yet. Yes, there are places you can get stuck. Rules-processing, unstructured data, Markov Chains, ML, and so forth. But even that's a win. You start understandi…

It's rosy, but there are actual theoretical limits (like the halting problem) which act as a bedrock in that magic. Eventually we might find a way around, but we cant be sure of it now.

Even something like the Halting Problem does not rule out as much as people impute it to. It just proves you can't write a program that can analyze all programs, but doesn't mean you can't analyze some programs. However I disagree with your concluding sentence - the whole point of a proof is that we are sure of it now, there is no way around. I would instead phrase it as, we may in the future find that the things we're interested in doing need not run into this barrier, because we refine the notion of what we actually want to accomplish.

Re: Build Impossible Programs

#110

Earlier quoted context omitted.

Is Ruby on Rails really a candidate for bare minimum? Part of the reason I backed off was the enormity of Rails. Part of why I'm doing this is to understand what's going on under the covers and Rails feels like it has a broader and more opaque cover than most other options.

I only mentioned it because you said you did some research/learning on it. Seems like the best choice from all the technologies you listed because it is the more mature for web development. Other than that, no it isn't necessary. You could start with plain HTML and JavaScript only. But sooner or later you'll have to choose one tech for backend.

That makes sense. Thanks for taking the time to respond.

RoR feels like something I really should have in my toolkit anyway.

Post reply on HN