Ask HN: Bored working on same things as a software engineer

5 points by rajeshp1986 ↗ HN
Hi HN Community,

I am feeling bored as an engineer building API's, writing backend, front-end. As a software engineer, my job is mostly the same stuff. There are new frameworks and tech stacks but I feel I have been doing the same thing one way or the other since a long time. What are some exciting areas for a software engineer to learn. Something which is not tangential(a new programming language, tech-stack or a framework) but something really niche and exciting to learn? Something ground-up innovation which is happening right now and is exciting to learn?

5 comments

[ 0.30 ms ] story [ 16.9 ms ] thread
Here are two rando ideas from an occasionally burned out fellow coder:

1. FPGAs. Get your software turned into sorta-hardware. Very fast, and now, very cheap.

2. Reinforcement learning. Teaching a machine to optimally play a game - any game. Very complex rabbit hole, but surprisingly easy to dip your toe in. See my previous comment: https://news.ycombinator.com/item?id=24693277

Thanks. I liked your RL post. Will follow those links and try to play with it. Could you also provide more context about FPGA? what are some application areas and what can we use them for? Does it need any prior hardware knowledge?
FPGAs are good at fast signal processing of diverse sorts.

Example in industry are are cable modems (en/decode wideband signal), set-top boxes (decode/decrypt media), precision optical equipment, hardware-assisted algorithms (compression, crypto), military, ...

Anything complex enough to require a CPU and some logic, but single-purpose and requiring high bandwidth.

Well, you'll need to understand the basics of things like pins, and how I/O works, and I'm sure some fundamentals. Perhaps a 1 month journey through Arduino too.

But FPGAs are programmed in a C-ish language called Verilog (or VHDL) which sort of insulates you from the specifics to some degree.

Given my current interests, I'd probably try to translate a machine learning model into a Verilog program or something along those lines. But that's a combination of two complex things.

Maybe a good first project would be "make a really fast webserver" by embedding a webserver + TCP/IP stack into an FPGA. Or a really fast compressed columnar database engine.

Good luck! t

If you just want to make "electronic devices" I'd suggest a low-end Arduino device.

For $20 you get something that can turn a relay or program an addressable LED light strip or communicate with the computer in your car. There is an IDE to program it that is not too different from what you use on a regular computer.

There are FPGA devices that can take the place of an Arduino or Raspberry Pi that cost from $50 to $500 that have custom programmable logic instead of a microprocessor.

In the 1970s, Steve Wozinak designed a Pong game programmed in about 40 logic gates that would change the color of the pixel as the beam scanned across the TV.

Today you could connect that $50 FPGA to an HDMI port and make a video game out of logic gates the way Woz did, the tools are specialized compared to normal programming but better than what Woz had to work with.

With a more expensive FPGA you could make something like a Nintendo GameBoy Color by cutting and pasting an open source and/or commercial microprocessor design into the FPGA together with your dream logic.

---

Me the hardware I get into is "printing" in that I make some kind of art print every day.

That could be sending shutterfly photos to family, using a receipt printer to print anime art, printing 4x6 cards with information graphics, etc.

I fell into it by chance but understand now that it's a bridge between the world of digital images that I work in and often play in and the world of physical objects, things I can touch and share with people.