Live data from Hacker News

Ask HN: HN people who write meaningful software, how did you learn to program?

news.ycombinator.com

31–40 of 76 posts

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#31
With so many people laughing at the infamous top comment of the Dropbox HN launch[1], I got obsess with the idea one day we would be able to generate Dropbox like UI for any protocol like FTP by implementing this simple interface:

```

interface IBackend {

   ls(path)            []file

   cat(path)           stream

   save(path, stream)

   rm(path)

   mv(from, to)

   mkdir(path)
}

```

So I open source my work [2] as a result of that thought experiment. Almost 7k github star later, there's about 40k users who use my tool every month to access their FTP server, SFTP server, S3, WebdAV and more protocols and was contacted by people in places I would have never dream like NASA and MIT.

That project is a few order of magnitude more impact full than anything I've done in my professional life and I'm super excited to the prospect of developing the idea further as file manager are an amazing abstraction. My mum can navigate through folders and click on files but I would have a hard to time to explain her what a tree is and a lot of complex system can be model as simple file managers. A good example which was implemented in Filestash [3] is a relational database, the db can be modeled as different folders, tables as subfolders and rows as file which can be edited and save back which would under the hood simply generate a bunch of sql queries

There's still a lot to do but at this stage, it doesn't make enough money to make it a full time job yet.

I learned how to code from a massive rabbit hole that started in high school while trying to make myspace pages look nice

[1] https://news.ycombinator.com/item?id=8863

[2] https://github.com/mickael-kerjean/filestash

[3] https://github.com/mickael-kerjean/filestash/blob/master/ser...

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#32
I learned programming my first computer, a Sinclair ZX Spectrum, using its accompanying manual [1]. When I wasn't busy playing games on it, I programmed things like maze generators and a connect-4 player. Then I studied Z80 assembly programming to make the latter run much faster. A few years later I started my Computer Science studies at the university of Amsterdam...

[1] http://zxnext.narod.ru/manuals/Basic_Programming.pdf

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#34
I am self taught, formal education in a different field. I don't know if this would answer your question perfectly but I believe whatever success I had in delivering technology came from curiosity. I remember always thinking about how things run under the hood. Always ask questions. Pseudo-prototype how I would deliver it myself. This would shed a knowledge gap in certain areas because I would not be able to plan a certain step/process. Then I'd focus on that area and learn. It all starts with a hello world.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#35

With so many people laughing at the infamous top comment of the Dropbox HN launch[1], I got obsess with the idea one day we would be able to generate Dropbox like UI for any protocol like FTP by implementing this simple interface: ``` interface IBackend { ls(path) []file cat(path) stream save(path, stream) rm(path) mv(from, to) mkdir(path) } ``` So I open source my work [2] as a result of that thought experiment. Alm…

Thanks, I’ve been looking for “Dropbox on s3” for a while!

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#36
I make PluralKit[0], a FOSS[1] Discord bot designed as an accessibility tool for plural systems [2]. A lot of people say it's really helpful to them, some even say essential, so it probably fits under meaningful :p It had massive growth the last couple years, going from 20k discord guilds to almost 500k now, making it one of the largest bots on the platform.

I was always interested in computing (to the point of asking my dad how to install linux when I was 6, not that he knew how to help lol) but only got started with programming (at about twice that age) when I started getting annoyed at how exactly computers worked, and figured out I can make them do different things with code.

I started working on PluralKit itself a few years ago - already a year or so after someone else created it - because I was struggling to find my own identity and this project helped a lot, and I guess I stuck with it! I hope to make it a full-time job soon, but I am very much not a business person and it's a bit of a struggle to figure out the details.

For me, code is of course a tool to make machines do things I need it to, but more importantly it's art - what I do is something that helps people rather than harm them (cough adtech cough), and I think that's beautiful.

[0] https://pluralkit.me [1] https://github.com/pluralkit/pluralkit [2] https://morethanone.info>

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#38
I started doing impactful things by listening to friends express a need for something (like a shopping cart for their auto parts catalog circa 1998) and just doing it (they of course offered to pay me). I had no real clue what I was doing in code at that time, and had to learn a ton to get the job done.

Looking back on my career, taking vague requirements and turning them into something useful after a hard slog through unfamiliar territory is pretty much the common thread in all my successes.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#39
I started programming when I was 7, in basic (very little things). In the school we had Logo when I was 8, I found that boring. When I was 12 I was programming ASM in the Z80. Later I learned pascal in the first year of secondary school, and C one year later. I was attracted to programming because I suck at arcade games. When all my friends where playing wanderboy or whatever, I was programming things. I enjoyed being able to create what my imagination wanted.

I learned a lot by trial en error, and I tried to get my hands in whatever document would help me to code better. I remember getting from a BBS a copy of the coding style of Linux. I found extremely insightful.

The good thing of learning to program in the 80s, is that some things that later became (stupidly) prohibited, were all in trend: RAII, normal naming of variables, dynamic typing... later the people when to stupidity and insisted in declaring all variables at the beginning of the function, naming conventions like hungarian notation, and strong typing... not everything is reverting to the normality.

Then in the university I learned C++ (C++98) and "OOP". I thought I knew what I was doing, even worked 1 year producing real software for automation of radio broadcasting automation (mp3 was still not a thing, we had all the music in big discs --4GB! :) and played form there). Also developed a presence server for Nextel Sprint, and a geolocation application, based on signal strength (when cell phones did not have GPS). Among many other applications, for billing, alarm handling, protocol analysis...

UNTIL: in 2010 I came across SICP. It was like "all you ever wanted to understand about SW engineering and nobody told you." That lead me to read the Lisp books like "Practical common lisp" and I understood I had no idea what OOP was really... Because how I learned to code, I always used already the "wishful thinking method". I tend to write the programs so that it is almost the algorithm I want to implement in psedo-code, and the go ahead programming the functions that I assumed exist, again with the same method. Each iteration in a new set of files, which represents a deeper (less) abstraction, until I get to system or library calls. Sometimes I made a wrapper for a library, so I start parts bottom-up.

FF another 10 years, working in a different country and industry, I see how important is to not be smart while writing code. Use KISS principle. More and more the idea of "write psedo-code" takes importance...

And I see how some industries, countries, or even continents, for some estrange reason, are 30 years behind in computer science. I see constantly people where I work defining all variables at the beginning of the function, using kind of hungarian notation, (no kidding, loop variable named nmp_CntIdx_si32), using inheritance for absolutely everything, the concept of "has a" does not exist, they insist in "is a" abstraction. I've seen inheritance chain of 14 classes, one after another, to make a Kalman Filter, which inherits from std::vector. Last but not least, they make every single function a template, because "you do not know if later you want to add the ability for other type". Mind you, is a BIG company, making "safety critical" software...

All that to say: yeah, what does "meaningful" means after all. I find more meaningful my beginning writing automation SW for radios, as the stupidity I do today...

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#40

An important lesson I learned is that meaning and complexity are rarely linked. The most profitable code I wrote for a company took under a week and truthfully any mid-tier web developer could have done it. The code with the largest reach (millions upon millions of people) was an afternoon script. I’ve lately come up with a term for meaningful code: Friday Features. Little things you do on a Friday afternoon that hav…

By the way, "Export to CSV" is the most meaningful feature you can add to any project, regardless of purpose.

I've found JSON is extremely useful in command line tools, but with CSV people try to handwrite parsers for it that can't handle commas in fields.
Post reply on HN