Hacker News new | past | comments | ask | show | jobs | submit login

In a recent humble bundle, I found Automate the Boring Stuff with Python [0] which partially answers this. After going through the basics of Python, it describes building small projects such as scanning an Excel spreadsheet and sending email to people who are marked as 'not paid'. Projects like this give a different perspective to programming. Programming is not only about building grand projects. It can also automate every day stuff which you wouldn't normally call a programming task.

>>> contribute to an open source project

It's a very very common advice and I believe a wrong one, especially to novice developers. It's simply... Not that easy. Yes, there are tons of projects but most of them are pretty damn large or mature enough so that easy tasks have been a long time ago. Some projects (e.g. servo) have web sites dedicated to new contributors where you can filter issues marked as easy but there are not many projects to choose from. You can look for small, less popular projects... But that's not an easy task either. Plenty of experienced developers have an issue 'want to contribute, don't know where' and they find it tricky, it's much harder for the novices.

[0] https://automatetheboringstuff.com/




+1 for Automate the Boring Stuff.

I was going to hop in and say I keep a pad of paper where I just list out any process that I find myself doing rote, finding myself doing more than once, etc. A lot of it ends up being really simple. A six line bash script that concatenates my shopping lists from three text files when I am going to the store. A little python script that walks through a list of domain names, calls dig and dumps the output into a log file. I try to spend my computing time just thinking about how I can get more done with less keystrokes.

I'm around seven years into my career and only now do I feel comfortable with the idea of contributing to an open source project. You need to first work on a team whose workflow is structured in the manner that these projects work in (small, single purpose commits, reviews, etc.) and if that's not habituated, then simply figuring out how to do that first is a mountain in itself.


I really like this comment. Things like "scanning excel and emailing based on some criteria" are exactly what led me to programming as a career. I started off small, moved into larger projects, made a career out of it. Sometimes it's nice to revisit the "little" stuff and build something cool that _you_ want to see done, even if it's just a Saturday in a coffee shop size amount of work.


In regards to contributing to an open source project, I initially had a very similar experience to what you've described. I do disagree however that it is hard to find smaller projects to contribute to. Especially in the realm of browser extensions, there are a tons which I use day to day that are open source, and that I've had the opportunity to contribute to.


If you convert to CSV, emailing the non-payers is a one-liner in Powershell. Even converting the XLSX to CSV is pretty easy with the Excel .NET libraries, and well-documented in blog posts and StackOverflow.

Sometimes, the bigger challenge with automation is getting users to see a service, function, or utility as the underlying algorithms and calls, and not as this immutable black box interface. Once viewed this way, it's easier to separate automation into more easily defined goals.

---

Foreach ($nonpayer in (Import-CSV ("C:\billing\" + (get-date -F MM) + ".CSV") | where {$_.pmt -eq 0})) { Send-MailMessage -from Billing@example.com -to $nonpayer.email -SMTPserver relay.example.com -title " Payment Overdue" -body "Hello $($nonpayer.first-name), your payment for $(get-date -f MMMM) was not received. Please send payment today."};

(I wrote this on the bus on my phone)


You probably don't want to be hard-coding the address of your SMTP forwarding host in a script. If you have to change to a different one, you will have to hunt down this sort of usage and fix it.


Yes, but if it weren't hard-coded, it wouldn't count as being a one-liner. ;)

Besides, it's rare for DNS names to change; the point of DNS is the underlying server addresses can change without changing the name. And a service like SMTP relay should be less likely to change than other types of host.

But still, good point. This could easily be a Param if the function would be used in many environments.


Oh the DNS name will change if you use your ISP-provided SMTP server and you change your ISP from Acme Internet Services to A-1 Networks. :)


Ah, that's exactly the kind of situation where you'd want a param with a default. As an example:

PS C:\> New-Parameter SMTPSvr -TopHeader -BottomHeader -ParameterType string -DefaultValue "mail.example.com"

        Param(

                [string]$SMTPSvr = "mail.example.com"

        ) #end Param


I bought that humble bundle as well, but I didn't know that there was a website too. Thanks for the information.


As an aside, it sounds like a potentially useful problem to solve, making it easier for people to contribute to OS.

It's incredible that we have highly skilled (and in demand) people who would like to work for free, and the problem is finding ways of letting them do that.


I personally reached a similar conclusion[1] and ended up building small little chrome extensions that solve some of workflow problems I face daily. This plus using zapier to automate the repetitive has brought back joy to programming as a tool rather than end goal.

[1]https://medium.com/@hu_me/how-i-got-past-trying-to-reinvent-...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: