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 - "miss git"
Okay guys, this is it!
Today was my final day at my current employer. I am on vacation next week, and will return to my previous employer on January the 2nd.
So I am going back to full time C/C++ coding on Linux. My machines will, once again, all have Gentoo Linux on them, while the servers run Debian. (Or Devuan if I can help it.)
So what have I learned in my 15 months stint as a C++ Qt5 developer on Windows 10 using Visual Studio 2017?
1. VS2017 is the best ever.
Although I am a Linux guy, I have owned all Visual C++/Studio versions since Visual C++ 6 (1999) - if only to use for cross-platform projects in a Windows VM.
2. I love Qt5, even on Windows!
And QtDesigner is a far better tool than I thought. On Linux I rarely had to design GUIs, so I was happily surprised.
3. GUI apps are always inferior to CLI.
Whenever a collegue of mine and me had worked on the same parts in the same libraries, and hit the inevitable merge conflict resolving session, we played a game: Who would push first? Him, with TortoiseGit and BeyondCompare? Or me, with MinTTY and kdiff3?
Surprise! I always won! 😁
4. Only shortly into Application Development for Windows with Visual Studio, I started to miss the fun it is to code on Linux for Linux.
No matter how much I like VS2017, I really miss Code::Blocks!
5. Big software suites (2,792 files) are interesting, but I prefer libraries and frameworks to work on.
For future reference, I'll answer a possible question I may have in the future about Windows 10: What did I use to mod/pimp it?
1. 7+ Taskbar Tweaker
3. Classic Start (Now: Open-Shell-Menu)
Enhanced text editor I like a lot more than notepad++. Aaaand it has a "vim-mode". 👍
Three way diff viewer, that can resolve most merge conflicts on its own. Its keyboard shortcuts (ctrl-1|2|3 ; ctrl-PgDn) let you fly through your files.
8. Link Shell Extensions
Support hard links, symbolic links, junctions and much more right from the explorer via right-click-menu.
Neither as beautiful as Conky, nor as easy to configure or flexible. But it does its job.
Of course this wasn't everything. I also pimped Visual Studio quite heavily. Sam question from my future self: What did I do?
1 AStyle Extension
2 Better Comments
Simple patche to make different comment styles look different. Like obsolete ones being showed striked through, or important ones in bold red and such stuff.
4 Atomineer Pro Documentation
Alright, it is commercial. But there is not another tool that can keep doxygen style comments updated. Without this, you have to do it by hand.
5 Highlight all occurrences of selected word++
Select a word, and all similar get highlighted. VS could do this on its own, but is restricted to keywords.
6 Hot Commands for Visual Studio
This ingenious invention colorizes brackets (aka "Rainbow brackets") and makes their inner space visible on demand. Very useful if you have to deal with complex flows.
Come on! 2018 and Visual Studio still outputs monochromatically?
That's it, folks.
No matter how much fun it will be to do full time Linux C/C++ coding, and reverse engineering of WORM file systems and proprietary containers and databases, the thing I am most looking forward to is quite mundane: I can do what the fuck I want!
Being stuck in a project? No problem, any of my own projects is just a 'git clone' away. (Or fetch/pull more likely... 😜)
Here I am leaving a place where gitlab.com, github.com and sourceforge.net are blocked.
But I will also miss my collegues here. I know it.
Well, part of the game I guess?7
Subversion should be burried so far beneath the ocean that even the oldest developer, who is so old that he can't even think about jerking off no more, because his beard is so long and thick as a curtain made of strong streams of wool, waying him done so much that his face would immediately smash down to the floor if he ever would ever again attempt to stand up, denying access to his wrinkled dick, can't find it no more.
And yet I still have to use it at my job.2
Two things before this all:
- I fucking love gitlab so far
- I miss the fuzzy searching from sublime text, as vsCode still can't do it properly..
I was fed up with all the shitty overbloated git deployment scripts, sync scripts, automatic backup solutions and hosted git servers out there, so now my own solution is:
- remote git cloned local files
- local files are synced via dropbox, to easily edit them on any device
- all changes and deleted files are saved up to 1 year on dropbox
- remote has gitlab running and webhooks setup
- the webhooks point to my node scripts, which then rebase the code to its dedicated dev server
- daily server backup with 7 days roll
- cold storage backup each 30 days
Sounds like overkill, but from my experience, you really can't have enough places that have a backup, especially coldstorage backups.
My goal in general though is to have everything on my computer backupped and ready to go asap, if something happens.
I wanted to just use a virtual machine for development stuff, but that wouldnt be able to run on my laptop, so I need a more general solution, where I sync all configs and all projects across. (and have some sort of basic list of tools needed, so I dont need to remember them)
Found for example something for vscode to sync its settings and plugins via any sort of git, will give it a try in near future too.7
Just learnt about openspades. Fully opensource FPS shooter game. Bloody amazing stuff.
Lots of hackers but admins are nice on most servers and will permban them.
As is usual with me i compile from git on the latest commit there is. (Dont want to miss out on anything)
I recommend you try it cause its really fun.2
How well do you speak git? Name all commands you know how to use 😄:
init, add, commit, remote, cherrypick, push, rm, rebase, reset, submodule.
Did I miss something?19
Right now, everything. I started at a Consulting firm because I expected many new problems to tackle, solutions to develop and generally to always have a fire burning underneath my ass but instead I always develop the same standard bullshit.
I miss the days in my old job when there was just a problem and the task to solve it. When I stared down giant amounts of data, just KNOWING that somewhere in that mess is some structure I could exploit and that short moment of inspiration when I finally pinpointed it. The rush of endorphins when the solution became clear and everything fell into place to form a beautiful pattern amidst the chaos test data, git commits and numpy arrays.
Now its just "Yeah, would you just write another selenium testsuite that throws out fail or pass and wastes all the information because the only reason I'm a testmanager is because I'm too incompetent to do anything else and not my passion for the field".
The constant, mind numbing repetition of always the same patterns where the occasional dynamic element that becomes stale is the highlight of my work week... I would have never thought that making good money with easy work would ever get me as close to depression as it did.6
Maybe you people will like this story.
The past semester I studied Java in class. First time doing object oriented programming, I had an annoying teacher but got the hang of it. I still miss C from the last year.
As a final project we had to do any program and apply some stuff we saw in class (The program should have an array list, use interfaces, bla bla bla bery simple stuff). It also must have a complete documentation, a manual and a diary explaining what was developed every week. Bonus points if it was in a repository like GitLab.
I wanted to do an RPG game in a matrix, like a rougelike or an old FF game, that should be a map or two, a few monsters and items and that's it. Enough to show what can I do and to have enough excuses to apply everything that the teacher asked. I had a team with two friends who wanted to do the same.
After making accounts in three different pages that apparently would help us to be more organized (One to make charts and two task trackers) I lost all patience and made an account in GitLab, made the basic classes that we had defined in a chart, divided the tasks and put them in to do on GitLab and we started to work.
One of my companions caused a lot of problems. First, he didin't wanted to learn how to use GitLab (I simply asked them to do merge requests) and he insisted to use GitHub. Then he started to say that using the console version was even better (Pretty sure he said thet he never used Git, but maybe was gas poisoning). The GitLab repository never had a single commit to his name.
BUT WAIT IT GETS BETTER all the entire time, he was complaining about the graphical interface of the game, wanting to use some SDK for RPGs that he found. I told him that we will see that at the end, that first we should have all the mechanics done, test it in ASCII in the console and then, if we have time, we will put the visual interface, separated and optional from the main program to avoid problems.
After two weeks where he gave me very simple standard stuff late, half done and through Google Drive, I discovered he was most of the time working on... the graphical interface SDK! He took the job already done by me and the other guy and making a pretty hardcoded integration with the graphical interface and making everything that he tought it would be necesary. Soon enough the GitLab repository was totally outdated and completly useless. He had the totallity of the project in his half broken laptop, and sometimes he gave us a zip with all the code, outdated after a few minutes. Most of the stuff that I made was modified, a lot of the code was totally unknown to what it was and I had no idea even of how the folders were organised.
We had a month to finish it. I got totally disconected from the project and just hoped for the best, sometimes doing a handful of generic and adaptable lines of code for a specific thing (Funny enough, many core mechanics were nonexistent). The other guy managed to work more on the project, mostly fixing the mess that the guy did: apparently he didin't read the documentation of the SDK and just experimented and saw tutorials and tried to figure out how to do what he wanted.
Talking about documentation: we dont had yet. The code wasn't even commented propely. We did all that the last week and some stuff was finished the last night. The program apparently worked but I had no idea.
Thank God, the teacher just looked over everything and was very impressed by the working camera and the FF tiles. I don't think he saw the code or read too much of the documentation, much less when I directly wrote how I lost all access to the project.
I had a 10/10. I didin't complained. Most easy and annoying ten I ever had. I will never do a project with that guy.
I went to a vacation leaving my colleague a working code that she was supposed to use and commit as is. Coming back a week later the code is unrecognizable, not committed and doesn't work. Now I need to fix it again while she went home. Plus I hate it that we're forced to use svn, the change is 40 files strong already.1
Day #1 on THE other project. Nothing fancy, just setting up my dev env. Got a decent pc with all the required network permissions. And this time I got w10 [last year I was working there on w7 pc via rdp from another w7 laptop. Dont ask...]
of course no localadmin rights to set shit up. Downloaded all the installs, found someone who has admin rights to run them. I even managed to get admin powershell!
Ran all installers, enabled long paths support, env vars, tweak here, tweak there,... Installed git bash to at least have a taste of shell. Decided to try out wsl. Enabled the feature, didnt reboot right away.
Rebooted. 2xclick on ubuntu setup and I get an error claiming wsl is not ebabled. Wtf? Did I do it wrong? I see bash command is there now so I must have done it right. After some googling I found out that even though I can enable wsl, it doesnt work on my version of windows. It's too okd they say. Yeah, tx MS, that's very intuitive and user friendly!
Allright, my hopes to habe a decent sub-os died. Git bash it is :( but I miss tmux soooo much. Then I came across smth that caught my eye. Msys2 it's called. Apparently it's based on cygwin and has a pacman package manager! ´pacman -S tmux´ -- hippee-ka-yay motherfuckers! It's not the best terminal emulation, but it works quite allright and it has tmux. And netcat!
Banished to mouseclickerland still managed to find a good enough shell. Yayy!
So there it is. My first day's ups and downs, disappointments and discoveries.
If you know a better shell I could set up on w10, please, share
Git Submodules and Subtrees make me miss SVN externals. Normally I berate everyone that uses SVN (to be cool), but externals were simple AF
Just heard someone saying it's bad security practise to have composer and git on production server for deployments.... did I miss the memo?1