Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "wk128"
The project where I realized I wanted to go from chemist to pro dev.
I built a flow-chemistry spectrometer with monitoring backend in Haskell.
Spectroscopy is where you add a reagent to a glass tube, it changes color, and by measuring the exact color it tells you how much of something (for example, a toxin) is present in the sample.
I had to do that a lot on factory samples, writing down measurements using pen & paper.
I'm lazy so I decided to do the logical thing: Automate it. I bought a second hand spectrometer, stripped the casing, did a shitload of glassblowing and hooked up tubes to the production pipelines, so I could get samples, mixing them in the correct ratio with reagents in continuous flows using valves.
I ended up using 2 home-crafted arduino-like boards (etching PCBs is fun!).
One to calibrate the mixture against known samples and control solenoid valves to continuously cycle through various reagents and deionized flushing water, the other to record the measurements and send them to a server running a Haskell/Yesod API.
The server collected the information into InfluxDB (A time series database), displaying all data on a graphite dashboard.
Eventually I wrote Haskell plugins for most of the chemistry processes, from pH & temperature measurements to polymer property and pigment tests (they made a lot of printer ink).
Then I was fired because they didn't need chemists anymore, and the code "could be maintained by the intern" (poor guy)...
But I did find out that I loved functional programming, chemistry automation projects, and crafting my own electronics during that time.18
About six months ago I decided I wanted to learn to write a neural network from the ground up, using only the C++ standard lib. Had to learn some linear algebra, multivariable calc and a dash of wizardry.
The mathematics of neural networks is still one of the coolest things I've ever learnt. It still marvels me that you can make a specialized mini-brain out of nothing but numbers.18
My own language, hence my own parser.
Reinvented the regular expression before realizing it already existed (Google didn't exist at the time).
I'm a living reference for regular expressions since then.7
I think the coolest project I did was a few years ago, it was actually a Minecraft plugin.
I decided to learn Java for Minecraft, and a few months after I started learning Java, I was approached by someone who'd like to work with me to create this full-blown Gun Game style gamemode for Minecraft. I made it clear I didn't have the most knowledge, but I was willing to learn.
We began working on the project, the projects main class was bigger than any project I had worked on. Within a few months, it became one of the more popular plugins out there, even though we were still in an alpha mode. Had nearly 1,000 servers running the plugin, over 10k+ players total testing out the plugin.
Cause of this project, I learnt how to properly organize my code, how to make it efficient, learnt how to network, learned how to properly secure and verify anything being sent by the client, working with dependencies, adding features that can support a bunch of other plugins that other developers had, and a bunch more.
Sadly we couldn't finish the plugin anymore, so we gave someone else the source code who has kept it updated to this day. (I know I didn't provide much insight into what I'm saying and just gave a general overview, got a killer headache.)2
A recent project actually taught me how HORRIBLY STUPID it is to store large bodies of text in a SQL Server database. There were millions of records with pages of compressed text each.
More and more text records pile on every single day. Needless to say it was becoming super slow and backups were taking WAY too long.
After refactoring them out as compressed files to disk storage (I love you, micro-services) and dropping them completely from the database, the backup size went from 90gb to 3gb!
It's not every day you get to see a dramatic result like that from a refactor.
Lesson learned, and yes it was quite cool.6
Arduino, all the way...
I have a burn out for 3 years and a few months ago I found arduino.
Burned lots of money in components in the first months because I got so addicted.
No regrets, helped me a lot, been learning a lot and keeps me focused.5
I am a tester by profession, But I love coding. Sadly my organisation doesn't allow people of my profile to install IDE/ Programming softwares... So I had to work with what I had... VBA, MS Office...
I started to work on few small Ideas, then I and a friend worked on a macro which automates a 5 year old manual process... It became a Hit ! It changed the whole process... My manager started to highlight it everywhere... Other manager started to come to us for helps....
So I learnt MS Excel Vba, then MS Access vba... started to become an expert...
Now the whole onshore and offshore management knows us by name....
Now I made a virtual bot for my manager....
That small project paved the whole way of my programming passion...5
That time I joined the robotics club and made the pid loop for the robot was one of my favorite projects. I learned ROS, and I created the entire chain of software and hardware to control six motors. That one project set up my experience for the next 4 years and led to a few jobs. I miss robotics.6
I once began writing a mobile game using LibGDX from "scratch".
From scratch I mean I didn't follow the suggested structure and made my own implementation of pretty much everything (collision detection system, parallax background scrolling, tiny physics engine etc ).
Now though the project is doomed, it taught me a lot , especially to not to reinvent the wheel.
Here's a screenshot to feed your soul:5
Writing an emulator for an 8-bit computer with 8-bit memory addressing in C. Or maybe writing a web server in C... Both were really fun and I learned a lot. (But I love C, so there’s that)2
I worked on a small project which required selenium for automation! Used the same technique to spam messages to friends in WhatsApp! 😂😂😂3
Finished the hacktober fest yesterday.. fastest 5 PRs I've ever made on my repos, I actually forgot to sign up at the beginning of the month.. I pity those who are following me.10
Plus looking through the docs and reading up about animations, I thought that was pretty cool and started playing around with it. Eventually I came to a project where I needed an interactive form and so I used jQuery to handle a lot of the UI work. My managers and the client were pretty excited about seeing how stuff can appear/disappear.6
the current project I'm working on. I'm learning Laravel and VueJS while working on it, and especially VueJS is seriously geeking me out. I've been in legacy land for far too long, and VueJS is heaven after that!2
Had a course in college where we had to write a clone of Foursquare. Straight up fullstack development. Was really nice
Learned tons about physics, chemical bindings, chemistry, and so on..
Even stuff like math behind music.
Having some time off is really valuable..3
Personal project: I design and build single-board computers with old processors like Z80, 6502 etc when I'm not being too lazy. A few run CP/M. One that's been more interesting in terms of digging deeper has been an 80C188, for which I've written a BIOS (despite the chip's built-in peripherals and interrupts being at non-standard addresses) mostly in C, which it can use to boot DOS from an image file on an SD card (bit-banged off the UART chip with FatFs). (Yes it's slow, but so is a 5.25" floppy.)
Work: My first project at my current job. Not particularly exciting compared to some stuff on here, but it got me into making useful contributions to the open-source CRM we used at the time. Was building a basic extension to deal with duplicated organisation names. So learned CiviCRM fairly deeply, a bit of Drupal, a bit of PHP. It's a shame we don't use that system any more, the community was cool.7
In a class i attended we learned about advanced image synthesis and had to write OpenGL in the exercises.
It was incredibly difficult and i put incredible amounts of time into it and solved the tasks and was incredibly happy when it started to work ☺️2
Creating cPanel plugins has been actually a lot more fun project than I imagined.
I created a plugin to bring Varnish Cache to cPanel, I had to learn supervisord, which is actually a neat project in itself and is powerful to contol system processes through software.
But I also had to learn a new language which was Perl, I am glad I did, I actually really like Perl and wish it wasn't so dead.3
By all means I've learned most of the cool stuff with a lil project me and my bro did. It was a platform for bot farm of one mmorpg. It had it all: schedules, profiles, bot groups, monitoring, analytical module [was still a wip], auto-profiling to fight antibot [sort of ML - it was analyzing patterns after our bots got banned and attempted to change our bots behaviour], etc.
Eventualy we came up to conclusion that a library we used for botting [the mocked interaction with an actor] was flawed. It seemed that its authors had a contract or smth with the game authors to reveal which actors are bots. We dropped the whole thing as rewriting the lib would be too big of a waste of time :\6
That one group project in collage, where everyone was "useful"... and several lonely all-nighters later I managed to get through the exam... a truly career defining experience...
That's why I'm now a cactus farmer.
Built my own IoC container for C#. This taught me way too much about SOLID principles and dependency injection that i could give lessons now 😂
I'm still using my own IoC in my projects... It's great 🤘12
Oh I've had loads (and still have) of projects that got me to learn cool stuff! To keep them separate, I'll post some in different rants.
The thing that has helped me most over time (it didn't teach me cool things but it's very useful in general) is that, when api's have rare limits and you need/want to use them more often than is really allowed: you write your own alternatives.
I've especially had this with a geoip api's. Needed one for nearly every project but hit the rate limits with every goddamn service.
Wrote my own in a weekend and no rate limit hitting since then!3
Last year I planned to start a startup. I've started many good things but not the startup yet.
* A new data format
* A new data type
* A new web framework
* A new concept for logging
* And many other opensource tools and libraries3
Worked on a WordPress Multisite project that required digging around to find ways to hook into areas that weren’t meant to be hooked, create and add custom core files that would withstand updates, ensure certain plugin capabilities were available even if the current site didn’t load them, and a variety of other black magic that I’m too fried to remember off the top of my head.
By the end of the project I more or less felt like a god in WordPress—There’s little I could ever want to get it to do that I didn’t know how to do.
Then again, this is all probably a long way of saying I learned some very bad ways to do things. Mercifully, it’s fully documented with PHPdoc blocks down to the loop level so that even a 3-year-old should be able to figure out the logic...
All this to say, I’m definitely ready for a new project.3
Every project I do at work.
I either learn some obscure command to get it working that I'd never come across or I learn some faster method of doing something or I just get better at structuring/writing code.
Having peer reviews has helped immeasurably and just going over old code that others have written and trying to improve it.
I fucking love my job.2
Earlier this year, we built a custom gift box builder for a local popcorn company. I had decided to use vue.js for the interface which was really fun to learn.
I hadn't used any reactive frameworks like vue before this project, but I was surprised how easy it was to use, and it was so satisfying watching the frontend change just by modifying the data. I was able to easily add little transition animations when the states changed which was really fun too (something that would be really tedious otherwise).
That's was probably the most fun I've had on a project in a while.
What I'm doing now, writing a JS library for a simple kitchen timer (like, something that can be wound up, is ticking, can be paused, etc). Here's a list of neat stuff I've learned:
Polyfilling as a lib author (I decided against it).
Packaging the lib (using Rollup, ES6 modules are totes cool).
Using flow to add static typing in strategic places (started appreciating types in JS since reading up on functional programming).
Modelling state and transitions using an explicit state machine. (Fucking finally. There's usually an implicit state machine somewhere, only spread out all over the app...)
Using mostly side-effect free methods, being very explicit about when and why things are mutated).
Test-first/TDD (ish) using Jest and the awesome Wallabyjs.
Freeing up mental capacity by letting Prettier format my code for me (it was hard to let go but totally worth it).
Started using git.
Did all work on Ubuntu after pretty much a lifetime of Windows (initially to separate work from gaming) and finally swapped MS Visual Studio for Atom.
When it's finished I'm going to publish it on GitHub, which will also be a first for me. Might try out some CI platform while I'm at it.
tl;dr: wrote some js, felt good2
I learnt something from every single project I made, but this one... it was really different, new language, new library, new hardware.
there's an infopoint in a place, that was really hard to use (ball mouse over a monitor)
make the screen be touch.
Developing the solution:
- after a bit of research I find out there's a library/project called OpenCV
- there are example programs that detect hands written in C++ (which I know) and Python (which I don't know)
- the whole infopoint works on a raspberry PI, with raspbian (I'm not new to linux, but it's somehow different, plus tons of customization)
So I spend like 3 weeks trying to understand how to make it work, at first, the webcam was on the TV and you could move the mouse just by shaking your hand, but it didn't work too well, so we tried making the webcam look at the screen and then calculate the differences between "no-hands" and "user-hand", but should have been calibrated, wasn't too precise... dropped solution.
put the webcam 30cm above the screen, let it just analyse a few centimeters of sight from the screen and it worked flawlessly, BUT it could just recognise the horizontal axis => had to rework the infopoint UI to make it dumb-easy
It all finally worked, I learnt python, openCV, a bit of photography
Then hated it all and decided to never do that again
Any individual project that made me learn cool stuff...
Maybe the kernelcheck project? It's a shell script that I wrote 2 years ago (it's still on my GitHub but the code looks kinda horrible tbh), and it really made me respect the stability of package managers, and the effort that package maintainers must put into it. Even a single package (the kernel) that you have to maintain the integrity of the .config for (the configuration file that tells you what options to compile in, as a module, or not at all) while on every new minor release, the config changes ever so slightly.. at some point I figured that I'd really need to do those compilations manually, to be able to supervise (and if necessary adjust) it in real-time. The ability for distribution maintainers to do this for thousands of packages.. it boggles my mind. Respect!
Last completed (so not something which is still going on) project i have learned a lot was for "digital- and microcontroller technology" classes.
I designed a tower which fits on a pc fan. In this tower there is a tabletennis ball and on top of it is a infrared sensor. With a Potentiometer you can set the height at which the ball shall float.
As microcontroller i took an arduino uno. For visualization i used SerialComInstruments.
Learned lots of microcontroller programming, pid controls and how the fuck a serial port communication really works.3
Learned how to make Command Line Tools using python because of this fun weekend project.
Link - https://github.com/itsron717/XKCD1
Was working on a game and I hated having to hardcode stuff I wanted to add so I started splitting it into external json files but by the end (and to an extent still learning it) learnt how to do mod support and simple user generated content, really cool stuff to learn about.
FredBoat, largest open source discord bot.
Making all the things work + making it scale when demand kept climbing was a challenge where we had to learn simple stuff like postgres, working with 3rd party apis, generally good coding patterns and maintainable code, but also rather advanced stuff like making the garbage collector play nice, profiling memory leaks and optimizing the hot path, as well as high level topics like cutting the codebase into scalable domains and services.
Every project i did actually. We learn new things every day. Even when you have done the project multiple times each time you learn new stuff since you want to do it better each time since you learn new things from another project and the loop continues.
A couple of years back I wrote what would be a strong contender for the title: the ugliest mvc framework ever written in php.
Bright side: now I know the pitfalls of mvc very intimately.
Brighter side: never have to work on that code again.
Now I can use ready made mvc frameworks and still know where to look if shit goes south.1
I mostly learn from myself and pick sectors to work within, thus far:
Sms ~ 2002
E-health ~ 2004
Workspace virtualization ~2011
E-commerce ~ 20171
The funny thing is that a lot of stuff feels cool when it's not you doing it. Once you've learned it, done it, it becomes mundane, easy, boring, simple.
All that I have to go on is the memory of my naive self who thought something was cool, before me doing it, and the excitement of the moment, to have done it. After that it feels like boasting to a fireman about putting out a candle with 2 wet fingers.
We're rebuilding out company's platform from the bottom up, and throughout this process I've learned a lot. However, the stuff I've done lately has fascinated me the most. We're implementing OpenOffice for converting files to PDF. Since I started with this task I've had to implement secure running of OpenOffice by sandboxing and queues, but by far the coolest thing was what I did today. I was trying to implement IPC, and damn was it fun. I actually ended up writing a full parser for raw byte streams, since we had to include some special information. It was fun 😁
Its my current one. at uni we have to do one big project that takes around one semester and is a collaboration with an actual company. so we have the project to create an augmented reality app for the hololens for blind people to orientate in a room with acustic feedback, just like bats do.
So currently we are working with unity on a hololens and a htc vive we got from the company, we are working with.
Because I am nearly blind too, this is just a gazillion times more interesting and cool for me. Really looking forward to the resulting software and I really enjoy learning all the skills in AR and VR.5
I'm working on a Web API for retrieving informarion of some sort (can't speak as it is a work in progress😝).
Before starting to work on this project all the experience I had was Desktop (C#, VB) and some SQL but now I'm learning so much more: REST, Asp.net core, nosql, GraphQL and more.
Even if I can't finish this project, still what I'm learning is even more valuable2
Made a node program that connects to a development board (like a raspberry pi) via rs232 and installs an image automatically.
Definitely the first Android app I decided to fork.
It was an open source OTP authenticator which hadn't been actively developed for 2 years at that point. At first I only did some small fixes and minor visual improvements but by now it's evolved into its own project with a lot of contributores and users on both Google Play and F-Droid.
When I started I had no knowledge of Java or Android development what so ever. So it basically forced me to learn lots of new stuff, especially once issues started to come in. By now I learned so much on this project that I'm thinking about re-writing the whole thing from scratch because I question some of the design choices from the original app I forked...
Definitely project life on this planet.
Being optimist helps a lot but I still have no clear answer who send me here.2
in the last few days, created a web app for a college event. dunno if it's cool stuff, but I learned a lot of JS. Also learned a bit about Google Cloud and stuff
The last one was this Overwatch League Android/iOS client I made in Flutter. Basically wrote two apps in less than a month and learned (and enjoyed) Dart in the process.
I also learned that I'd probably get into trouble if I publish an app which uses a private API without permission. Hee hee.
Really cool and exhausting experience, though. 5/7 😊
I think I've learnt something worthwhile from nearly every project I've been involved with. If I had to pick one however:
Started an open source project designed for projecting multimedia content during church services as procrastination from final year undergrad revision.
Fast forward nearly a decade, and I've learnt tremendous amounts as a result of starting it - dealing with everything from GStreamer on a native C layer, right through to WebRTC stuff (STUN, TURN, ICE, etc.) at the other end. What started as some odd attempts to show text and images on a screen in a user friendly fashion has grown tremendously, and is now used all over the world.
About two weeks ago, at my workplace, I learnt about Django deployment in Nginx server with Docker and Kubernetes on Google Cloud Console.2
Actually every project we learns something. Consider like, In very recent one project,
First time used bunch of bean classes with layered structure and JS mixture. Had fun and given me confidence for interview. Happy ;)
I've been given the task to write a website for our school, where teachers would post plans, images, polls... I decided to use this new technology called service worker. Been struggling a lot with just, but hey it looks like an app and works offline.
It's really something anyone can add to any website in a week, but the advantages are quite a lot2
Created a docker stack that can run on a swarm, tried out an actor system framework with a really nice message passing interface, used a web server framework built on that actor framework, used a really cool ORM that relies heavily on code generation, did some experimenting with Alpine Linux, and re-learned for the 100th time how to deal with CORS
Setting up my HTPC allowed me to learn how to set up a nextcloud server. Time to start saying goodbye to Google!
if i am NOT doin any proj and i am just learning and solving problems on competitive websites like codechef , hackerank etc.
is it a bad thing ?
or should i just continue learning this way?
P.S I AM TRYING TO BE A SELF TAUGHT DEV !13
With each project, I got new teammates who have different ways of working and thinking. So, it's quite amazing to learn how to work together with new colleagues, to share new ideas, new skills, and even to challenge some technical subjects I thought it was obvious/easy that turn out not quite as evident as they look like.
I do not only learn some new coding skills, patterns, principles, tools, but I also learn a lot on the soft skills side. I got some teammates who have deep empathy and are easy to talk to (for various subjects, from common subjects to some serious ones, e.g. how I shared my feelings on my position on the team, told him how I felt like an imposter and he could really listen and advise me). It's really from other peers that I can learn the best.
Sure, if you stick with your team for a very long time, you know how each teammates work and you can "optimize" the way you work. However, by having new teammates, you get the "diversity of knowledge", you get to learn new ways of coding, of working as a team, of communicating, ... to improve yourself to be a better coder and a better man/woman to your peers (cheesy line... I didn't know I could write one duh).2
Chat Journal. A chat-based journal application.
An android app I built past month using flutter and flask for the server.
I started with flutter around 2 months ago. I believe it's the way mobile development is supposed to be. It's a treat for every mobile developer out there.
I used flask to build the server, database and even made my own analytics engine. Made an awaful lot of mistakes at the beginning but I think I'm improving at this day by day.
This probably is my biggest and definitely the coolest project so far. There's some saying
"If you have completed building 90% of something, there's 90% more to be built". It's called the 180% rule (or something similar) which literally signifies the difference between building something and building something well enough to be able to publish on the playstore. And this project taught me that.2
Some friends of mine were working on doing neural network image processing and wanted to build a social network for it. I got to play with graph databases, mobile app development, and neural nets. Unfortunately, project never took off, but it was fun nevertheless.
My first android app, it got me into the field of android development.
It was a simple wallpaper app for Android but it is my most precious project.
Wall Bucket is the name of the app (shameless self-promotion)
I had most fun with my first project that got me into programming:
Simple IRC bot in python, that crawled info about DJ, Artist and Title from internet radio and post it into IRC every time something changes. It took me about month or two since I had to learn everything from zero and I was so excited that it worked.2
Well I never got to program in a group during school, but the coolest stuff I learned in general was a bunch of networking exercises.
That time, years ago, during my internship that I tamed the beast, aka Drupal 7 Views... That alone managed to kickstart my carrier later on and land me my first job. Things were simpler then.
The integration of technologies project I have this year. Not yet finished but I already learned a lot of very cool stuff.
First, I learned a new programming language + framework (Ruby on Rails)
Second, for the first time, I implemented a continuous deployment pipeline with Capistrano and Travis ci.
Third, first time I programmed a Restful API.
And more cool stuff coming up ! :D
I freaking love learning !
Made a node js app that dynamically let users stir up websockets on their port choice for HL7 (healthcare messaging) message transmission as translation later before outgoing to a receiver they specify. Learned meteor, react, express, and mongo on this project. Lotsa lotsa new tools. And yes I know learning meteor was pointless F off3
Well, I've started programming only a few years ago, and haven't done a lot of projects.
I guess the best thins I learned was I preffer to do projects alone. Everytime I try to do a project with someone, one of two scenarios happen:
- We each do a part of the project, and only talk at the end. Normally everything works out fine.
- We can't agree on anything and, in the end, nothing ever works.
I think I only enjoyed doing a project with one person. We were learning vue.js, but I was staying behind and the guy I was with was okay at it. He would do most things, while i was watching him and he would explained what he was doing and why. Then I started doing stuff (very easy things) while he was watching me and guiding me. Telling me if there was a better way of doing something, or even if I made a typo. Basically, I would do something and he would tell me if it was wrong. We ended up making a (very) simplified imdb from scratch in, I think, 8 hours? Took us longer to choose the template then to make the actual project. Yes, he made most of the project, but I think I have an excuse on this one. I did end up learning a lot, I wouldn't pass that module if it wasn't for him.
Other then that one, I never had any good experience in a group. I would rather make everything alone, no one to disagree or fight with.2
Crypto! I've always thought of crypto as some complicated black box! How does it work, but then I did the cryptopals challenge and learned to exploit cryptography. What to do with this new found knowledge? Write new libraries and ransomware of course! So I present two projects that taught me a lot!
Pydhe, possibly the first(!!!) Open source diffie Hellman library for python. (Yea I know openssl, but they don't let you do diffie hellman without TLS. I do!) https://github.com/deadPix3l/pyDHE
And Cryptsky! One of the first ever fully python, opensource ransomware! (Again caveat, most open source python ransomware isn't truely licensed as OSS or uses some lower functions written in C)
When I was in uni (software dev), I'd have a subject where we would look at privacy. We needed to create a log with all kinds of traces we would leave behind: checking in at public transportation, paying with debit card at the store and so on. I was so lazy and I knew I wasn't going to get it done if I had to write down everything.
So I created an app in Swift 1, that would connect to Parse (RIP). That made me realize how awesome iOS development is, and made me continue my pursuit of knowledge. :)
First Android app in University. Actually it was a calendar application that was really shitty in the end because I wasnt confident with different layouts which led to big problems and performance issues later on. But its sth I can talk about in interviews until today if the interviewer asks me, which situation was really important to me as a programmer.
I've been working on an ERP system these days. Learned how to properly use AJAX and JS. Also, my code is so much organized now, I can really say I'm a better dev now than I was before and this particular project is making me give my everything everyday.