What are some fun or interesting projects you've worked on?

Heya gophers :slight_smile:

Just thought it’d be fun to find out what some fun or interesting projects you gopher’s have either worked on in the past or are currently working on now.

To get the ball rolling, one of my favorite fun projects was actually one of my first ever when I started learning Go, which I now use almost daily.

Pretty much, it stores a list of my favorite tv shows that I like watching and where I’m up to (season and episode number), then for each show in the list, concurrently scrapes certain websites which I use to tell me if there’s a new episode out and when there is, it automatically returns 2 links for each new episode, one to a page where I can stream the episode and one that’s a direct link to download it.

5 Likes

I recently had a project where I needed to wrangle some port security on Cisco devices. So I whipped up a CLI that used go-snmp to send sets to the appropriate OIDs in the right order to set, remove, and clear port security on the interfaces. It tied into SolarWinds for the desired state of the interfaces so all they needed to do was set a handful of interfaces to “DesiredPortSecurity” = “On” and my code did the rest.

2 Likes

One of the things I personally enjoyed working on a lot was the virtual machine I started (Rusalka). It’s still unfinished at this point, but it gave me a chance to take an older virtual machine I wrote and re-think the ISA and how certain parts of it were approached. The newer version borrowed a lot from Lua’s design in that the instruction set is much smaller this time around, owing to some of Lua’s interesting choices around how to keep its instruction set small.

As a result of using Go, though, every value in the VM can conform to a handful of optional interfaces. That means certain instructions make use of arithmetic or logical interfaces (e.g., LessThan/LessEqual/etc. comparators, bitwise interfaces, and others), and eventually it should be possible to have a Caller interface to handle functions exposed to the VM. As I said, though, it’s still unfinished — for example, I haven’t nailed down function calls yet (the structure’s there, to support it, at least), much less a calling convention, and there are other aspects I still need to think about (green threads, global storage, built-in data structures, and so on – things that’ll be influenced more by a language designed for the VM than other stuff).

At any rate, it’s a lot of fun to work on. Probably weirder than most projects, but still fun.

3 Likes

I really enjoy working on Golang News - a link firehose for Go stories that has been going for the last year. It’s been a great way to experiment with features like autocert, which is pretty easy to use and everyone should be using for their public facing servers. I have a few exciting features planned, including styled posts and a regular email of top posts and it’s nice to see a community growing (as it has been nice to see the one here responding to questions - I think this gobridge forum is the most beginner friendly place I’ve seen in the Go community).

Do you have a link for the tv shows project or is it private?

Excited to play with Go 1.8 as well when I get a chance - the graceful shutdown and sorting features look nice, and I really like the general direction of the Go language (small improvements to ease of use and speed on every release, no huge breaking changes).

4 Likes

Hey @kennygrant,

I check Golang News daily, so thanks for that contribution, it’s awesome!

As for the shows project, I’ve kept it private for a few reasons, but mainly because I don’t want to be a public part of people streaming and downloading tv shows that they shouldn’t be downloading/watching in their countries that aren’t readily available etc. :stuck_out_tongue:

I will say that even though it was one of my first projects which uses fairly subpar code, it still only took me only about 200 lines of code to get working. It relies pretty heavily on a few websites and a few Go libs to get working though and if they change, might code will also have to lol!

1 Like

Lately I’ve been putting a lot of work into gorgonia, which is a graph computation system for machine learning (primarily deep learning) like Tensorflow or Theano (but almost 100% pure Go).

I recently retooled the tensor package so it’s quite generic now and yet has superior performance to the older version - that was a fun challenge, and there are more features to add to that structure and package.

Also, I’ve been chipping away at adding CUDA related code into the execution engine(s) of gorgonia’s graph. Progress has been slow because the design has changed quite many times over the years.

2 Likes

Hey @chewxy,

Sounds really cool but also very complicated to someone like me :stuck_out_tongue:

I run a blog called Applied Go where I explore topics across IT and CS by pouring them into Go code. I enjoy this a lot, even though I have been blogging less often lately as my other workload has risen. Maybe I’ll shift to “smaller” topics (with less code), or to a mix of topics with and without own code, to be able to post more often again.

5 Likes

Hey @christophberger,

Definitely keep up the good work because I (I’m sure many others too) really like reading your blog posts there.

I always love the little animation things you add as context for the code examples haha!

@christophberger thanks for Applied Go, I’ve also enjoyed reading a few of those blog posts.

I’m working on a backup tool called restic. Sometimes I’m blogging about things I encounter, like Content Defined Chunking. I implemented a chunker library for that.

3 Likes

@radovskyb, @kennygrant Thanks, love to hear that you enjoyed the posts.

@radovskyb: The animations were part of the plan since day one. I got inspired from a flash animation that demonstrated how AES works - without any complicated math formulas or algorithmic descriptions! The original source seems to be lost, but there are videos of it on YouTube (for example, here). I was totally amazed, and the idea of explaining things through clickable animations got stuck in some corner of my head until the time came where I decided I want to blog about Go. An that’s why I include an animation in almost every blog post. Plus, creating those animations is fun! :slight_smile:

Edit: I might have found the original Flash animation here – note the tiny “[ view ]” link at the end of the paragraph starting with “The Rjindael Animation”. If your browser still supports Flash, you should then get an interactive demo of AES.

1 Like

Restic is a great tool, I have been looking at it for the purpose of doing secure remote backups. Given the current version (0.4.0), can restic be considered production-ready?

I’m very confident in restic, and I’m using it to backup my personal data, so I consider it production-ready. Several users reported that it works well with large sets of data, up to a few terabytes. However, restic is still a young project (I started working on it in early 2014), so there are a lot of things to improve.

The most important thing here (at least from my point of view) is not the code itself, but rather the repository format. We have a design document which describes the data structures independent of the code. Users trust us with their data, so it’s very important to always be able to restore data from a repository.

At the moment there are two things that are probably in the “annoyances” category when using restic:

  • Compression is not yet supported (but planned, with an extension of the repository format)
  • After removing old snapshots (manually or according to a retention policy), the prune command must be run which is not yet optimized, so it takes a long time when the repository contains much data. It is worse for high-latency links. A local metadata cache is planned, so most of the computation can be done locally.
  • restic’s memory usage is still too high (we’re also working on that, it depends mainly on the Go JSON encoder/decoder at the moment)
1 Like

Thanks for the quick and extensive answer @fd0. This all sounds very promising. I’ll certainly give it a try. Keep up the good work!

awesome :stuck_out_tongue: (p.s. that video is really cool lol)

Love the idea of restic, will be trying it out for some offsite backups soon.

Woohoo! A new favorite Go blog for my roll. :slight_smile:

2 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.