I want my clients to share with me confidential data without revealing what the exact values are so that I can train machine learning models on this data.
I wrote a simple python package that uses pandas and scikit-learn to apply some simple transforms to the data. Some transforms that are applied to the dataset can change the distribution of the data, changing its statistical properties, while others preserve them but simply rescale the domain.
Given an anonymizer dataset using this tool, it is possible to do a preliminary data audit and possibly train machine learning models on the data to give a quick idea to clients whether their data looks promising or not without actually revealing the true numbers (except if desired).
The main concern with this approach is that most clients are not technical, and thus having them anonymize their data is generally not easy, if not impossible. Thus it means that such a tool is currently not applicable in the desired context.
How will you measure your success over the next year?
Over the past few years success for me has been defined less by goals and more by being able to work continuously on a process. For example, I might want to get better at writing. My goal is not something like "write one technical book by the end of 2020" but rather "write technical content daily". This decreases the pressure and the need to perform while allowing me to do what I want.
I feel happier and more successful when I can keep doing the same thing over and over, even though I may have no motivation. It shows me that it's possible to accomplish pretty much anything, as long as you're willing to put in the effort.
Because I evaluate success this way, it is easy for me to track if I'm successful. I use the Loop Habit Tracker (an android app) to track whether I've worked on something I told myself I wanted to improve. My list started small and contained very mundane things such as "Bed is done", "Empty table", "No dirty dishes" and started including more and more habits, such as "Read 1 wikipedia article", "Answer 1 problem" and "Answer 1 question".
Being able to keep a good habit is what defines success to me. With the help of the app I'm able to add more and more habits without forgetting the previous ones since I'm reminded to do them at the desired weekly frequency.
Visual Studio Code Run Me extension
History / Edit / PDF / EPUB / BIB / 2 min read (~228 words)I frequently run the same commands with different parameters but I have a terrible memory. I also use Visual Studio Code a lot.
I developed an extension in 2018 called Run Me whose goal is to allow you to define commands that you can customize through a form, which is a series of questions that will be asked to you, before launching the command with the parameters you provided.
I've used it to do all kinds of things, from launching OBS to resetting the Windows 7 visuals when it lowers them down due to low memory. I also use it to automate various tasks such as creating new articles using a template, opening my buffer document that I use on a daily basis to write notes and more.
Here's an example of my configuration file which I use to start OBS and to reset the Windows 7 visuals.
"run-me": {
"commands": [
{
"identifier": "start_obs",
"description": "Start OBS x64",
"command": "\"C:\\Program Files (x86)\\obs-studio\\bin\\64bit\\obs64.exe\"",
"working_directory": "C:\\Program Files (x86)\\obs-studio\\bin\\64bit"
},
{
"identifier": "reset_visuals",
"description": "Reset W7 visuals",
"command": "sc stop uxsms & sc start uxsms"
}
]
}
What does a productive meeting look like?
There are a few people invited, less than 6 ideally. Everyone invited knows why they are in the meeting and will contribute to the discussion.
An agenda for the meeting has been set, with a pre-determined amount of time for each item on the agenda. One person is responsible to make sure that the agenda is followed and that the time is respected.
Notes are taken by the different individuals that are part of the meeting.
Items that appear to require more discussion than anticipated are noted and the involved individuals may spend additional time outside of the meeting to make their point, either through another meeting or by writing a document explaining their position.
A list of actionable items is defined at the end of the meeting and responsibles are assigned to those items. Deadlines are also assigned to those items so that people can expect those items to be completed by the defined date.
Knowing what your users need without having users
History / Edit / PDF / EPUB / BIB / 2 min read (~276 words)I need to know what the users of my library need, but I don't have any users yet. What should I do?
When you are defining who your target audience is, it can be rather difficult to decide who your users will be. If you've been building capabilities in a certain domain for a while and can solve specific problems with those capabilities, then you will likely want to look for users that may have those problems. You may even end up creating personas or prototypical users who have the problems that your library might solve.
Once you've established those prototypical users, you should try to find them in person and confirm your assumptions. You do not want to be building features that they don't need. In the event you cannot get access to any real users, you can still make use of user proxies. User proxies are people that can somewhat act as the true end-users, but are not the true end-users, so that you have to be careful about what they tell you they need since it is likely to be biased by their actual position. Some potential user proxies are:
- The users' manager
- Salespeople
- Domain experts
- Former users
- Customers
- Trainer and technical support
- Business or system analysts
In User Stories Applied: For Agile Software Development, Mike Cohn suggests to use more than one user proxy to mitigate the bias from any specific user proxy. Make sure that the user proxies are of different types. This technique is comparable to using ensembling in machine learning.