Git For Humans: A Easy To Understand Video for Working With Git

A few years ago, I was working on a team who had been working with TFS project for some time. They had just started a new project and decided to move to Git in the process. Git was new to all of the engineers on the team, myself included, but we continued anyway.

At first, everything seemed to work fine – Visual Studio’s built in Git UI did a good job of hiding Git’s power, and presenting it in the same way as TFS. However, we increasingly ran into problems; people lost work, or waisted time working though merge issues. Visual Studio was doing a fantastic job of hiding Git, and while this seems like a well-meaning and helpful thing to do, it was causing us issues in the long run, because we were didn’t know what we were really doing behind the simple UI.

I decided to go away and deep dive into Git. I found that by understanding the Git graph, it allowed me to demystify the Git’s command line and visualise & plan their impact on my repository.

I started sharing what I had learned with my team, and was frequently asked to run training sessions or solve problems. I really did find that by understanding how Git works, and visualize the operations, I was able to work much faster and with much greater confidence.

I’d love for everybody to see and understand Git in this way; it really is a wonderful tool once you’ve unlocked it. So, I decided to put together a video to share how I see Git.

You can watch it above. This was a fascinating learning experience for me; setting up the recording and learning how to efficiently edit large projects (shout out to my video editor friend who’s brains I picked several times!). Constructive feedback is, of corse, gratefully received.

As ever, you can get in contact by commenting or on Twitter / Mastodon

Finding Your Happy Place: Demystifying the Challenges in Frontend and Backend Development and How You Fit In

Software engineering is a very broad profession with many different types of work you can do, each with their own opportunities and challenges, but have you ever wondered what those opportunities are? Perhaps you’ve feel your work isn’t challenging you enough, or your not motivated but what you do.

A picture of a woman working writing code.

Photo by ThisisEngineering RAEng on Unsplash

In this article, I want to take you though some of the different places software engineering can take you, and what the opportunities, challenges and rewards are for each of them. Hopefully by the end you will be more equipped to understand the challenges and opportunities available to you and how you can shape your career choices around what excites you.

Front End & Back End?

You’re probably familiar with the split into “frontend” and “backend” engineering, you’ve possibly seen somebody exclusivity describe themselves as a frontend / backend engineer.

Separations like this are a good start, and we tend to think we have a pretty good handle on what they mean, but I don’t think they tell the whole storey. This separation makes the assumption that each of these categories is a fundamentally different role. However, the core challenge and activities in all of these roles is the same; you’re using your creative human brain to find solutions to problems and convert those solutions into code.

Or as a former manager of mine put it…

A post-it note reading "Design spec = Use C# to build epic s**t (secure, scalable, blah, blah...profit!)"

The biggest difference between front and back end development sits in two areas: The tools used to do your job and the problems you will be solving. Let’s dig into each of those a little deeper to see how they can effect the work you do.

Tools

No matter what you do, you probably use some kind tools, and those tools will be highly specialised to the task you are doing. For a mechanic these tools may looks like wrenches, screwdrivers or diagnostic devices. But for a software engineer these are more like the programming language, operating system, development frameworks and even development methodologies.

But here’s the thing: You are not your tools.

These tools exist to help you get your job done and may be different depending on what that job is. You shouldn’t allow yourself to become limited or defined by the tools you use. You chose them, you learned how to use them, but they are but an artefact of the problem you are solving not the definition of what you do.

The Problems Being Solved

The other difference is the actual problems you are trying to solve – the challenges you are facing on a daily basis. I’ve heard a lot of engineers over the years talk about how they don’t feel like their project is providing them with “real challenges”.

A image of a man and a woman working together on a computer

Photo by heylagostechie on Unsplash

For developers who work on the front end, this can often sound something like “all I do is call and API and render it on the screen; I don’t do any ‘real engineering’”. Whereas on the other side it can sound like “All I do is manipulate data and pass it to the UI; I’m too far from the real code that the user sees”.

Often when feeling this way, there is challenge available to them – but it’s not challenge that excites them, it’s not work that motivates them to get out of bed in the morning and go to work.

If this sounds sounds like you, perhaps you too are not solving challenges that motivate you. Understanding what challenges are available in different roles and knowing which ones inspire you most will empower you to make the right next move in your career (weather that be a new job, or a discussion with your manager to ask for different activities).

The Challenge Spectrum

So, it seems that a traditional frontend vs backend definition is not enough to articulate the different choices you can make to position yourself in a place to solve exciting problems and do your best work. Instead, I want to introduce you to the Challenge Spectrum.

The Challenge Spectrum spans from data & platform challenges to human & interaction challenges, taking in all possible roles you can occupy along the way, all of them as just important as the others. At several points along the spectrum, Ive annotated some example challenges you may face at that location.

Continue reading

An App To Transfer Files To The FlashForge Adventurer Or Monoprice Voxel

A little while back I wrote about how to use Cura with the Monoprice Voxel / FlashForge Adventurer 3, in that article I discussed how to create a printer profile and slice your models to produce a G-Code file. However, without using the bundled FlashPrint software, it was not possible to transfer the file over the network – instead needing to use a USB flash drive.

I wanted a lightweight app I could use to transfer files to my printer, so I’ve spent the last few weeks I’ve been building Adventurer Client to do just that. I wanted to use it as an opportunity to learn some new frameworks / technologies and I had a lot of fun building it. I thought it would be useful for other FlashForge & Monoprice users too, so now I’m ready to share it with you all.

Using Adventurer Client, you can connect to the printer, see its state and transfer already sliced gcode files to the printer.

Printer Compatibility

I’ve tested this with a Monoproce Voxel, which is a rebranded FlashFordge Adventure 3,  I believe this will work with other FlashFordge Printers too, but I don’t have access to any to test this. If you try the app with your printer and it works (or does not) please let me know 🙂.

Getting the App

Windows 10

If you’re running Windows 10, the easiest way to get the app is to instal it from the Microsoft Store here.

Windows 7, 8 & 8.1

To install the app on older versions of Windows download the installer (AdventurerClient-win.exe) from the lastest release here.

MacOS

To install the app on older versions of Windows download the macOS dmg (AdventurerClient-mac.dmg) from the lastest release here.

“Adventurer Client” cannot be opened because the developer cannot be verified.

Unfortunately, Apple requires that software running on macOS be signed and notarized so that they can verify its identity. Doing this would require me to buy an Apple Developer license which is quite expensive. Therefore, for the time being, the app is distributed unsigned (if I buy a developer license later on, I’ll submit this to the App Sotre). To run the app you need to perform the following steps, for the first run only.

  1. Double click on “Adventurer Client”
  2. At the “Adventurer Client” cannot be opened because the developer cannot be verified. message, click cancel
  3. Right click on the app and click open
  4. At the macOS cannot verify the developer of “Adventurer Client”. Are you sure you want to open it? message, click Open

Tech Details

I’ve published the app’s source under the MIT license on my GitHub. In order to easily support running on both Windows and Mac, it is implemented as an Angular app in an Electron wrapper. I was larning a lot about these technologies as I went, so if there are things that seem odd, your feedback (or pull requests) would be warmly welcomed.

Feedback

I this app is useful to some people, I plan on continueinf to tinker with it over time. If you have any feedback or suggestions, drop me a comment or a tweet on Twitter.

Buy Me A Coffee