Categories
Uncategorized

How to be an Employee

Advice for People Joining the Workforce

Working in the service of something bigger than yourself is a pillar of humanity. It enabled all riches and privileges we have in our world. It is how people have built society for eons. There’s no doubt today that being employed keeps you balanced, satiated and healthy (in a way). It’s the best tool to support yourself and others. But at the same time, it takes away many of your freedoms. Before we dive in, let’s set a few things straight.

At the core of employment stands a simple principle: An employer is hiring you for value you bring to the business which is less than the compensation they pay you. Get it? At the core of employment, the principle is that someone is getting bigger value from your work than what they pay you. No business ever, if it’s a well-functioning business driven by real metrics, will pay you more than the value you bring – otherwise they will either hire someone else for less or not hire at all. If you ever own a small business, you will learn this simple principle very quickly. No business is charity.

The next principle is that as an employee you are first – a function. You’re not a person first, you’re not the sum of your goals and aspirations, you’re not your knowledge and expertise. As an employee, you are filling a role, driving value in a specific vector. If you are more than that in an organization, well you’re no longer and employee and more of an owner. All employers will try to convince your otherwise, but at the core – they first need you to perform a role, a task.

Finally, as an employee you are part of a whole. You’re not an individual maximizing your own gain. When you sign up you promise to maximize the gains of the organization. There is comfort in knowing that everyone around you is exactly the same – they are pulling the cart just like you.

Understand, the above principles are not bad or malicious. They are in fact wonderful and unlocked the greatest innovation and prosperity for all of humanity. Because of these gaps in gains, everyone is in effect donating a portion of their efforts to a greater good. It is often misappropriated, but on the grand scheme of things – it is perfectly great.

Being an employee will teach you a whole lot. About your business domain, about people (peers, customers) and how they think and operate, about impossible decisions, about things done at immense scale, about yourself as you stack up vs. others, and about life itself. The key in making the most from employment is to capture these teachings.

Here is some advice I have for you as you’re joining the workforce.

How to be a Bad Employee

Don’t be a bad employee. If you’ve joined a place of work, put in the time and effort to be successful. When I say “bad employee” I mean – understand the principles above, repeat them to yourself every day and on all occasions. And then, think for yourself. What kind of engagements are you looking to have in your personal life? What are your personal goals and metrics of success? Just put yourself first.

To me, being a bad employee is leveling the playing field. Employers will take endlessly but only pay you up the value equilibrium point – the point where you are paid as much money as your employer values your work. As such, you’re in a rigged system. You will never (unless by trickery or felony) be able to get paid more than you’re valued. Again, this is not all bad and most people in the world are better off on one side of this equation.

My advice for being “bad” is to make sure you are always on the right side of the equilibrium, not by cheating and slacking off, but by making the pie bigger. You can always, always! generate more value for yourself than your employer values you. Sure, you can take a second job (moonlighting, “side hustle”), but you’re at risk of double-dipping on the time from your main job, which would be borderline morally wrong. Many people do it, more than you’d think, and they glorify it. What I advise is to look for values in a different place than your time. Here’s the principle:

1+1=3.

Keep that in mind. 1+1=3 is your goal for employment. Always generate more value from one single thing that you do, really squeeze it out. Prepared a report to your supervisor? Also prepare a documentation of how you made the report, or how you would automate it. Wrote a piece of code? Also note down and share (!!) how you did it and what should be done next. Made a presentation for a meeting? Deliver the same presentation again in a different setting. Had a meeting with someone high ranking in the company? Write about your impressions from the meeting and your personal take on things. You were promoted to a leading role? Write a guide for all of things you learned, share it religiously, make sure people know why you were selected, and they will have a lasting impression of you that will last your career! There’s a big group meeting? Ask your boss for a chance to present work you have already done.

Be a bad employee. Generate more value for yourself than your employer needs or hired you for. Paradoxically, this is the best way to advance up the chain at work! Truly, a remarkable thing. If you maximize your personal gain at work by generating more value like discussed above, and the organization will value you more. When you think about it, it makes all the sense, since the organization is hiring you based on how you are valued in the market. Make yourself be worth more. Always grow your skillset, preferably – laterally, and always grow your network inside and out of your workplace.

How to be a Good Employee

As a junior employee, my advice for the first few years is to just keep your eyes and ears open when you join a new place. Look for inefficiency. Organizations, and particularly management, are obsessed with inefficiency. Because of laws of diminishing returns, all orgs that get bigger become inefficient and efficiency is a battle at any workplace.

Attended a meeting and you were bored for half the time? That’s inefficiency that you should share and publicize. The next meeting should be half the time, and if you’re lucky – you will never attend it at all! Had to make presentation from a bunch of data on various systems and that took you forever? Perfect inefficiency – let the people in charge of data systems know. You have to take 3 authentication steps or keycard scans to get to your desk? That’s eating up your efficiency for performing your tasks.

The key here is to verbalize. Never suffer alone. Either commiserate or communicate, preferably to your supervisor but group meetings are great too. Every workplace has tons of points for improvement, and is looking for them, but most people around you either don’t care or don’t mind because they are “getting paid for their time either way”. Don’t be like that, be a good employee. Speak up. But don’t be overbearing or make it all about complaining. Do it from a place of caring. Your goal is to improve conditions for everyone, not just yourself.

The are many ways you can be a good employee, and many guides for it. But the core of all of these things is singular: Generate as much value to the organization as possible. Either you lift other employees up, or optimize operations (save the org money), or through working more efficiently yourself, or by finding new value so far undetected (make the org more money).

How not to be an Employee

For once in your career, my advice is to try very hard not to be an employee and strike off on your own. This is the ultimate test of your skills and stamina as a professional. Being independent is hardest professional move, and definitely not for everyone. But I guarantee that at one point in your career you will feel that you must give it a shot. I’m going to exclude starting a company and focus on self-employment, since by starting a company, you are in fact an employee again.

Self-employment is the toughest thing. Do not attempt it before you have a lot of prestige and credentials in your domain. Finding customers, and holding them, is mostly a matter of marketing your skills and value you can bring. If that hasn’t been substantiated – you’re at risk. Remember, someone will only pay you up to the value that you can provide, and since you will now be charging a premium on your services – that value needs to be equally bigger. Getting to a position where self-employment makes financial sense usually takes years. At first you could only charge roughly as much as you can in your 9-5 job, after taxes you’d be taking home ~50% of the salary you used to make. It’s only when you can comfortably charge x2-x3 your salary that the math works out. Look for calculators online.

Luckily, since you’ve been such a bad employee and you’ve looked out for yourself from the beginning – you are well on your way to establish yourself as a leading figure in your field. That is your currency. Treat the outside perception of persona as equity, almost money in the bank. It’s an asset to you that you must guard and nourish. It is critical for success as a non-employee. So how do you generate this currency?

Personally, I’ve always liked academia. At first it seemed like a wonderful lifestyle; in reality it is just like any other business. But one thing is set apart: People are recognized for their individual contributions. You publish papers with your personal name on them, you receive awards with your name on them, you start labs and call them after yourself. Yes, it’s a very ego-centric domain. But, for that reason exactly it is great for self-employment. Your success is measured by how significant your name in your field is, like how many citations your papers get and other mostly similar metrics. While employed at a company – the exact opposite happens. No one knows what you did exactly and what was your contribution! To make matters worse, most if not all of your projects are group efforts where you had a small role, even as the lead. Try selling that to your customers! “Oh yes I’ve worked on this huge successful project you must have heard of, but I only did some part of it and the rest was taken care of by another group of dozens of people.” That’s not a convincing demonstration of your amazing skills.

To be a non-employee you must first work for yourself while you’re working for others. Building a name for yourself is just about as hard as being self-employed. It’s a matter of getting out there and being visible. Both internally in your company (remember, your colleagues are your professional network forever), and obviously outside of your company. This is work. Constant, ungratifying work, at first. But establishing a following outside of your company is crucial for your success. In some ways, treat establishing a name for yourself more important than your skills. This is done via social networks, in-person social events (e.g. meetups), conferences, article writing, blogging & podcasting, maybe writing a book even. But the most important factor of all of this is consistency. Do this consistently over a long enough period of time and your chances of failure are slim.

Some parting words. There is so much more to being a successful employee or a self-employed person than what I’ve covered here. Countless books have been written. This here is my own reflection on a couple of matters I thought were interesting. But you must write your own philosophies which you will invent through decades of work. Go forth and participate in the largest open human experiment called Employment. Come back to share your experiences.

Categories
Uncategorized

How to Succeed

Advice for young graduates

Lots of bright young folks ask me “How do I get a good job?”, “How do I achieve success in this domain?”, “What should I do next?”, usually in the applied computer science or machine learning field. So, I thought I’d dispense some advice for all future advice seekers, and I may refer some people here, so I don’t have to repeat myself all that much. Although, feel free to come up and ask a question.

Graduating, from anywhere, is daunting. Going from a well understood environment where your achievements are precisely measured, into the world where, frankly, no one cares. You have to make up your own metrics, measure yourself up to them, set goals for yourself and have a roadmap and a timeline. There’s no “graduation” from life. You may think it’s retirement, but that would not only be wrong (since there’s life after retirement) it is also immensely subjective and domain specific. So, what metric would you choose? Money in the bank? Sq. ft of your home? Number of dependents? Assets? Papers published? Books read? Miles traveled? BMI? Social subscribers? See? It’s impossible to pick. It is foolish to pick. Don’t pick. Not right now at least.

Your goals after graduation should be to establish yourself as a professional and an individual. Yes, you should focus on yourself. Maximize gains for your-self. Take all the credits, don’t be shy. Exercise all your rights and privileges. Soak up as much of the accolades. But at the same time appreciate, acknowledge and celebrate the work of others. Never punch down or sideways, only lift people. Make sure that you pack your knapsack very tightly with people you work with, projects concluded, products delivered, etc. These are your fuel reserves for the rest of your career and life – so bulk up!

OK, that sounds good but how to actually do that? this “bulking up”, you may ask. The answer is very short and clear:

Build.

Just – build. Build a product. Build a community. Build a following. Build a reputation. Build relationships. Build a home. Build a family. Build your confidence. Build a nest egg. Build an expertise. Build a hobby. Build. Build. Build.

Treat your first few years after graduating from your post-secondary education as a building period. Everything you do, even if it’s playing video games and going out, should be part of some… thing that you are building. If you’re a social type – you are building a social network. If you’re an engineer – you are building a product that delivers value to someone else. Be in a constant state of building, in many different vectors all the time.

Building is like investing. The consequences of your efforts will only be clear to you after a long time. And just like investing – building compounds. You can never go wrong with being focused on building. If you continue to invest in a project or direction – you will see success eventually. Investing in the S&P 500 for example has guaranteed positive gains if your time horizon is >10 years. It is exactly the same for building, if you stay consistent in your contributions you will keep up with the market and build something with lasting value. Some people refer to the 10,000 hours rule for becoming an expert. Building works the same way.

Now your next question may be: What should I build? Again, I have a very short and clear answer:

Anything.

See the thing is it doesn’t really matter what you build right now. As long as you are focused on building you are doing the right thing. You may have a tendency to a certain area or an interest domain, but truth is – you’re at the very early beginning of your journey that will have a definitely unexpected end point, so it doesn’t really matter which direction you start walking. As long as you are walking. Walking is the focus.

Just focusing on building will teach you a lot. Anywhere and anything you start making will teach you: whether you like it, whether there’s a market for it, whether the domain community is nice, whether it’s something that can compound, whether it has a holistic effect on other things you may build. So many things to learn!

How to Build

This is geared towards students of the engineering disciplines, but it does transfer very well to everything else. I want to give some direct concrete advice on what to work on and how to do it, in case you don’t have a lot of ideas right now. By the way, not having ideas – is a blessing. I wish, one day, to not have new ideas on things to work on, it’s a curse, believe me. But in any case, even if you do have ideas and plenty of them, here are a few things to consider.

Working on an open-source project. Open source is a divine gift given to humanity. It drives the entire world. It creates so much incredible innovation. It is timeless too, and has existed since the beginning of history. It has the power to make you very successful. My advice would be to start a new open-source project and not join an existing one. See above – you should take ALL the credit to yourself at this point, don’t share. But the product of your hard work – give that away for free, again – right now, don’t ask for anything in return. Participate in humanity’s greatest experiment: Benevolence. Work hard, help people through your work, ask for nothing, and success will arrive, it is only a matter of time.

The next question is – what project should you build? Great question! First, I suggest you refer back to your goals. Let’s say your goal is to get hired by a big corporation (a great choice! a big company will teach you everything you need to know about business!). Then my suggestion is that you take one of their products and clone it open source, don’t be shy, don’t fear retribution, I guarantee you they absolutely don’t care (their value is in a completely different place! find out where…). Just the thought and implementation exercises on how to build it will show you: 1. It is not as easy as you thought, 2. all the snags along the way, 3. all the decisions along the way, 4. how to improve it and go beyond – in short: Everything this company wants you to know as a candidate! You’re already prepared for the toughest interviews.

The other advice on what to build is more personal. If your family is lucky to have a family business – build something for that business. The key is to get information on your customer’s needs. When the customer is your dad, well that makes it a little easier (usually, not all dads are the same) to get that insider information. But if you don’t have that – you can reflect on your own life and “build for yourself”. I’m not suggesting you make yet another time management system. Instead, find gaps in your knowledge and fill them. If you’ve always wanted to learn to code in Lisp – do that now! Again, the direction is not super important, the persistence is! Find something you can do over a long period of time, like 1-2 years. Knowledge and education are excellent. If you’re missing a class on a certain topic – create it. Same as if you’re missing a tool to e.g. sort your photo album folder based on how many dogs are in the photo – make that tool. Just start making something useful(-ish?) and put it out there.

Another aspect of building and contributing is how to get noticed. This is important, you want visibility else no one will recognize your hard work. And again, see above – you want ALL the credit at this point. When building open source, use GitHub. Make it as easy as possible for people to access your work. If you have a knack for it – go on YouTube and make some videos. Those assets are compounding investment vehicles too. Go on Twitter, be religious about talking about your work. Remember: this is open source and therefore belongs to the world – better make the world aware it got this gift of your work.

This brings me to the last part about community. Every product, every company, every successful business, every service you see and know – is about People. It’s not about finance or things, it’s about what the products do to change the lives of People. People are the key. So, when you go about your build make sure you have a community of people in mind. When you want to tell people about it, you likely would want to find where they congregate, maybe on a subreddit, maybe a Discord server, or a mailing list (if they’re OGs). Get in there, mingle, and when you’ve got the hang of it – make a community of your own! Opening a Discord server is $0. There’s a similar cost level to starting a mailing list or newsletter. But whatever method you choose, it has got to be open, it must be inclusive, it must be not about yourself but about the community. Become a servant of your community, NOT it’s leader. Be the fuel, be the fire that burns under the cauldron. Facilitate, and participate. Trust me, this will pay off x1000 times by the time you realize it.

How to Fail

You might have heard about “Fail fast, fail early, fail often” and “Learning how to fail well”. I think most of it is BS told to you by people who have already reached success. It is true that at this point in your life you have extremely high risk-tolerance, and pretty much nothing you would do now would damage your long-term success, short of a felony. So, while it is time to experiment, be ready to accept immense measures of failure. Like, so much failure that you’d re-think your entire life.

Here’s how you will for sure fail: You will write something so cool and not a single person would read it or comment about it. You will build a free product that people pay $1000s for the alternative and not one single person will use. You will build a community, and no one will join or won’t say anything. You will make a video, and no one will watch. All this will happen to you, again you have my guarantee.

But guess what. This is absolutely perfect. It’s exactly what should happen. The burning pain you feel in your chest? that will become your battle scar. The feeling of loss of purpose and rethinking everything? that will become your rocket fuel. The crippling impostor syndrome when everyone around you is 10x more awesome than you? That will become an impregnable Kevlar armor. You will look back at this and you will smile and thank the universe for these opportunities to fail. You will not get many more of these beautiful moments of failure again…

The most important thing in failing is the learning that comes from it. That is not a cliche. But it is by far the easiest to learn from failure when it’s about something that you build, by yourself, for your personal success. If you slip up or straight up just be negligent in employment – prepare to accept the consequences. But when you fail working on your own thing, it’s far easier to know how to improve for next time. And see, the only thing you need to do, even if you don’t do anything to improve, is just to keep on building. Stay consistent.

How to Stop

Finally, I want to share a bit of advice on knowing how and when to give up. So far in this article I’ve been pretty adamant on “just keep building and never stop”. That’s a good philosophy. But you should also take care of learning when and how to stop building. It is very easy to get sucked into a whirlpool of never-ending work, and holding the above philosophy you may not have many exit points. To this I want to dedicate a few sentences.

First, always in life and work, always hedge your bets. Always have something to average with. Meaning, if you build – build several things at once. If you’re working at a job – have several streams of work. The only way the numbers are in your favor is if you’re averaging either over time or over space. Remember the S&P 500, you have 10 years to average over. In building – make sure you have multiple horses in the race. When one fails, others will step in to continue the race. This is the easiest way to “Stop”. Just divert your resources to better ventures and let the failing project die. Simple.

But what if things are not simple? and your project is “kind of” working but you’re not sure? This is time to look at the bigger picture. If you have a family to support that is the easiest, focus on their needs (ahead of your own) and adjust course. But if it’s just you, which is most times the case, go back to your goals: Is this project going to get me hired at this place? Is it going to teach me? Does it have a community I want to be a part of? Is it genuinely doing good? Really, don’t be bothered with silly terms like “disruption”, “displacement”, “growth”, “scale”, “market fit”, these are absolutely irrelevant at this stage. Your goal in this period is to build. If building the project doesn’t also at the same time build your reputation – it’s a sign. Everything you do should be 1+1=3. If it’s closer to 2 – it’s a sign. Learn to read signs.

So, how do you know when and where to stop? You will know. It will be when you achieve your goals.

A few parting words to end this article. Always be in motion. Always be building. Motion creates a flywheel effect that works for you when you sleep. Realize nothing will be served to you ever. You will have to build nice things to have them. Alway be learning, always be teaching. Share your knowledge for free at every opportunity. Make your opinions vocal, make them in person preferably. You are ready.

Categories
cmake code graphics gui qt Stream video

URL/API Source OBS Plugin: Fetch Live Data in your Stream

If you’re a fan of OBS (Open Broadcaster Software), you may already be familiar with its vast library of plugins that enhance its functionality and provide added features. One such plugin that I recently developed is the URL API source plugin. This plugin allows you to fetch information from a URL and display it in your OBS stream. In this blog post, we will take a closer look at the source code for this plugin and understand how it works.

Categories
code machine learning programming Stream video

CleanStream OBS Plugin: Remove Filler Words with Whisper CPP

CleanStream OBS Plugin is a powerful tool that helps clean live audio streams from unwanted words, filler words, and profanities. Created in C++, this plugin can improve the quality of live streams while saving time and effort in post-processing. In this blog post, we will take a detailed walk-through of the code for my CleanStream OBS plugin, explaining how it is built and its core functionalities.

Categories
Music Software tips video

Tutorial: M-Audio Oxygen Pro Mini with Ableton

Have you recently purchased the M Audio Oxygen Pro mini and want to figure out how to use it with Ableton Live Lite 11? If so, you’re not alone! In this blog post, we will go over some of the essential functions and tips that I have learned while working with this keyboard.

Categories
code graphics machine learning opencv opengl programming video vision

Building an OBS Background Removal Plugin: A Walkthrough

In this blog post, we will take a closer look at the development of the OBS Background Removal Plugin, discussing its key components, functionalities, and the process behind building it. The plugin was created to address the need for virtual green screen and background removal capabilities in OBS (Open Broadcaster Software), a popular live streaming and recording software. With over 500,000 downloads and ongoing contributions from various developers, the OBS Background Removal Plugin has gained significant traction in the streaming community. Whether you’re interested in understanding how this plugin works or considering building a similar plugin yourself, this walkthrough will provide valuable insights.

Categories
cloud code javascript programming Web

AWS Lambda NodeJS Telegram Bot with Typescript, Serverless and DynamoDB

Sharing a bit of experience building a telegram bot with Serverless, AWS Lambda and TypeScript.

In this tutorial, we will explore how to build a simple Telegram bot using serverless with TypeScript and AWS Lambda. We’ll leverage the power of AWS services such as API Gateway and DynamoDB to create a highly scalable and efficient bot. While there are various tutorials available online, this guide aims to provide a more comprehensive and detailed approach. So, let’s dive in!

Categories
3d Augmented Reality graphics vision

Augmenting Images with Blender 3D 2.9x

augmenting KITTI image with a 3D car

Trying to demonstrate how to do data augmentation on the KITTI stereo dataset, I found myself diving (too deeply) into Blender 3D.

What I set out to do is add a 3D object to an unsuspecting image from the KITTI dataset, to show that one way to get more training data is by synthesizing. I just put a 3D object in front of an image (say a 3D plane with the image as the texture) and done ✅ – I’ve augmented the image. Turns out it needs a bit more of Blender trickery. This is the real reason for this post.

Categories
Uncategorized

OBS Plugin for Portrait Background Removal with ONNX SINet Model

Hi,

I’ve seen people request a plugin for OBS to remove background (aka Matting) from their camera input. It’s a standard in all video conferencing software today! I also was recording some screencasts with OBS with my video in the corner, and it became instantly obvious how much I need this feature in OBS… So I set out to create one.

Demo of working plugin
Categories
code ffmpeg python video

Transcribing Videos with Google Cloud Speech-to-Text

Got an hour-long video and not really into manually creating subtitles? not plans to put it on YouTube for their automated transcription services? then – try Google Cloud Speech-to-Text! In this post I’ll share some scripts for automating the process and creating an .str file to go along your video for displaying the subtitles.