To exclude a directory from git diff, use the following command:
git diff -- . ':!directory_name'
You can find this exceptionally terse answer at at least a dozen search results, but not a single one offers an explanation. Well, that's not enough info for me...
The "pathspec" is documented under git help gitglossary and is used for many git commands even if their syntax statement shows <path> instead of <pathspec> :
https://git-scm.com/docs/gitglossary#def_pathspec
Here are the important points:
The double dashes (--) followed by a space means end of command line flags. Without this, git may try to interpret your pathspec as a command line flag.
The dot (.) means the current directory. I don't think this is really necessary.
The colon (:) indicates that the characters which follow it are a "magic signature".
The exclamation mark means "exclude".
The "magic signature" should be terminated by another colon, but that's optional if the pattern begins with a less magical symbol.
I wanted to see what had changed in an Eleventy site, excluding the generated output files. So, here's the command I used:
git status -- ':!:_output'
Note that I needed to terminate the magic signature with another colon because the path I wanted to exclude started with an underscore (_). Without that second colon, I got an error message:
fatal: Unimplemented pathspec magic '_' in ':!_output'`
Getting a job in the current market is already a daunting task. I'm facing interesting and unique challenges. It seems impossible, but I'm wondering and hoping there's a way.
This is about me, specifically. If you believe that anyone can become a Software Engineer, I'm asking you to consider a different context. I'm facing interesting challenges, some of which are truly unique.
I used to think I could do whatever I set my mind to. It was true, mostly, but there were some obvious exceptions. For example, I never could've been a professional athlete. No matter how hard I trained I'd always be competing against people with innate talents I lacked.
## What is a Software Engineer?
A Software Engineer is an individual who is employed and financially compensated to create software which either supports or implements a product or service. There are other definitions, but this is the one I'm going with right now.
I'm not talking about an ecosystem, activity, philosophy, culture, or a way of life. Any of these might be called "Software Engineer", but I'm talking about getting a job.
## Network!
The most important skill and activity right now for getting a job is networking. Building a professional network is an essential part of any job search. Sometimes they even say that networking is more important than job skills.
This presents a bit of a conundrum for me because I have a personality disorder (read more about it: My Schizoid Personality Disorder) which makes networking very difficult for me, if not impossible. Like professional athletes, most people have innate social talents I lack. I have all the same tools, but no chance of using them as effectively as my rivals.
Having said that, I can form professional relationships with people. I just really like talking about solving problems and writing code. I'm not interested in hobbies or interests, even if they're similar to mine, and I'd rather not know about social / political / religious beliefs.
## Job Skills
While the priority of social vs technical skills may be debatable, technical skills are still important. Fortunately, I've got a pretty good skillset.
My proficiency with each of these would be a separate conversation, but I've worked with all of these technologies.
### Portfolio
I don't really have a portfolio demonstrating these skills. Or, I suppose you could say I have a very disorganized portfolio presenting hundreds of projects, examples, and demos that vary greatly in size, scope, and stage of completion.
I'd like to be convinced that building a beautiful portfolio would help me in some way. I could make a concerted effort to do it, but I think anything I'd make would be an embarrassment in comparison to the deluge of demos and examples created by technical "content creators" and "influencers". Polishing old projects and building generic demo apps has no discernable benefit and playing around with new technologies and techniques is more fun.
## Remote Only
I was born and raised in the United States, but I live in Malaysia. Local immigration laws and a disadvantageous political situation prevent me from working locally. I can't even work freelance for local clients. I can't open a bank account and, even if I could, I couldn't receive a paycheck because "Any form of employment is strictly prohibited" (stamped on my pass).
I have an American bank account and I'm still required to pay US taxes for any income.
Upwork, Adsense, PayPal and many other online earning resources are not accessible to me because my location and my bank's location don't match.
So, I can only work remotely for an American employer.
## Health
My health just needs a little consideration. I have a minor disability and I suffer from chronic pain and insomnia. I don't need any special accommodations, but it slows me down a little. I can still produce 40 hours of high-quality work per week, but there are others who can do the same job faster and for 40-60 hours per week.
## The State of Employment
The job market has been negatively impacted by a number of factors that are difficult to confirm or quantify, but we all feel it and most people will acknowledge that it's a tough job market.
There are some contentious points here, but they represent sincere concerns held by people involved in different aspects of the employment process:
- Competition: Every job has hundreds of applicants; Discussion at Glassdoor
- Fake jobs: A third of job postings are "ghost jobs"; Article at Forbes
- Unfair biases: Diversity, Equity, and Inclusion (DEI) policies often result in gender, ethnicity, or sexual orientation being used as factors in hiring decisions; Related Discusson on Reddit
- Applicant Tracking Systems (ATS): Virtually all employers and recruiters use ATS to filter out unqualified candidates, but most qualified candidates are filtered out, too. According to a study by Harvard Business School, over 90% of middle skills and high skills candidates are filtered out by ATS: This is a PDF file: Hidden Workers: Untapped Talent
If you want a tech job you should apply for hundreds of opportunities, write a custom resume for each position, connect with other employees at each company, learn in public & post about your learnings on social media (LinkedIn at least), and participate in tech events hosted locally within your community.
## Money
I don't care about money. Seriously! A lot of people are enraptured by the legend of the high six-figure Software Engineer salary, but I really just want to work and feel like my work is appreciated.
You'd think that this gives me an advantage. After all, I can undercut anyone's price. But employers will judge you based on your asking price. If it's too low, they think you're not worth hiring at all. And recruiters don't want to place a candidate with a low salary. Their commissions are based on starting salary.
Naturally, I want to get paid as much as I deserve, but I don't know how much that is. I'd work for minimum wage. For me it's about doing satisfying work. I like programming and I hate the petty manipulations on both sides of the hiring process.
## The Answer ...?
What's the answer? Can I get a job as a Software Engineer? Well, yeah! ... theoretically... I'm sure there are American companies with open fully remote Software Engineering jobs that I can do well. But, can I overcome my social ineptitude, bypass the ATS, and present myself as the best candidate among hundreds? ... I'm not so sure about that.
A random musing on the terminology we use to describe developers.
... unless you're some absolutely insane unicorn and can show it...
This is paraphrased from a Reddit discussion about Software Engineering employment opportunities.
I love that phrase! It ranks right up there with "10x developer" as someone who performs ten times better than an average developer.
"Unicorn", in any modern context is supposed to describe something that doesn't exist. It's a mythological creature like a developer with many years of experience in mutually exclusive technologies.
Not any more... Now, "unicorn" has a distinct definition in a financial context and I'll bet the redditor could describe a unicorn developer to me if I asked them. Likewise, I can search for "10x developer" and find courses that'll teach me exactly how to be one. People don't use these terms to refer to something that doesn't exist.
Well, it's still nonsense. Just like the "10x developer", it might be theoretically possible to become a "unicorn developer", but it's completely infeasible.
Think about the best developer in the world. There's no wrong answer, just whoever you think is the best...
Whether you're thinking about some overpaid FAANG engineer, an innovator like DHH or Linus Torvalds, an educator like Uncle Bob Martin, or legends like Kernighan & Ritchie I'll bet they don't have the diverse skills to be a unicorn developer and can't demonstrate the speed / quality to be a 10x developer.
There's nothing wrong with this. I just find it entertaining.
May your reach always exceed your grasp.
If you're curious about me, I'm a solid 0.9x developer in terms of speed, but I try to be a 1.1x developer in terms of quality.